Hallo liebes Forum!
Wie kann ich bei einer Gui als Eingabeformular dafür sorgen, daß sich die unteren Felder bereits während dem Ausfüllen den vorher oben eingegebenen Daten gemäß anpassen?
Beispiel:
Nehmen wir an, ich wollte ein Überweisungsformular am Computer ausfüllen. Dann steht oben ein Edit-Feld für die IBAN und darunter eines für die BIC-Nummer. Innerhalb der EU ist die BIC aber nicht notwendig. Also setze ich ganz darüber noch eine Auswahlmöglichkeit (CheckBox, RadioButton o.ä.) mit "innerhalb EU"/"außerhalb EU". Wie kann ich dann erreichen, daß , wenn ich "innerhalb EU" wähle, das Edit-Feld "BIC" deaktiviert wird? Also etwa in grau statt in weiß erscheint, nicht mehr ausfüllbar ist und vom Cursor beim Durchgang des Formulars mit Tab übersprungen wird?
Viele Grüße von Meister Lampe
Gui eingabebedingt verändern
Moderator: jNizM
- Meister Lampe
- Posts: 229
- Joined: 06 Apr 2014, 13:28
Re: Gui eingabebedingt verändern
Ich denke das Schlüsselwort heisst hier GuiControl > enable/disable. Frage: mit Eingabe der IBAN wird ein Ländercode vorangestellt (DE-), dies gegen einen EU-Index verglichen, sollte doch eine explizite Auswahlmöglichkeit "innerhalb-/ausserhalb EU" unnötig machen?!
https://www.iban.de/iban-laenderliste.html
https://www.iban.de/iban-laenderliste.html
Jetzt 27?Der einheitliche Euro-Zahlungsverkehrsraum (Single Euro Payments Area) besteht aus den 28 EU-Staaten sowie Island, Liechtenstein, Norwegen, der Schweiz und Monaco.
Last edited by BNOLI on 17 Apr 2020, 07:29, edited 2 times in total.
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
-
- Posts: 223
- Joined: 06 Jun 2017, 11:38
Re: Gui eingabebedingt verändern
So ganz einfach. Wenn du das meins.
Code: Select all
Gui, Add, CheckBox, gBox1 vVar1 x15 y30 h20, EU
Gui, Add, Edit, vedt1 x15 y50 w250 h20 +Disabled
return
Box1:
Gui, Submit, nohide
if (Var1)
GuiControl, Enable, edt1
else
GuiControl, Disable, edt1
return
- Meister Lampe
- Posts: 229
- Joined: 06 Apr 2014, 13:28
Re: Gui eingabebedingt verändern
Hallo UnReALiTyy!
Ich habe Deinen Vorschlag mal versucht bzw. angepaßt, aber das scheint noch nicht das Gelbe vom Ei zu sein. Insbesondere kam bei Deiner Lösung (und den Variotionen, die ich daraus gemacht hatte) immer wieder der Fehler "Error: The same variable cannot be used for more than one control." Dabei bezog sich die Meldung auf Zeilen im Script, die mit der Sache gar nichts zu tun hatten oder völlig andere Variablen verwendeten.
Mein Beispiel war wohl auch ein bißchen an den Haaren herbeigezogen, vielleicht paßt dieses ja besser. Folgendes kommt meinem Problem viel näher:
Bei Auswahl Reiseziel=Balkonien braucht natürlich kein Beförderungsmittel eingegeben werden, also soll das Feld ignoriert werden.
Darunter kämen vielleicht weitere Fragen.
Viele Grüße von Meister Lampe
Ich habe Deinen Vorschlag mal versucht bzw. angepaßt, aber das scheint noch nicht das Gelbe vom Ei zu sein. Insbesondere kam bei Deiner Lösung (und den Variotionen, die ich daraus gemacht hatte) immer wieder der Fehler "Error: The same variable cannot be used for more than one control." Dabei bezog sich die Meldung auf Zeilen im Script, die mit der Sache gar nichts zu tun hatten oder völlig andere Variablen verwendeten.
Mein Beispiel war wohl auch ein bißchen an den Haaren herbeigezogen, vielleicht paßt dieses ja besser. Folgendes kommt meinem Problem viel näher:
Code: Select all
Gui, Add, DropDownList, w100 Choose1 vReiseziel, Honolulu|Hintertupfingen|Lummerland|Balkonien
Gui, Add, Text, yp h25, "Geben Sie hier Ihr gewünschtes Beförderungsmittel ein!"
Gui, Add, Edit, yp h25 w100 vBeförderungsmittel,
;...
Gui, Add, Button, yp h30 w50 Default gBuchen, Urlaub buchen
Gui, Add, Button, x60 yp h30 w50 gAbbrechen, Abbrechen
return
Darunter kämen vielleicht weitere Fragen.
Viele Grüße von Meister Lampe
Re: Gui eingabebedingt verändern
Das erste Beispiel war schon gut, andererseits macht es IMHO doch mehr Sinn am tatsächlichen Projekt zu aggieren (bzw dies tun zu lassen) als den Weg über Beispiele mit anschließender Übertragungsfehlergenerierung ala "Stille Post" zu provozieren. "Dieses ja" ist jetzt also auch wieder nur ein Beispiel, richtig?? Was spricht dagegen am 'echten' Projekt mitzuwirken??
Deine Herausforderung ist das aktivieren bzw deaktivieren von GuiControls nach Ergebnis einer (oder mehrerer) Bedingung(en)
Enable
Disable
Deine Herausforderung ist das aktivieren bzw deaktivieren von GuiControls nach Ergebnis einer (oder mehrerer) Bedingung(en)
Enable
Disable
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
Re: Gui eingabebedingt verändern
Dieser Fehler wird in 99,999 % aller Fälle dann angezeigt, wenn man versucht, einem Gui-Fenster ein Control mit einem Variablennammen hinzuzufügen, der für dieses Fenster schon vergeben wurde. Das hat mit dem Beispiel von @UnReALiTyy schon mal überhaupt nichts zu tun. Es wäre angebracht gewesen, Deinen fehlererzeugenden Code einzustellen."Error: The same variable cannot be used for more than one control."
Außerdem möchte ich mich wegen eigener Erfahrungen @BNOLI anschließen: Bleibe mit Deinen Anforderungen so nah wie nur möglich beim tatsächlichen Projekt. Du ersparst damit allen Beteiligten unnütze Arbeit.
Edit: Arbeitest Du jetzt für ein Reisebüro?
- divanebaba
- Posts: 805
- Joined: 20 Dec 2016, 03:53
- Location: Diaspora
Re: Gui eingabebedingt verändern
Du brauchst dafür doch kein Extra-Control. Füge dem Edit-Feld zuvor, in welches die IBAN eingegeben wird, ein g-Label hinzu und eine Routine, die die ersten beiden Buchstaben des Edit-Feldes abfragt.Wie kann ich dann erreichen, daß , wenn ich "innerhalb EU" wähle, das Edit-Feld "BIC" deaktiviert wird?
Lauten diese DE, dann deaktiviere das BIC-Edit-Feld mit dem Befehl
Code: Select all
GuiControl, Disable, VariablennameDesEditfeldes
Einfach nur ein toller Typ.
Re: Gui eingabebedingt verändern
Willkommen im Club, doch leider scheinen wir hier beide fälschlich (?) - das "nur mal als Beispiel" Genannte - als die tatsächliche Aufgabenstellung verstanden zu haben. Die Einbeziehung des Ländercodes der IBAN als Bedingung hatte ich ebenfalls bereits angemerkt (s.o.)divanebaba wrote: ↑19 Apr 2020, 07:45Du brauchst dafür doch kein Extra-Control. Füge dem Edit-Feld zuvor, in welches die IBAN eingegeben wird, ein g-Label hinzu und eine Routine, die die ersten beiden Buchstaben des Edit-Feldes abfragt.Wie kann ich dann erreichen, daß , wenn ich "innerhalb EU" wähle, das Edit-Feld "BIC" deaktiviert wird?
Lauten diese DE, dann deaktiviere das BIC-Edit-Feld mit dem BefehlHat den Vorteil, daß bei jeder Eingabe oder Änderung eine Prüfung automatisch stattfindet und Fehlbedienungen minimiert werden.Code: Select all
GuiControl, Disable, VariablennameDesEditfeldes
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
-
- Posts: 223
- Joined: 06 Jun 2017, 11:38
Re: Gui eingabebedingt verändern
Hey @Meister Lampe,
also erst redest du von einer CheckBox und nun von einer DropDownList, also wenn du selber nicht weißt was du möchtest, ist es leider schwer dir zu helfen. Und wie meine vorredner bereits erwähnten wäre es leichter mit einem Ausschnitt von deinem richtigem Skript dir zu helfen, statt uns mit irgenwelchen Beispielen die dir dann nicht weiterhelfen rumzuschlagen.
also erst redest du von einer CheckBox und nun von einer DropDownList, also wenn du selber nicht weißt was du möchtest, ist es leider schwer dir zu helfen. Und wie meine vorredner bereits erwähnten wäre es leichter mit einem Ausschnitt von deinem richtigem Skript dir zu helfen, statt uns mit irgenwelchen Beispielen die dir dann nicht weiterhelfen rumzuschlagen.
- divanebaba
- Posts: 805
- Joined: 20 Dec 2016, 03:53
- Location: Diaspora
Re: Gui eingabebedingt verändern
Ich habe zusätzlich die g-Label und die zugehörige Abfrageroutine ins Spiel gebracht. Ich denke, wer solche Fragen stellt, weiß noch nicht, wie der Hase rennen kann.
Die Lösung, ein Control so einzustellen, daß es, wie hier gewünscht ist, von einem Tab übersprungen wird, interessiert mich, denn das wiederum weiß ich nicht.
EDIT: War das falsche Beispiel. Bei Interesse einfach nachfragen
Einfach nur ein toller Typ.
-
- Posts: 223
- Joined: 06 Jun 2017, 11:38
Re: Gui eingabebedingt verändern
Das verstehe ich auch wieder nicht!?divanebaba wrote: ↑19 Apr 2020, 08:29Die Lösung, ein Control so einzustellen, daß es, wie hier gewünscht ist, von einem Tab übersprungen wird, interessiert mich, denn das wiederum weiß ich nicht.
- Meister Lampe
- Posts: 229
- Joined: 06 Apr 2014, 13:28
Re: Gui eingabebedingt verändern
Hallo!
Entschuldigt bitte, daß ich Euch etwas durcheinander gebracht habe. Mein Prinzip ist eigentlich, möglichst viel selber erledigen zu können, weshalb ich möglichst Beispiele verwende, mit deren Antwort ich dann meine weiterzukommen. Ich wollte eigentlich folgende drei Informationen haben und in diese hereinpacken:
1.) Wie kann ich bereits während dem Durchgang eines Formular-Guis die Inhalte der bereits ausgefüllten Steuerelemente als Variablen erfassen? Dabei hielt ich es für egal, ob das über eine CheckBox, einen RadioButton oder eine DropDownList geschieht.
2.) Wie kann ich abhängig davon das Aussehen oder den Status von Steuerelementen in der Gui verändern? Auch das muß nicht unbedingt ein Edit sein, wie in meinen Beispielen.
3.) Wie kann ich ein Edit-Feld temporär und variablenbedingt deaktivieren? Im Code selber kann ich das Ding ausblenden:
Doch "wirkt" das erst beim nächsten Öffnen der Gui. Außerdem sollte man das Edit-Feld schon noch erkennen, nur nicht benutzen können.
Ich hatte gedacht, alles Weitere könnte ich mir dann selber zusammenbasteln, sobald ich diese Infos hätte. Und weil es mir eben egal schien, über welches Steuerelement diese Variablen eingegeben werden, hatte ich das erstbeste Beispiel genommen, das mir einfiel.
Viele Grüße von Meister Lampe
Entschuldigt bitte, daß ich Euch etwas durcheinander gebracht habe. Mein Prinzip ist eigentlich, möglichst viel selber erledigen zu können, weshalb ich möglichst Beispiele verwende, mit deren Antwort ich dann meine weiterzukommen. Ich wollte eigentlich folgende drei Informationen haben und in diese hereinpacken:
1.) Wie kann ich bereits während dem Durchgang eines Formular-Guis die Inhalte der bereits ausgefüllten Steuerelemente als Variablen erfassen? Dabei hielt ich es für egal, ob das über eine CheckBox, einen RadioButton oder eine DropDownList geschieht.
2.) Wie kann ich abhängig davon das Aussehen oder den Status von Steuerelementen in der Gui verändern? Auch das muß nicht unbedingt ein Edit sein, wie in meinen Beispielen.
3.) Wie kann ich ein Edit-Feld temporär und variablenbedingt deaktivieren? Im Code selber kann ich das Ding ausblenden:
Code: Select all
If (ZustandEdit = "ja")
{
Gui, Add, Edit, vVarEdit,
}
Ich hatte gedacht, alles Weitere könnte ich mir dann selber zusammenbasteln, sobald ich diese Infos hätte. Und weil es mir eben egal schien, über welches Steuerelement diese Variablen eingegeben werden, hatte ich das erstbeste Beispiel genommen, das mir einfiel.
Viele Grüße von Meister Lampe
Re: Gui eingabebedingt verändern
zu 1. Gui, Add, Edit, r9 w135 vMyEdit gMyGotoLabel, Text to appear inside the edit control (omit this parameter to start off empty).
... anschließend über einen weiteren Paramter, das gLabelName (AKA 'goto LabelName'), in eine Subroutine springen und dort die Variablen verwursten.
zu 2. da sind wir wieder beim ursprünglichen Problem. Nicht jede Vorgehensweise muß für jedes Gui-Control syntaktisch gleich sein. Und dir alle Optionen zu erläutern, wenn du dann letztendlich doch nur eine davon benutzt, das ist dann unnötige Lebenszeitvernichtung. Lege dich auf eine Option fest, nachdem du gesichtet hast welche deinen Anforderungen am ehesten entspricht. Und dann kanns losgehen.
zu 3. über den parameter enable/disable (wie schon mehrmals ausgeführt, s.o.)
Generelle Frage: benutzt du die Englische AHK Hilfe, oder die Deutsche - welche über das Hauptmenü der AHK-Onlinehilfe auswählbar ist (en/de/...) !?
https://www.autohotkey.com/docs/commands/GuiControl.htm#Disable
https://ahkde.github.io/docs/commands/GuiControl.htm#Disable
... anschließend über einen weiteren Paramter, das gLabelName (AKA 'goto LabelName'), in eine Subroutine springen und dort die Variablen verwursten.
zu 2. da sind wir wieder beim ursprünglichen Problem. Nicht jede Vorgehensweise muß für jedes Gui-Control syntaktisch gleich sein. Und dir alle Optionen zu erläutern, wenn du dann letztendlich doch nur eine davon benutzt, das ist dann unnötige Lebenszeitvernichtung. Lege dich auf eine Option fest, nachdem du gesichtet hast welche deinen Anforderungen am ehesten entspricht. Und dann kanns losgehen.
zu 3. über den parameter enable/disable (wie schon mehrmals ausgeführt, s.o.)
Generelle Frage: benutzt du die Englische AHK Hilfe, oder die Deutsche - welche über das Hauptmenü der AHK-Onlinehilfe auswählbar ist (en/de/...) !?
https://www.autohotkey.com/docs/commands/GuiControl.htm#Disable
https://ahkde.github.io/docs/commands/GuiControl.htm#Disable
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
-
- Posts: 223
- Joined: 06 Jun 2017, 11:38
Re: Gui eingabebedingt verändern
@Meister Lampe das wichtigste überhaupt beim Arbeiten mit Guis und Variablen ist Gui, Submit, nohide dies Ruft den inhalt aller Steuerelemente ab und Speichert sie in der dazugehörigen Variable, ohne die Gui zu verstecken.
@BNOLI das gLabel steht für Gosub, nicht für Goto. Ein entscheidender Unterschied.
@BNOLI das gLabel steht für Gosub, nicht für Goto. Ein entscheidender Unterschied.
Re: Gui eingabebedingt verändern
Confirmed
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
- Meister Lampe
- Posts: 229
- Joined: 06 Apr 2014, 13:28
Re: Gui eingabebedingt verändern
Hallo UnReALiTyy!
Vielen Dank, jetzt hats geklappt! Der Hinweis auf das Gui, Submit, nohide, von dem ich bisher nicht wußte, welche Funktion das im Script hat, nämlich genau diejenige, die ich gesucht hatte.
@just me
Du wirst schon noch sehen, was es damit auf sich hat.
Viele Grüße von Meister Lampe
Vielen Dank, jetzt hats geklappt! Der Hinweis auf das Gui, Submit, nohide, von dem ich bisher nicht wußte, welche Funktion das im Script hat, nämlich genau diejenige, die ich gesucht hatte.
@just me
Nein, ich habe nicht umgesattelt - in CoronaZeiten wäre ja gerade diese Branche wohl auch nicht sehr lohnend.Edit: Arbeitest Du jetzt für ein Reisebüro?
Du wirst schon noch sehen, was es damit auf sich hat.
Viele Grüße von Meister Lampe
Re: Gui eingabebedingt verändern
Das ist jetzt nicht Dein Ernst, oder?... Der Hinweis auf das Gui, Submit, nohide, von dem ich bisher nicht wußte, welche Funktion das im Script hat, ...
Re: Gui eingabebedingt verändern
Deshalb meine Frage nach der seiner verwendeten Sprachversion der AHK-Hilfe (Rückfragen werden jedoch ungern beantwortet). Gui. Submit. NoHide. 'Selbstredender' geht nicht.
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
-
- Posts: 223
- Joined: 06 Jun 2017, 11:38
Re: Gui eingabebedingt verändern
Naja was man nicht weiß kann man nicht wissen. Ich kann ihn verstehen, ging mir am anfang etliche male so, obwohl ich es kannte.
- Meister Lampe
- Posts: 229
- Joined: 06 Apr 2014, 13:28
Re: Gui eingabebedingt verändern
Hallo just me!
Viele Grüße von Meister Lampe
Doch, tatsächlich. Wie ich in 1.) erläutert hatte, habe ich eine Funktion gesucht, die die Eingaben in die Steuerelemente gleich erfassen kann, damit sie bei noch offenem Formular (also Gui) verwertet werden können - ohne, daß ich dazu einenn Ok-Button o.ä. drücken müßte. Das Gui, Submit, nohide steht zwar auch in den Scripts, bei denen Du mir geholfen hast, aber ich glaube, weil es am Anfang eines Labels steht, habe es mit dieser Funktion nie assoziert. Ich hatte wohl immer gedacht, das müsse direkt innerhalb des Gui-Codes stehen, zwischen der Beschreibung der anderen Steuerelemente.
Viele Grüße von Meister Lampe
Who is online
Users browsing this forum: No registered users and 53 guests