Skript Dialoggröße anpassen

Mecki14

Mitglied
Dabei seit
15.03.06
Beiträge
2.500
Standort
Düsseldorf
Trophäen
*!
#1
Normalerweise entspricht beim FF-Skriptdialoge 1 unit 2 px. Ein Freund von mir hat aber einen Monitor bei dem 1 unit 2,5 px entspricht. Ich habe versucht eine automatische Größenanpassung des Dialogs und der Steuerelemente zu programmieren. Es ist mir nicht gelungen.

Kann mir jemand von den Skriptern helfen? Am schönsten wäre ein Beispielskript.
 

W.P.

Mitglied
Dabei seit
16.10.02
Beiträge
4.969
Standort
Anzing BY
#2
Hallo,
da gab's mal eine Funktion, um die Dialog-Unitgröße zu ermitteln. Hatte was mit Windows-API zu tun. Mit dem Dialogeditor habe ich aber dann nicht mehr darauf geachtet und ich finde die Funktion nun nicht mehr...
 

W.P.

Mitglied
Dabei seit
16.10.02
Beiträge
4.969
Standort
Anzing BY
#3
Doch noch gefunden:
Code:
 Public Sub GetDlgUnits(ByRef dlgXFaktor, ByRef dlgYFaktor)
 Const SM_CXSCREEN = 0
 Const SM_CYSCREEN = 1
 Const SM_CYCAPTION = 4
 Const SM_CXDLGFRAME = 7
 Const SM_CYDLGFRAME = 8
 Const SM_CXFULLSCREEN = 16
 Const SM_CYFULLSCREEN = 17
 Dim lUnits
 Dim lxScale
 Dim lyScale
 lUnits = CLng(FF_GetDialogBaseUnits())
 lxScale = lUnits And 65535
 lyScale = lUnits \ 65536
 dlgXFaktor = lxScale / 8
 dlgYFaktor = lyScale / 16
 End Sub
 

Mecki14

Mitglied
Dabei seit
15.03.06
Beiträge
2.500
Standort
Düsseldorf
Trophäen
*!
#5
Vielen Dank für die Antworten, aber wie kann ich einen vorhandenen Dialog mit seinen Steuerelementen anpassen?
 

W.P.

Mitglied
Dabei seit
16.10.02
Beiträge
4.969
Standort
Anzing BY
#8
Die Konstanten kannst du dir sparen. Die Daten wurden vorher mit einer anderen Funktion abgerufen. Ist noch ein Überbleibsel davon.
 

Mecki14

Mitglied
Dabei seit
15.03.06
Beiträge
2.500
Standort
Düsseldorf
Trophäen
*!
#9
Zum Eintragen der Faktoren in einen vorhandenen Dialogtext habe ich ein kleines FF-Hilfsskript erstellt. Die Vorgehensweise ist folgende:
  • Dialogtext in die Zwischenablage kopieren
  • Skript Dialoganpassung aufrufen
  • Nach 'Start' befindet sich der Dialogtext mit den Faktoren in der Zwischenablage
Vielleicht kann einer der Skripter das mal gebrauchen, denn es kann bei umfangreichen Dialogen sehr mühsam sein die Faktoren manuell einzutragen.
 

Anhänge

Mecki14

Mitglied
Dabei seit
15.03.06
Beiträge
2.500
Standort
Düsseldorf
Trophäen
*!
#10
Mit den Faktoren klappt die Anpassung gut bis auf die Länge von Texten, ausgegeben beispielsweise mit dem STATIC-Element. Da muss man von vornherein reichlich Platz einkalkulieren.

Aber ich habe plötzlich ein anderes Problem:
Bei umfangreichen Dialogen kann ich die Größe nicht mehr ändern. Welche Werte auch immer ich in FF_AddDialog definiere - die Darstellung des Dialogs erfolgt immer in gleicher Größe.
Kennt jemand dieses Phänomen? Was kann die Ursache sein und wie beseitigt man das Problem?
 

W.P.

Mitglied
Dabei seit
16.10.02
Beiträge
4.969
Standort
Anzing BY
#13
Hm, habe nichts mehr groß mit Dialogen gemacht. Aber alle werden korrekt in der richtigen Größe angezeigt, soweit ich es beurteilen kann.
Kann mir nur vorstellen, dass du irgendwo einen Denkfehler drin hast. Z. B. Variable vs. Konstante vs. String oder so.
Solche Dinge können äußerst vertrackt sein, habe sie selber oft überlesen und bin fast verzweifelt daran. Irgendwann: Klick und man hat die Lösung. Meist eine Variablenschreibweise oder Ähnliches. Bin so fast an LittleCMS und dessen DLL-Definitionen gescheitert bis es endlich lief.
 

Mecki14

Mitglied
Dabei seit
15.03.06
Beiträge
2.500
Standort
Düsseldorf
Trophäen
*!
#14
Ich habe die Übeltäter.

FF_SaveDialogState - Speichert die aktuelle Dialogposition
FF_LoadDialogState - Lädt die letzte gespeicherte Dialogposition​

Diese Befehle hatte ich irgendwann eingebaut. Mit FF_SaveDialogState wird anscheinend nicht nur die Position des Dialogs abgespeichert sondern auch dessen Größe. Mit FF_LoadDialogState wird dann wieder beides hergestellt.

Ich warne hiermit dringend alle Skripter vor der Verwendung dieser Befehle.
 

W.P.

Mitglied
Dabei seit
16.10.02
Beiträge
4.969
Standort
Anzing BY
#15
Die kenne ich gar nicht. Aber egal. Wenn man weiß, dass es sie gibt, kann man sie ja auch sinnvoll einsetzen. Nach der Neuinstallation muss man halt erst mal einen Reset fahren, wenn man an der Dialoggröße was geändert hat.
 
Oben