Wie ein Eintrag aus DropDownList ansprechen?

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie ein Eintrag aus DropDownList ansprechen?

Re: Wie ein Eintrag aus DropDownList ansprechen?

Post by Bekkart » 14 Nov 2019, 00:44

Danke! Funktioniert so. Ich sehe auch den Unterschied, aber ich verstehe ehrlich gesagt nicht warum es funktioniert.
Ich schau mir das nochmal an und probiere ein bissel rum.

Re: Wie ein Eintrag aus DropDownList ansprechen?

Post by UnReALiTyy » 13 Nov 2019, 16:34

Bekkart wrote:
13 Nov 2019, 14:28
UnReALiTyy wrote:
13 Nov 2019, 14:00
Ja deshalb hab ich da ein Gui, Destroy hingemacht, was stört dich daran?
Ich muss oft die Pos und die Registerkarte ändern (manchmal zweiter Montitor usw), aber es gibt keine festen Koordinaten die helfen, daher ist Destory hinderlich. Dann wird die GUI jedes mal neugestartet. Bei Hide würde beides erhalten bleiben. Daher ist das mein Ziel.
Ok kein Problem, dann mach es ohne Feste Koordinate am Anfang.

Code: Select all

SetTitleMatchMode 2

 ;Abschnitt Gruppe Gruppe Damit GUI nur in Editor und Send Fenster aktiv ist
GroupAdd, Test, ahk_exe AutoHotKey.exe
GroupAdd, Test, ahk_exe notepad++.exe

 ;GUI allgemeiner Part
Gui, +AlwaysOnTop +Caption
Gui, Color, C0C0C0
Gui, Add, Tab3, w400 h800, BlaBla|Test2|

 ;GUI alle Registerkarten und Buttons
Gui, Add, Text, x20 y50 w200 h15, Allgemein
Gui, Add, Button, Default w130 gbtn1, [E] Events  
Gui, Add, DropDownList, Choose1 vShortcut_Num gAbfrage, Shortcuts (NUM)|Num 1: Event|
Gui, Add, Text, x25 y293 w350 h2 +0x10 ; Strich

TabON: ; Vordergrund / Hintergund
WinWaitActive, ahk_group Test
	Gui, Show, w400 h400, BlaBliBlub ; Titel GUI - 24 Zoll Variante
WinWaitNotActive, ahk_group Test 
	Gui, Hide
gosub, TabON

Abfrage:
Gui, Submit, nohide
if (Shortcut_num = "Num 1: Event")
gosub, btn1
return

;############################################################ allgemein
^E::
btn1:
WinActivate ahk_exe notepad++.exe
send, ^{f}Events{Enter}{Esc}{Home}{NumpadDown 5} ; Events 
return

Re: Wie ein Eintrag aus DropDownList ansprechen?

Post by Bekkart » 13 Nov 2019, 14:28

UnReALiTyy wrote:
13 Nov 2019, 14:00
Ja deshalb hab ich da ein Gui, Destroy hingemacht, was stört dich daran?
Ich muss oft die Pos und die Registerkarte ändern (manchmal zweiter Montitor usw), aber es gibt keine festen Koordinaten die helfen, daher ist Destory hinderlich. Dann wird die GUI jedes mal neugestartet. Bei Hide würde beides erhalten bleiben. Daher ist das mein Ziel.

Re: Wie ein Eintrag aus DropDownList ansprechen?

Post by UnReALiTyy » 13 Nov 2019, 14:00

Ja deshalb hab ich da ein Gui, Destroy hingemacht, was stört dich daran?

Code: Select all

SetTitleMatchMode 2
 ;Abschnitt Gruppe Gruppe Damit GUI nur in Editor und Send Fenster aktiv ist
	GroupAdd, Test, ahk_exe AutoHotKey.exe
	GroupAdd, Test, ahk_exe notepad++.exe

TabON: ; Vordergrund / Hintergund
WinWaitActive, ahk_group Test

 ;GUI allgemeiner Part
Gui, +AlwaysOnTop +Caption
Gui, Color, C0C0C0
Gui, Add, Tab3, w400 h800, BlaBla|Test2|

 ;GUI alle Registerkarten und Buttons
Gui, Add, Text, x20 y50 w200 h15, Allgemein
Gui, Add, Button, Default w130 gbtn1, [E] Events  
Gui, Add, DropDownList, Choose1 vShortcut_Num gAbfrage, Shortcuts (NUM)|Num 1: Event|
Gui, Add, Text, x25 y293 w350 h2 +0x10 ; Strich
Gui, Show, x1314 y416 w400 h400, BlaBliBlub ; Titel GUI - 24 Zoll Variante
WinSet, Redraw,, ahk_exe AutoHotKey.exe

