FF_EnableControl - Problem

Otti38

Mitglied
Dabei seit
28.06.04
Beiträge
78
#1
Hallo FixFoto-Freunde!

Folgende Frage beschäftigt mich: Ich möchte in einem Dialog mittels einem Häkchen (FF_AddControl "BOOL") andere Eingabefelder ("EDIT", "BOOL", ... ) an und ausschalten, also die Eingabe in den Feldern von einem "BOOL" abhängig machen.
Meine Lösung des Problems ging bisher nur dahin, dass ich einen Button eingebaut habe, der den Dialog aktualisiert. So funktioniert das ganze, ohne Frage aber sehr unelegant. Hier mal der kurze Codeschnipsel:

Code:
frage = 0
call FF_AddDialog("Dialog",50,50)
call FF_AddControl("Dialog","Aktualisieren","BUTTON",5,5,40,10)
call FF_AddControl("Dialog","frage","BOOL",5,20,10,10)
call FF_AddControl("Dialog","Abhaken","STATIC",15,20,25,10)
call FF_AddControl("Dialog","test","EDIT",5,35,10,10)
call FF_AddControl("Dialog","Eingabe","STATIC",20,35,30,10)
call FF_EnableControl("Dialog","test",frage)

do
   select case FF_ShowDialog("Dialog")
      case "Aktualisieren"
         frage = FF_GetControl("Dialog","frage")
         call FF_EnableControl("Dialog","test",frage)
      case else
         exit do
   end select
loop
call FF_CloseDialog("Dialog")
(Häkchen setzen oder entfernen und anschließend auf "Aktualisieren" klicken.)

Bin für jeden brauchbaren Tipp dankbar!!

Der Heiko!!
 
Dabei seit
02.12.02
Beiträge
1.546
Standort
Lübeck
#2
dlg = "Dialog"

FF_AddDialog dlg,50,50
FF_AddControl dlg,"Aktualisieren","BUTTON",5,5,40,10
FF_AddControl dlg,"Frage","BOOL",5,20,10,10
FF_AddControl dlg,"Abhaken","STATIC",15,20,25,10
FF_AddControl dlg,"Test","EDIT",5,35,10,10
FF_AddControl dlg,"Eingabe","STATIC",20,35,30,10

Do
Select Case FF_ShowDialog(dlg)
Case "Aktualisieren"
MsgBox FF_GetControl(dlg, "Frage")      'Beliebige Auswertung
MsgBox FF_GetControl(dlg, "Test")
Case "OK"              'möglicher weiterer Button
MsgBox "OK" 'beliebige Auswertung
Case "Abbrechen"                         'möglicher weiterer Button
MsgBox "Abbrechen"
Exit Do
Case Else                            'Abbruch-Button Window
MsgBox "Abbruch-Button Window"                  
Exit Do
End Select
Loop

FF_CloseDialog "Dialog"


PS:

EnableControl dient der Aktivierung/Deaktivierung von Controls während der Eingabe
 

Otti38

Mitglied
Dabei seit
28.06.04
Beiträge
78
#3
Hallo Jochen!!

Danke für den Versuch, mir bei meinem Problem mit EnableControl zu helfen. Ich habe mal Dein Script getestet, aber es funktioniert noch nicht so, wie ich das gerne möchte :)) . Ich wollte, dass das Eingabefeld mit dem Häkchen direkt aktiviert und deaktiviert werden kann.
Als Beispiel könnte ich da mal auf die Fixfoto-Einstellungen zu den Kameras verweisen (Menü Datei -> Einstellungen -> Reiter "Kamera"). Dort hat man eine Auswahlmöglichkeit für Olympus. Ist diese aktiviert, kann man die verschiedenen Schnittstellen auswählen, ist sie deaktiviert ist die Schnittstellenauswahl grau und nicht anwählbar. Exakt so wollte ich den Dialog gestalten. Ist es überhaupt möglich, das so zu realisieren?

Fragend,
der Heiko!!
 

JKS

FF-Team
Dabei seit
06.06.02
Beiträge
6.671
#4
Das ist nicht möglich, da BOOL-Controls ShowDialog() nicht abbrechen.
 
Dabei seit
02.12.02
Beiträge
1.546
Standort
Lübeck
#5
Mißverständnis gestern abend per PN bereits aufgeklärt. Man könnte die Kamera-Auswahl separat per danebenliegendem Button quittieren (z.B. nach Auswahl über Combo), eine globale Variable mit der Auswahl besetzen und nach Schleifen-Neueinstieg anhand dieser die entsprechenden Felder aktivieren bzw. deaktivieren. Bei "" - Wert (Ersteinstieg) der globalen Variablen alle Felder und Buttons deaktivieren, bis auf Combo und deren Button. So etwas schwebt mir grob vor. Mehr ist da nicht zu machen, aber wenn man es optisch brauchbar gestaltet, geht es auch so.


