Gui eingabebedingt verändern

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
Meister Lampe
Posts: 173
Joined: 06 Apr 2014, 13:28

Gui eingabebedingt verändern

17 Apr 2020, 06:14

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
BNOLI
Posts: 548
Joined: 23 Mar 2020, 03:55

Re: Gui eingabebedingt verändern

17 Apr 2020, 06:18

Ich denke das Schlüsselwort heisst hier :arrow: 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
Der einheitliche Euro-Zahlungsverkehrsraum (Single Euro Payments Area) besteht aus den 28 EU-Staaten sowie Island, Liechtenstein, Norwegen, der Schweiz und Monaco.
Jetzt 27?
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 !
UnReALiTyy
Posts: 166
Joined: 06 Jun 2017, 11:38

Re: Gui eingabebedingt verändern

17 Apr 2020, 06:22

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
User avatar
Meister Lampe
Posts: 173
Joined: 06 Apr 2014, 13:28

Re: Gui eingabebedingt verändern

17 Apr 2020, 18:03

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:

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
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
BNOLI
Posts: 548
Joined: 23 Mar 2020, 03:55

Re: Gui eingabebedingt verändern

18 Apr 2020, 05:55

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?? :eh:

Deine Herausforderung ist das aktivieren bzw deaktivieren von :arrow: GuiControls nach Ergebnis einer (oder mehrerer) Bedingung(en)
:arrow: Enable
:arrow: 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 !
just me
Posts: 7114
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Gui eingabebedingt verändern

19 Apr 2020, 05:35

"Error: The same variable cannot be used for more than one control."
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.

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? ;)
User avatar
divanebaba
Posts: 795
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: Gui eingabebedingt verändern

19 Apr 2020, 07:45

Wie kann ich dann erreichen, daß , wenn ich "innerhalb EU" wähle, das Edit-Feld "BIC" deaktiviert wird?
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.
Lauten diese DE, dann deaktiviere das BIC-Edit-Feld mit dem Befehl

Code: Select all

GuiControl, Disable, VariablennameDesEditfeldes
Hat den Vorteil, daß bei jeder Eingabe oder Änderung eine Prüfung automatisch stattfindet und Fehlbedienungen minimiert werden.
BNOLI
Posts: 548
Joined: 23 Mar 2020, 03:55

Re: Gui eingabebedingt verändern

19 Apr 2020, 08:11

divanebaba wrote:
19 Apr 2020, 07:45
Wie kann ich dann erreichen, daß , wenn ich "innerhalb EU" wähle, das Edit-Feld "BIC" deaktiviert wird?
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.
Lauten diese DE, dann deaktiviere das BIC-Edit-Feld mit dem Befehl

Code: Select all

GuiControl, Disable, VariablennameDesEditfeldes
Hat den Vorteil, daß bei jeder Eingabe oder Änderung eine Prüfung automatisch stattfindet und Fehlbedienungen minimiert werden.
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.) 8-)
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
UnReALiTyy
Posts: 166
Joined: 06 Jun 2017, 11:38

Re: Gui eingabebedingt verändern

19 Apr 2020, 08:24

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. ;)
User avatar
divanebaba
Posts: 795
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: Gui eingabebedingt verändern

19 Apr 2020, 08:29

BNOLI wrote:
19 Apr 2020, 08:11
Willkommen im Club ...
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.
Hier noch die Möglichkeit, Inhalte nachfolgender Combo-Boxen mit vorherigen Eingaben steuern zu können. Könnte später von Interesse sein, meine ich.
EDIT: War das falsche Beispiel. Bei Interesse einfach nachfragen :mrgreen:
UnReALiTyy
Posts: 166
Joined: 06 Jun 2017, 11:38

Re: Gui eingabebedingt verändern

19 Apr 2020, 14:44

divanebaba wrote:
19 Apr 2020, 08:29
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.
Das verstehe ich auch wieder nicht!? :think:
User avatar
Meister Lampe
Posts: 173
Joined: 06 Apr 2014, 13:28

Re: Gui eingabebedingt verändern

19 Apr 2020, 17:20

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:

Code: Select all

If (ZustandEdit = "ja")
{
Gui, Add, Edit, vVarEdit,
}
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
BNOLI
Posts: 548
Joined: 23 Mar 2020, 03:55

Re: Gui eingabebedingt verändern

20 Apr 2020, 01:45

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
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
UnReALiTyy
Posts: 166
Joined: 06 Jun 2017, 11:38

Re: Gui eingabebedingt verändern

20 Apr 2020, 05:36

@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
Posts: 548
Joined: 23 Mar 2020, 03:55

Re: Gui eingabebedingt verändern

20 Apr 2020, 07:20

Confirmed :yawn:
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
User avatar
Meister Lampe
Posts: 173
Joined: 06 Apr 2014, 13:28

Re: Gui eingabebedingt verändern

22 Apr 2020, 17:17

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
Edit: Arbeitest Du jetzt für ein Reisebüro? ;)
Nein, ich habe nicht umgesattelt - in CoronaZeiten wäre ja gerade diese Branche wohl auch nicht sehr lohnend. :?
Du wirst schon noch sehen, was es damit auf sich hat.

Viele Grüße von Meister Lampe
just me
Posts: 7114
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Gui eingabebedingt verändern

23 Apr 2020, 04:01

... Der Hinweis auf das Gui, Submit, nohide, von dem ich bisher nicht wußte, welche Funktion das im Script hat, ...
Das ist jetzt nicht Dein Ernst, oder?
BNOLI
Posts: 548
Joined: 23 Mar 2020, 03:55

Re: Gui eingabebedingt verändern

23 Apr 2020, 04:32

just me wrote:
23 Apr 2020, 04:01
... Der Hinweis auf das Gui, Submit, nohide, von dem ich bisher nicht wußte, welche Funktion das im Script hat, ...
Das ist jetzt nicht Dein Ernst, oder?
Deshalb meine Frage nach der seiner verwendeten Sprachversion der AHK-Hilfe (Rückfragen werden jedoch ungern beantwortet). Gui. Submit. NoHide. 'Selbstredender' geht nicht. :silent: :lolno:
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
UnReALiTyy
Posts: 166
Joined: 06 Jun 2017, 11:38

Re: Gui eingabebedingt verändern

23 Apr 2020, 08:33

just me wrote:
23 Apr 2020, 04:01
... Der Hinweis auf das Gui, Submit, nohide, von dem ich bisher nicht wußte, welche Funktion das im Script hat, ...
Das ist jetzt nicht Dein Ernst, oder?
:lol: :lol: :lol:
Naja was man nicht weiß kann man nicht wissen. Ich kann ihn verstehen, ging mir am anfang etliche male so, obwohl ich es kannte.
User avatar
Meister Lampe
Posts: 173
Joined: 06 Apr 2014, 13:28

Re: Gui eingabebedingt verändern

23 Apr 2020, 08:39

Hallo just me!
just me wrote:
23 Apr 2020, 04:01
... Der Hinweis auf das Gui, Submit, nohide, von dem ich bisher nicht wußte, welche Funktion das im Script hat, ...
Das ist jetzt nicht Dein Ernst, oder?
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

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 2 guests