WinWaitNotActive, ahk_group Test 
Gui, Destroy
gosub, TabON

Abfrage:
Gui, Submit, nohide
if (Shortcut_num = "Num 1: Event")
gosub, btn1
return

;############################################################ allgemein
^E::
btn1:
WinActivate ahk_exe notepad++.exe
send, ^f{raw}Events
send,{Enter}{Esc}{Home}{NumpadDown 5} ; Events 
return

Re: Wie ein Eintrag aus DropDownList ansprechen?

Post by Bekkart » 13 Nov 2019, 13:51

> Habe mal ein wenig Optimiert, vielleicht passt dir es ja so.
Danke. Ich schau mir das mal in Ruhe an und schaue ob ich das auf mein Script portieren kann.

Ich hab noch 2 Probleme die eine ähnliche Richtung gehen.
Das ist derzeit mein Test (auf Basis deiner Änderungen)

Code: Select all

SetTitleMatchMode 2
 ;Abschnitt Gruppe Gruppe Damit GUI nur in Editor und Send Fenster aktiv ist
	GroupAdd, Test, ahk_exe AutoHotKey.exe
	GroupAdd, Test, ahk_exe notepad++.exe

TabON: ; Vordergrund / Hintergund
WinWaitActive, ahk_group Test

 ;GUI allgemeiner Part
Gui, +AlwaysOnTop +Caption
Gui, Color, C0C0C0
Gui, Add, Tab3, w400 h800, BlaBla|Test2|

 ;GUI alle Registerkarten und Buttons
Gui, Add, Text, x20 y50 w200 h15, Allgemein
Gui, Add, Button, Default w130 gbtn1, [E] Events  
Gui, Add, DropDownList, Choose1 vShortcut_Num gAbfrage, Shortcuts (NUM)|Num 1: Event|
Gui, Add, Text, x25 y293 w350 h2 +0x10 ; Strich
Gui, Show, x1314 y416 w400 h400, BlaBliBlub ; Titel GUI - 24 Zoll Variante

WinWaitNotActive, ahk_group Test 
Gui, hide
gosub, TabON

Abfrage:
Gui, Submit ,nohide
if (Shortcut_num = "Num 1: Event")
gosub, btn1
return

;############################################################ allgemein
^E::
btn1:
WinActivate ahk_exe notepad++.exe
send, ^f{raw}Events
send,{Enter}{Esc}{Home}{NumpadDown 5} ; Events 
return
Ersetze ich GUI, hide zu GUI destroy läuft alles. In der Variante oben, minimiert er dann auch, wenn er wieder kommt läuft aber in den Fehler und meckert in Zeile 17, weil ich angeblich die gleiche Variable mehrfach benutze (Spec vShortcut_Num gAbfrage).

Und SuperBonusfrage: Ich will, dass er sobald das Fenster aus der Gruppe wieder aktiv wird auch noch ein Redraw auf meine GUI bekommen, damit auch alles wieder angezeigt wird.

WinSet, Redraw,, ahk_exe AutoHotKey.exe

Re: Wie ein Eintrag aus DropDownList ansprechen?

Post by UnReALiTyy » 13 Nov 2019, 13:27

Bekkart wrote:
13 Nov 2019, 12:07
hm... Also in einem Testcode, hab ich das nicht hinbekommen. Es erfolgt kein Trigger nach der Auswahl.

Code: Select all

#ifWinActive, ahk_exe notepad++.exe
SetTitleMatchMode 2
{ ;Abschnitt Gruppe Gruppe Damit GUI nur in Editor und Send Fenster aktiv ist
	GroupAdd, Test, ahk_exe AutoHotKey.exe
	GroupAdd, Test, ahk_exe notepad++.exe
	}
TabON: ; Vordergrund / Hintergund
WinWaitActive, ahk_group Test
{ ;GUI allgemeiner Part
Gui, +AlwaysOnTop +Caption
Gui, Color, C0C0C0
Gui, Show, x1314 y416 w400 h400, BlaBliBlub ; Titel GUI - 24 Zoll Variante
Gui, Add, Tab3, w400 h800, BlaBla|Test2|
}
 ;GUI alle Registerkarten und Buttons