Gruß Jochen
 

Otti38

Mitglied
Dabei seit
28.06.04
Beiträge
78
#6
JKS hat gesagt.:
Das ist nicht möglich, da BOOL-Controls ShowDialog() nicht abbrechen.
Aha, hab ichs mir doch gedacht :)) . Wäre das etwas, was in zukünfigen FF-Versionen geändert werden kann?

Jochen hat gesagt.:
Man könnte die Kamera-Auswahl separat per danebenliegendem Button quittieren (z.B. nach Auswahl über Combo), eine globale Variable mit der Auswahl besetzen und nach Schleifen-Neueinstieg anhand dieser die entsprechenden Felder aktivieren bzw. deaktivieren.
Eine derartige Lösung habe ich ja bereits gefunden. Wirkt zwar nicht besonders elagant, ist aber halbwegs praktikabel.
 
Dabei seit
02.12.02
Beiträge
1.546
Standort
Lübeck
#7
Wäre das etwas, was in zukünfigen FF-Versionen geändert werden kann?
Das würde komplettes Event-Handling und einen Rattenschwanz von Änderungen nach sich ziehen. Die FF-Scriptengine müsste nach jedem Tastaturklick die Feldinhalte abfragen,wenn ich mich recht erinnere war das mit Problemen behaftet. Warte lieber nicht darauf.

Gruß Jochen
 
Dabei seit
02.12.02
Beiträge
1.546
Standort
Lübeck
#8
Also mit dem Bool geht's nicht, aber mit einer Combo-Box *ohne* Button.

Ich habe dazu ein kleines Demoscript (demo.vbs) in den Zubehörbereich unter Scripte/Diverses gestellt. Gezeigt wird außerdem die Möglichkeit, FF-Formen mit gruppenbezogenen Offsets so zu gestalten, daß Änderungen, Anpassungen und Umgestaltung relativ geringen Aufwand erfordern.

Das Script wird aus dem Downloadbereich wieder entfernt, es ist mindestens B35 erforderlich.

Gruß Jochen
 

Otti38

Mitglied
Dabei seit
28.06.04
Beiträge
78
#9
Mit einer Combo-Box habe ich mir inzwischen selber was zusammengebastelt. Die Abfrage Ja/Nein wird nun nicht per Häkchen ("BOOL") erledigt, sondern eben mit eienr Combo-Box. Und damit funktionierts vortrefflich.
Dennoch Danke für die rege Anteilname :)) .
 

m.s

FF-Team
Mitarbeiter
Dabei seit
19.09.02
Beiträge
11.223
#10
hallo,

das macht mich jetzt aber neugierig 8)
darf man fragen, wohin sich das entwickelt, also was zum Schluss dabei rauskommt?

grüsse
micha
 

Otti38

Mitglied
Dabei seit
28.06.04
Beiträge
78
#11
m.s hat gesagt.:
darf man fragen, wohin sich das entwickelt, also was zum Schluss dabei rauskommt?
Sicher darf man das :)) . Angelehnt an mein Beispiel vom Thread-Anfang kommt hier die mit der Combo-Box abgeänderte Version:

Code:
call FF_AddDialog("Dialog",50,50)
call FF_AddControl("Dialog","OK","BUTTON",5,5,40,10)
call FF_AddControl("Dialog","frage","COMBO",5,20,23,10)
call FF_AddControl("Dialog","Frage?","STATIC",32,20,25,10)
call FF_AddControl("Dialog","test","EDIT",5,35,10,10)
call FF_AddControl("Dialog","Eingabe","STATIC",20,35,30,10)
call FF_SetControl("Dialog","frage","Ja")
call FF_SetControl("Dialog","frage","Nein")

do
   select case FF_ShowDialog("Dialog")
      case "Aktualisieren"
         frage = FF_GetControl("Dialog","frage")
         call FF_EnableControl("Dialog","test",frage)
      case "frage"
         frage = FF_GetControl("Dialog","frage")
         if frage = "Ja" then
            call FF_EnableControl("Dialog","test",1)
            call FF_EnableControl("Dialog","Eingabe",1)
         elseif frage = "Nein" then
            call FF_EnableControl("Dialog","test",0)
            call FF_EnableControl("Dialog","Eingabe",0)
      end if
   case else
      exit do
   end select
loop
call FF_CloseDialog("Dialog")
Durch Wählen von Ja oder Nein wird der Rest dieses Mini-Dialogs deaktiviert (grau).
Im richtigen Leben habe ich damit ein Script geschrieben, welches meine Bilder auf eine Web-taugliche Größe skaliert und ein Copyright-Textlein einfügt. In diesem Dialog kann ich auch auswählen, ob das verkleinerte Bild als JPG (mit variabler Qualität) oder als TIF gespeichert werden soll. Bei Wahl von TIF wird der Teil im Dialog mit der JPG-Qualität einfach ausgeblendet.
 
Oben