Radio-Button - Group erstellen in Gui

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

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

Radio-Button - Group erstellen in Gui

Post by Meister Lampe » 10 Nov 2022, 17:31

Hallo zusammen!

Ich habe etwas Schwierigkeiten mit der Anleitung zur Erstellung einer Group aus dem Steuerelement Radio, da das im Handbuch nur sehr knapp und ohne Beispiel geschildert ist.
Dort wird erwähnt, man könne zwei solcher Buttons zusammenfassen, indem man in die Optionen des ersten Stichwort "Group" eingibt. Dort steht lediglich:

Code: Select all

Gui, Add, Radio, vMeineRadioGruppe, Artikel erst versenden, wenn sie auf Lager sind.
Aber was sind eigentlich die Optionen? Wo Add steht oder bei Radio? Beim Eintragen von "Group" - wo auch immer - popt in der Auswahl "GroupAdd" auf, das scheint mir aber ein anderes Kaliber zu sein.
Dann hatte ich eigentlich angenommen, daß wenn mehrere ausschließende Entscheidungen zur Auswahl stehen, dabei nur eine Variable verwendet wird, die - je nach Auswahl - unterschiedliche Werte annimmt. Wenn ich aber denselben Namen als Variable eintrage, protestiert das Programm.
Aber wie soll ich sonst danach eine Ausgabe wie

Code: Select all

MsgBox, Das Ergebnis der Abfrage ist %var_Abfrage%
erstellen?

Viele Grüße von Meister Lampe

Rohwedder
Posts: 7774
Joined: 04 Jun 2014, 08:33
Location: Germany

Re: Radio-Button - Group erstellen in Gui

Post by Rohwedder » 11 Nov 2022, 01:30

Hallo,
Syntax: Gui, Add, Steuerelement [, Optionen, Text]
Direkt aufeinanderfolgende Radiobuttons bilden automatisch eine Gruppe.
1. Gruppe = Radio1 und Radio2
Eine neue Gruppe beginnt mit dem Wort Group in den Optionen.
2. Gruppe = Radio3 und Radio4

Code: Select all

Gui, Add, Radio, vRadio1 gSubmit, auf Lager
Gui, Add, Radio, vRadio2 gSubmit, nicht auf Lager
Gui, Add, Radio, Group vRadio3 gSubmit, bezahlt
Gui, Add, Radio, vRadio4 gSubmit, nicht bezahlt
Gui, show
Submit:
Gui, Submit, NoHide
ToolTip,% Radio1 " auf Lager`n" Radio2 " nicht auf Lager`n"
. Radio3 " bezahlt`n" Radio4 " nicht bezahlt", 150, 100
Return
oder mit nur je einer Variablen pro Gruppe:

Code: Select all

Gui, Add, Radio, vGruppe1 gSubmit, auf Lager
Gui, Add, Radio, gSubmit, nicht auf Lager
Gui, Add, Radio, Group vGruppe2 gSubmit, bezahlt
Gui, Add, Radio, gSubmit, nicht bezahlt
Gui, show
Submit:
Gui, Submit, NoHide
ToolTip,% (Gruppe1=1) " auf Lager`n" (Gruppe1=2) " nicht auf Lager`n"
. (Gruppe2=1) " bezahlt`n" (Gruppe2=2) " nicht bezahlt", 150, 100
Return
Mit -Group lassen sich nicht direkt aufeinanderfolgende Radiobuttons gruppieren:

Code: Select all

Gui, Add, Radio, Group vGruppe1 gSubmit, auf Lager
Gui, Add, Edit, -Group vEdit1
Gui, Add, Radio, -Group gSubmit, nicht auf Lager
Gui, Add, Radio, Group vGruppe2 gSubmit, bezahlt
Gui, Add, Radio, gSubmit, nicht bezahlt
Gui, show
Submit:
Gui, Submit, NoHide
ToolTip,% (Gruppe1=1) " auf Lager`n" (Gruppe1=2) " nicht auf Lager`n"
. (Gruppe2=1) " bezahlt`n" (Gruppe2=2) " nicht bezahlt", 150, 100
Return

just me
Posts: 9575
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Radio-Button - Group erstellen in Gui

Post by just me » 11 Nov 2022, 04:57

Moin,
Meister Lampe wrote: Aber wie soll ich sonst danach eine Ausgabe wie

Code: Select all

MsgBox, Das Ergebnis der Abfrage ist %var_Abfrage%
erstellen?
Für die Antwort auf diese Frage wäre es äußerst hilfreich, wenn wir auch den Code für die Eingaben sehen könnten, die diese Ausgabe erstellen sollen. Ansonsten ist eine mögliche Antwort: Genau so!

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

Re: Radio-Button - Group erstellen in Gui

Post by Meister Lampe » 11 Nov 2022, 17:11

Hallo just me!
Für die Antwort auf diese Frage wäre es äußerst hilfreich, wenn wir auch den Code für die Eingaben sehen könnten, die diese Ausgabe erstellen sollen.
Also was ich versucht hatte, war folgendes:

Code: Select all