Gui, Add, Text, x20 y50 w200 h15, Allgemein
Gui, Add, Button, Default w130 gbtn1, [E] Events  
Gui, Add, DropDownList, vShortcut_Num gAbfrage, Shortcuts (NUM)||Num 1: Event
Gui Add, Text, x25 y293 w350 h2 +0x10 ; Strich
{ 
WinWaitNotActive, ahk_group Test 
Gui, Destroy
;Gui, Minimize
gosub, TabON
return

}
Gui, Submit
Abfrage: 
if (Shortcut_num= "E: Events")
Gosub, btn1
Return

;############################################################ allgemein
btn1:
winactivate ahk_exe notepad++.exe
send, ^f{raw}Events
send,{Enter}{Esc}{Home}{NumpadDown 5} ; Events 
return
^E::gosub, btn1
Habe mal ein wenig Optimiert, vielleicht passt dir es ja so.

Code: Select all

SetTitleMatchMode 2
 ;Abschnitt Gruppe Gruppe Damit GUI nur in Editor und Send Fenster aktiv ist
	GroupAdd, Test, ahk_exe AutoHotKey.exe
	GroupAdd, Test, ahk_exe notepad++.exe

TabON: ; Vordergrund / Hintergund
WinWaitActive, ahk_group Test

 ;GUI allgemeiner Part
Gui, +AlwaysOnTop +Caption
Gui, Color, C0C0C0
Gui, Add, Tab3, w400 h800, BlaBla|Test2|

 ;GUI alle Registerkarten und Buttons
Gui, Add, Text, x20 y50 w200 h15, Allgemein
Gui, Add, Button, Default w130 gbtn1, [E] Events  
Gui, Add, DropDownList, Choose1 vShortcut_Num gAbfrage, Shortcuts (NUM)|Num 1: Event|
Gui, Add, Text, x25 y293 w350 h2 +0x10 ; Strich
Gui, Show, x1314 y416 w400 h400, BlaBliBlub ; Titel GUI - 24 Zoll Variante

WinWaitNotActive, ahk_group Test 
Gui, Destroy
gosub, TabON

Abfrage:
Gui, Submit ;,nohide
if (Shortcut_num = "Num 1: Event")
gosub, btn1
return

;############################################################ allgemein
^E::
btn1:
WinActivate ahk_exe notepad++.exe
send, ^f{raw}Events
send,{Enter}{Esc}{Home}{NumpadDown 5} ; Events 
return

Re: Wie ein Eintrag aus DropDownList ansprechen?

Post by gregster » 13 Nov 2019, 12:56

Yep, du müsstest es schon in die entspechende gelabelte Subroutine inkludieren, eben "direkt unterhalb des Labels" (oder meinetwegen auch später), aber auf jeden Fall noch bevor du auf die Variable zugreifst, wie gezeigt:
gregster wrote: Auf jeden Fall bevor du die v-Variable ShortcutÜbersicht in der Subroutine checkst (vgl. meinen Code oben), also z. B. direkt unterhalb des Labels:

Code: Select all

Abfrage:
Gui, Submit  	; optional, wenn die GUI offen bleiben soll:    , NoHide
if (ShortcutÜbersicht= "Eintrag1")
; [...]
else if (ShortcutÜbersicht= "Eintrag 2")
Davor, sozusagen im Niemandsland, wäre der Code unerreichbar, wie UnReALiTyy korrekt erklärt hat.

Re: Wie ein Eintrag aus DropDownList ansprechen?

Post by UnReALiTyy » 13 Nov 2019, 12:36

Bekkart wrote:
13 Nov 2019, 12:07
hm... Also in einem Testcode, hab ich das nicht hinbekommen. Es erfolgt kein Trigger nach der Auswahl.

Code: Select all

#ifWinActive, ahk_exe notepad++.exe
SetTitleMatchMode 2
{ ;Abschnitt Gruppe Gruppe Damit GUI nur in Editor und Send Fenster aktiv ist
	GroupAdd, Test, ahk_exe AutoHotKey.exe
	GroupAdd, Test, ahk_exe notepad++.exe
	}
TabON: ; Vordergrund / Hintergund
WinWaitActive, ahk_group Test
{ ;GUI allgemeiner Part
Gui, +AlwaysOnTop +Caption
Gui, Color, C0C0C0
Gui, Show, x1314 y416 w400 h400, BlaBliBlub ; Titel GUI - 24 Zoll Variante
Gui, Add, Tab3, w400 h800, BlaBla|Test2|
}
 ;GUI alle Registerkarten und Buttons
