Frage zu FF-Script-Dialogen

Squirrel

Mitglied
Dabei seit
06.02.04
Beiträge
210
#1
Hallo,

kann mir bitte einer von Euch helfen bei folgendem Problem:

Ich habe eine Dialogbox in einem VBS-Script gebastelt, die mehrere
Control-Elemente enthält. Ein abgerüstetes Beispiel seht Ihr unten.
Das Problem ist nun, daß der Dialog sofort nach Bedienung eines
COMBO-Feldes beendet wird. Man hat keine Chance, dann noch weitere
Controls zu bedienen (in meinem Beispiel z.B. die Farbauswahl).

Ich hatte erwartet, daß ich alle Auswahlelemente entsprechend meinen
Wünschen ein- oder mehrmals betätigen kann und erst durch den Klick
auf ein BUTTON-Control aus dem Dialog rauskomme.

Habe ich was falsch gemacht?

Code:
'//FFSubmenu=Test
'//FFName=Diallogtest
'//FFPath=dialog.vbs

option explicit 
dim but, col, sel

FF_AddDialog "Dialog",100,50
FF_AddControl "Dialog","Farbe","COLOR",10,15,20,10
FF_AddControl "Dialog","Auswahl","COMBO",40,15,50,10
FF_SetControl "Dialog","Auswahl","Essen"
FF_SetControl "Dialog","Auswahl","Trinken"
FF_SetControl "Dialog","Auswahl","Schlafen"
FF_AddControl "Dialog","OK","BUTTON",10,30,37,10
FF_AddControl "Dialog","CANCEL","BUTTON",52,30,40,10
but = FF_ShowDialog("Dialog")

' Testausgaben
col = FF_GetControl("Dialog","Farbe")
sel = FF_GetControl("Dialog","Auswahl")
msgbox "Button=" & but & vbcrlf & _
   "Farbe=" & col & vbcrlf & _
   "Auswahl=" & sel, _
   vbokonly + vbinformation, "Dialogauswertung"
Vielen Dank und beste Grüße
Ralf
 
Dabei seit
02.12.02
Beiträge
1.546
Standort
Lübeck
#2
Zieh eine Schleife um die FF_Get und bleibe darin, bis Abbruchbedingung erreicht.

Gruß Jochen
 

Squirrel

Mitglied
Dabei seit
06.02.04
Beiträge
210
#3
Hallo Jochen,

vielen Dank für den Tip. Er hat mich auf den richtigen Weg gebracht.

Zieh eine Schleife um die FF_Get und bleibe darin, bis Abbruchbedingung erreicht.
Allerdings mußte ich die FF_ShowDialog Zeile mit in die Schleife nehmen,
sonst hatte ich eine Endlosschleife. Jetzt sieht es so aus (Auszug):

[pre]
......
do
but = FF_ShowDialog("Dialog")
col = FF_GetControl("Dialog","Farbe")
sel = FF_GetControl("Dialog","Auswahl")
loop until but = "OK" or but = "CANCEL"
......
[/pre]

@Joachim
Allerdings ist das Verhalten der einzelnen Control-Elemente inkonsistent implementiert. Ich habe zwar im Moment nur das COMBO- und das COLOR-Control benutzt, aber genau die Beiden verhalten sich unterschiedlich.
Während beim COMBO der Dialog sofort beendet wird, kann ich ein COLOR-Control auch ohne Schleife beliebig oft ändern, ohne aus dem Dialog zu fliegen. Soll das so sein?
 
Dabei seit
02.12.02
Beiträge
1.546
Standort
Lübeck
#4
Aus der Mottenkiste und nicht getestet. Veranschaulicht aber das Prinzip.

call FF_AddControl(dlg,"Höhe (200-2000)","STATIC",44,14,60,10)
call FF_AddControl(dlg,"Vorschau","BUTTON",2,26,102,10)
call FF_AddControl(dlg,"Box1","GROUP",2,140,102, 40)
call FF_AddControl(dlg,"Abzweigen","BOOL",2,145,102,10)
call FF_AddControl("Test Dialog","Preview","IMAGE",2,38,102,102)
call FF_SetControl("Test Dialog","InBreite","640")
call FF_SetControl("Test Dialog","InHöhe","480")
call FF_ActivateControl("Test Dialog","InBreite")

dlg = "Test Dialog"

do
select case FF_ShowDialog(dlg)
case "OK"
select case true
case CInt(FF_GetControl(dlg,"InBreite"))<100
msgbox "Zu schmal"
FF_SetControl dlg,"Breite","0"
FF_ActivateControl dlg,"Breite"
case FF_GetControl(dlg,"Abzweigen")="1"
msgbox "Hook"
case else
msgbox FF_GetControl(dlg,"Abzweigen")
end select    
case "Vorschau"
FF_SetControl dlg,"Preview","Testbild.jpg"
case "CANCEL"
exit do
case else
msgbox "Huch!"
end select
loop

call FF_CloseDialog(dlg)


Gruß Jochen
 

Squirrel

Mitglied
Dabei seit
06.02.04
Beiträge
210
#5
Hallo Jochen,

vielen Dank für das Beispiel. Nach einigen kleinen Modifikationen lief dann auch was.

Jetzt habe ich auch den Hintergrund des Verhaltens der ganzen FF_xyz Prozeduren und Funktionen durchschaut. In meiner Anwendung wollte ich eigentlich nur ein paar Parameter für eine anschließend automatisch ablaufende Berechnung am Bild eingeben und nach "OK" sollte es losgehen. Deshalb war ich ein wenig irritiert, als gleich beim Klicken in den einzelnen Dialogelementen meines Fensterleins die Post ab ging.
Wenn man natürlich das Ganze globaler sieht und weis, daß man mit diesen Prozeduren und Funktionen eine interaktive Sache in einem eigenen Fenster aufbauen kann, ist mir klar, daß man sofort auf das Betätigen der einzelnen Dialogelemente reagieren können muß.
Es war auch ein bißchen schwierig, nur mit der Funktions-Referenz von Ralf Eberle gleich das ganze Prinzip zu erkennen.

Also vielen Dank nochmal
Gruß
Ralf
 
Oben