Gui, Add, Radio, vAbfrage, auf Lager
Gui, Add, Radio, vAbfrage, nicht auf Lager

MsgBox, Das Ergebnis der Abfrage ist %Abfrage%
; um später einmal einzufügen
If (Abfrage = 1)
...
Und hier störte, daß die Variable zweimal vorkam. Wenn ich aber verschiedene genommen hätte, könnte ich den Wert nicht unter demselben Namen ausgeben.

Viele Grüße von Meister Lampe

just me
Posts: 9575
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Radio-Button - Group erstellen in Gui

Post by just me » 12 Nov 2022, 03:54

Moin,

wie Du der Hilfe und den Beipielen von @Rohwedder entnehmen kannst, bilden direkt aufeinanderfolgend erstellte Radio-Buttons automatisch eine Gruppe. Für das von Dir gewünschte Verhalten darf nur einem Control dieser Gruppe eine Variable zugewiesen werden. Damit die Gruppenvariable korrekt gefüllt wird, brauchst Du zwingend Gui, Submit, ....

Code: Select all

#NoEnv
Gui, Margin, 50, 10
Gui, Add, Radio, w200 vLager, auf Lager
Gui, Add, Radio, w200       , nicht auf Lager
Gui, Add, Button,w200 gCheck, Check
Gui, Show, , Test
Return

GuiClose:
ExitApp

Check:
Gui, Submit, NoHide
MsgBox, Lager: %Lager%
Return
Hast Du nun alles, was Du brauchst?

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

Re: Radio-Button - Group erstellen in Gui

Post by Meister Lampe » 16 Nov 2022, 18:42

Hallo just me!
Hast Du nun alles, was Du brauchst?
Noch nicht ganz.
Separat in einem Probescript funktioniert das Ding. Mich irritiert allerdings etwas, daß bei Deiner Version als Werte der Variablen 1 und 2 ausgegeben werden, während im Handbuch von den klassischen boolschen Werten 0 und 1 gesprochen wird. Wodurch wird das festgelegt? Das wäre letztlich aber egal, wenn man sie nur eindeutig zuordnen kann.
Wenn ich den Code aber in mein Script in die bereits existierende Gui einbaue, dann kommt überhaupt kein Wert mehr dabei raus.

Code: Select all

; Auswahlfenster erstellen und anzeigen
Rows := (L := Vorgaben.Length()) > 10 ? 10 : L
GuiText_1 := "Wählen Sie hier den Standard für das nächste Umbenennungsprojekt aus!"
Gui, Margin, 20, 20
Gui, Font, s10 , Verdana
Gui, Add, Text, xm w350, %GuiText_1%
Gui, Add, ListView, xm wp r%Rows% -Multi vBestandAuswahl Sort, Bestand|Signatur|Index
Gui, Add, Radio, checked vSignTyp, Sammlungen
Gui, Add, Radio, , einzelne Akten
For Each, Vorgabe In Vorgaben
{
   Felder := StrSplit(Vorgabe, "`t")
   Option := (Felder[1] = Auswahl) ? "Focus Select" : ""
   LV_Add(Option, Felder*)
}
Loop, % LV_GetCount("Column")
   LV_ModifyCol(A_Index, "AutoHdr")

If (LizenzKey = "ja")         ; Einblendung zusätzlicher Optionen bei der erweiterten Version
{
Gui, Add, Edit, cblue    xm  h25   w100  vAktSignEingabe, ;%Auswahl%
Gui, Add, Edit, cblue    x137  yp  h25  w70  vSignEingabe, ;%SignVorlage%
Gui, Add, Edit, cblue    x224  yp  h25  w70  vIndexEingabe, ;%IndexVorlage%
Gui, Add, Text, x124     yp+5    h25   w13 , % chr(863)
Gui, Add, Text, x211     yp+4    h25   w13  , % chr(862)

Gui, Add, Button, xm  h30 w100 Default gAnwenden, Anwenden
; Button "Neu Erstellen"  wird in der Standardversion auskommentiert
Gui, Add, Button, x145 yp h30 w100 gNeuerstellen, Neu Erstellen
Gui, Add, Button, x270 yp h30 w100 gAbbrechen, Abbrechen
}
else
{
Gui, Add, Button, xm  h30 w145 Default gAnwenden, Anwenden
Gui, Add, Button, x225 yp h30 w145 gAbbrechen, Abbrechen
}

Menu, Tray, Icon, , , 1
GuiControl, Focus, BestandAuswahl
Gui, Show, x100 y100, Signierungsvorlagen
Return
Wenn ich aber dann später abfrage:

Code: Select all

If (SignTyp = 0)
{
   LetzterIndex := 1
   IndexTrenner := "_"
}
else
{
   LetzterIndex := 0
   IndexTrenner := "-"
}

MsgBox, , , Das Trennzeichen für Indizes ist %IndexTrenner%
oder auch nur prüfe:

Code: Select all

MsgBox, , , der Signaturtypus ist %SignTyp%
dann ist die Variable SignTyp leer.

Viele Grüße von Meister Lampe

just me
Posts: 9575
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Radio-Button - Group erstellen in Gui