Gui, Add, Text, x20 y50 w200 h15, Allgemein
Gui, Add, Button, Default w130 gbtn1, [E] Events  
Gui, Add, DropDownList, vShortcut_Num gAbfrage, Shortcuts (NUM)||Num 1: Event
Gui Add, Text, x25 y293 w350 h2 +0x10 ; Strich
{ 
WinWaitNotActive, ahk_group Test 
Gui, Destroy
;Gui, Minimize
gosub, TabON
return

}
Gui, Submit
Abfrage: 
if (Shortcut_num= "E: Events")
Gosub, btn1
Return

;############################################################ allgemein
btn1:
winactivate ahk_exe notepad++.exe
send, ^f{raw}Events
send,{Enter}{Esc}{Home}{NumpadDown 5} ; Events 
return
^E::gosub, btn1
Wie soll das auch funktionieren? Die Zeile Gui, Submit wird wegen dem return davor niemals erreicht.

Code: Select all

Gui, Submit
Abfrage: 
if (Shortcut_num= "E: Events")
Gosub, btn1
Return
Nach anklicken des Buttons abfrage muss auch Gui, Submit ausgeführt werden.

Code: Select all

Abfrage:
Gui, Submit
if (Shortcut_num= "E: Events")
Gosub, btn1
Return

Re: Wie ein Eintrag aus DropDownList ansprechen?

Post by Bekkart » 13 Nov 2019, 12:07

hm... Also in einem Testcode, hab ich das nicht hinbekommen. Es erfolgt kein Trigger nach der Auswahl.

Code: Select all

#ifWinActive, ahk_exe notepad++.exe
SetTitleMatchMode 2
{ ;Abschnitt Gruppe Gruppe Damit GUI nur in Editor und Send Fenster aktiv ist
	GroupAdd, Test, ahk_exe AutoHotKey.exe
	GroupAdd, Test, ahk_exe notepad++.exe
	}
TabON: ; Vordergrund / Hintergund
WinWaitActive, ahk_group Test
{ ;GUI allgemeiner Part
Gui, +AlwaysOnTop +Caption
Gui, Color, C0C0C0
Gui, Show, x1314 y416 w400 h400, BlaBliBlub ; Titel GUI - 24 Zoll Variante
Gui, Add, Tab3, w400 h800, BlaBla|Test2|
}
 ;GUI alle Registerkarten und Buttons
Gui, Add, Text, x20 y50 w200 h15, Allgemein
Gui, Add, Button, Default w130 gbtn1, [E] Events  
Gui, Add, DropDownList, vShortcut_Num gAbfrage, Shortcuts (NUM)||Num 1: Event
Gui Add, Text, x25 y293 w350 h2 +0x10 ; Strich
{ 
WinWaitNotActive, ahk_group Test 
Gui, Destroy
;Gui, Minimize
gosub, TabON
return

}
Gui, Submit
Abfrage: 
if (Shortcut_num= "E: Events")
Gosub, btn1
Return

;############################################################ allgemein
btn1:
winactivate ahk_exe notepad++.exe
send, ^f{raw}Events
send,{Enter}{Esc}{Home}{NumpadDown 5} ; Events 
return
^E::gosub, btn1

Re: Wie ein Eintrag aus DropDownList ansprechen?

Post by gregster » 13 Nov 2019, 11:26

Bekkart wrote:
13 Nov 2019, 11:07
Ah funktioniert doch nicht. (Hatte ein Fehler, sodass ich dachte das würde triggern)....
Wo muss ich die Gui, Submit ergänzen?
Auf jeden Fall bevor du die v-Variable ShortcutÜbersicht in der Subroutine checkst (vgl. meinen Code oben), also z. B. direkt unterhalb des Labels:

Code: Select all

Abfrage:
Gui, Submit  	; optional, wenn die GUI offen bleiben soll:    , NoHide
if (ShortcutÜbersicht= "Eintrag1")
; [...]
else if (ShortcutÜbersicht= "Eintrag 2")
Da sich die Werte ja gegenseitig ausschließen, könnte man bei den folgenden If-Checks else if verwenden (wäre effizienter), oder eben direkt Switch.

Ich hab den Defaulteintrag zur Beschriftung Missbraucht. Den will man quasi nicht anklicken.
Ah so, dann ist ok.

Re: Wie ein Eintrag aus DropDownList ansprechen?

Post by Bekkart » 13 Nov 2019, 11:07

Ah funktioniert doch nicht. (Hatte ein Fehler, sodass ich dachte das würde triggern)....
Wo muss ich die Gui, Submit ergänzen?
Ich schau mir das an.

gregster wrote:
13 Nov 2019, 09:36
Und was machst du, wenn du einfach die Vorauswahl übernehmen willst ? Dann müsstest du trotzdem nochmal explizit auswählen, trotz der Vorauswahl...
Das ist nicht weiter wild. Ich hab den Defaulteintrag zur Beschriftung missbraucht. Den will man quasi nicht anklicken.

Re: Wie ein Eintrag aus DropDownList ansprechen?

Post by Bekkart » 13 Nov 2019, 09:53

gregster wrote:
13 Nov 2019, 09:28
Zu 1: siehe https ahkde.github.io /docs/commands/GuiControls.htm#DropDownList Broken Link for safety : füge || hinter dem designierten Default-Eintrag ein (oder verwende die Choose-Option).

Code: Select all

Gui, Add, DropDownList, vShortcutÜbersicht gEintraggewählt, Eintrag1|Eintrag2||
Danke, funktioniert.
nacken012 wrote:
13 Nov 2019, 09:30
Ich würde es so machen:

Code: Select all

Gui, Add, DropDownList, vShortcutÜbersicht gAbfrage, Eintrag 2||Eintrag1|Eintrag 2
Return

Abfrage:
if (ShortcutÜbersicht= "Eintrag1")
{
Gosub, .........
}

if (ShortcutÜbersicht= "Eintrag 2")
{
Gosub, .........
}

Danke, läuft so.

Re: Wie ein Eintrag aus DropDownList ansprechen?

Post by gregster » 13 Nov 2019, 09:36

Dann brauchst du aber zumindest noch ein Gui, Submit, um die v-Variable zu befüllen.
Und was machst du, wenn du einfach die Vorauswahl übernehmen willst ? Dann müsstest du trotzdem nochmal explizit auswählen, trotz der Vorauswahl...

PS: Man könnte den Default-Button, der auf Enter regiert, natürlich auch verstecken (mit hidden)- reagieren würd' er trotzdem.

Re: Wie ein Eintrag aus DropDownList ansprechen?

Post by nacken012 » 13 Nov 2019, 09:30

Ich würde es so machen:

Code: Select all

Gui, Add, DropDownList, vShortcutÜbersicht gAbfrage, Eintrag 2||Eintrag1|Eintrag 2
Return

Abfrage:
if (ShortcutÜbersicht= "Eintrag1")
{
Gosub, .........
}

if (ShortcutÜbersicht= "Eintrag 2")
{
Gosub, .........
}

Re: Wie ein Eintrag aus DropDownList ansprechen?

Post by gregster » 13 Nov 2019, 09:28

Zu 1: siehe https://ahkde.github.io/docs/commands/GuiControls.htm#DropDownList : füge || hinter dem designierten Default-Eintrag ein (oder verwende die Choose-Option).

Code: Select all

Gui, Add, DropDownList, vShortcutÜbersicht gEintraggewählt, Eintrag1|Eintrag2||

Zu 2: Kommt drauf: wenn du ein Default-Element vorgibst, dann kann natürlich der Auswahlvorgang selbst (als g-Label) nicht sinnvoll genutzt werden als Trigger, denn der Nutzer wird ja gar nicht die DDL anpacken, wenn er den Default-Eintrag will.

Du könntest dann natürlich einen Button hinzufügen für diesen Fall, um die Auswahl bestätigen zu lassen (ein Default-Button akzeptiert auch Enter )

Code: Select all

Gui, Add, DropDownList, vShortcutÜbersicht , Eintrag1|Eintrag2||
Gui, Add, Button, Default gSelection, OK
Gui, Show
return

Selection:
Gui, Submit, NoHide
Switch ShortcutÜbersicht
{
	case "Eintrag1": msgbox 1		; oder   gosub whatever
	case "Eintrag2": msgbox 2 
}
return
(Switch benötigt AHK vv1.1.31+)

Wie ein Eintrag aus DropDownList ansprechen?

Post by Bekkart » 13 Nov 2019, 07:50

Hi,

Code: Select all

Gui, Add, DropDownList, vShortcutÜbersicht, Eintrag1|Eintrag 2
Frage 1: Wie kann ich das Feld beschriften, was default ausgesucht ist? Das dort z.B "Eintrag2" steht?
Frage 2: Wie kann ich das ausgewählte nun mit einem Fehl hinterlegen?

z.B "Eintrag 2"::gosub, btn_1

btn_1
winactivate ahk_exe notepad++.exe
send, ^f{raw}Eintrag 2
send,{Enter}{Esc}{Home} ; dect

Top