Post by just me » 17 Nov 2022, 04:30

Moin!

In der Online-Doku gibt es unter "Grafische Benutzeroberflächen -> GUI-Steuerelemente" einen Abschnitt :arrow: Radio: Dort steht
Die zugeordnete Ausgabevariable des Radio-Buttons (falls vorhanden) wird auf 1 gesetzt, wenn das Steuerelement eingeschaltet ist, oder auf 0, wenn es ausgeschaltet ist. Wenn jedoch nur einem Mitglied einer Radio-Gruppe eine Variable zugeordnet wurde, enthält diese Variable stattdessen die Nummer des aktuell eingeschalteten Radio-Buttons: 1 ist der erste Radio-Button (gemäß der originalen Erstellungsreihenfolge), 2 ist der zweite und so weiter. Wenn kein einziger Radio-Button eingeschaltet ist, wird 0 gespeichert.
Was davon irritiert Dich?

Damit überhaupt etwas in die Variable geschrieben wird, braucht es allerdings - wie oben bereits gesagt - ein Gui, Submit, ...

Grüße, just me

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

Re: Radio-Button - Group erstellen in Gui

Post by Meister Lampe » 17 Nov 2022, 17:18

Hallo just me!

Das mit den Ausgabewerten leuchtet ein. Danke für den Hinweis.
Damit überhaupt etwas in die Variable geschrieben wird, braucht es allerdings - wie oben bereits gesagt - ein Gui, Submit, ...
Nur wo? Ich hatte das bereits versucht, am Ende des ersten sowie des zweiten Teils (Module Gui und "Anwenden"), den ich Dir gezeigt habe, hineinzusetzen:

Code: Select all

Gui, Submit, NoHide
MsgBox, , , der Signaturtypus ist %SignTyp%
return
Aber ohne Erfolg.
Und die anderen im selben Rahmen ausgewählten Variablen der Module Gui und "Anwenden" werden doch auch abgespeichert ohne Submit!?

Viele Grüße von Meister Lampe

just me
Posts: 9575
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Radio-Button - Group erstellen in Gui

Post by just me » 18 Nov 2022, 04:48

Moin @Meister Lampe,

das von Dir erstellte Fenster hat u.a. die "Ausgänge" Anwenden und Neuerstellen. Über welche Routine reden wir jetzt und wie sieht die z.Zt. aus?

Grüße von just me!

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

Re: Radio-Button - Group erstellen in Gui

Post by Meister Lampe » 18 Nov 2022, 17:27

Hallo just me!

Der Hinweis auf die zwei "Ausgänge" war gut. Jetzt habe ich mir beide mal separat angesehen. Ich hatte mich bisher nur mit Anwenden beschäftigt (das ist auch das Modul, das ich hier hereingestellt hatte), weil das auch das allgemein verwendete sein wird. Bei Neuerstellen funktioniert es aber bereits, da steht ja auch schon von früher das Gui, Submit drin. Daß das dort ganz oben hin muß, hatte ich allerdings nicht erwartet. Dorthin habe ich das bei dem Anwenden jetzt auch gesetzt und das zumindest klappt jetzt.
Nun hatte ich ja schon erwähnt, daß ich davon die Zählweise abhängig machen will:

Code: Select all

If (SignTyp = 1)
{
   LetzterIndex := 1
   IndexTrenner := "_"
}
else
{
   LetzterIndex := 0
   IndexTrenner := "-"
}
Was den IndexTrenner betrifft, ist mir das auch schon gelungen. Nur wie bekomme ich im Format-Befehl die Startzahl als Variable eingegeben?

Code: Select all

VorschauIndex := Format("{:0" . StellenIndex . "}", 0)
VorschauMsg = %AktSign%_%VorschauSign%%IndexTrenner%%VorschauIndex%
Progress, m2 fs12 zh0 ct0000ff CWffffff B, %VorschauMsg%, , Vorschau, Verdana
Viele Grüße von Meister Lampe

just me
Posts: 9575
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Radio-Button - Group erstellen in Gui

Post by just me » 19 Nov 2022, 07:37

Meister Lampe wrote:Nur wie bekomme ich im Format-Befehl die Startzahl als Variable eingegeben?
Indem Du wie üblich den Namen der Variablen als Parameter an die Funktion übergibst. Falls die Variable LetzterIndex heißt, wäre das

Code: Select all

VorschauIndex := Format("{:0" . StellenIndex . "}", LetzterIndex)

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

Re: Radio-Button - Group erstellen in Gui

Post by Meister Lampe » 19 Nov 2022, 18:26

Aua!

Genau so hatte ich es bereits versucht - nur habe ich dabei die Variable in Prozentzeichen gesetzt! :x
Das scheint mir im AHK das Analogon zum Vorzeichenfehler in Mathe zu sein ...
Jetzt tut's natürlich und ich werde als nächstes alle Stellen im ganzen Script, wo diese Unterscheidung angewandt werden soll, entsprechend erweitern bzw. umschreiben.

Vielen Dank!
Meister Lampe

Post Reply

Return to “Ich brauche Hilfe”