Aktives Control ermitteln (Listview)

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
Gucky_87
Posts: 276
Joined: 03 Jul 2014, 05:09

Aktives Control ermitteln (Listview)

Post by Gucky_87 » 14 May 2018, 05:55

Mahlzeit zusammen,

kurz und gut, man kann ja z.B. mit

Code: Select all

Gui, 1: Listview, AUSGABE_1
das ListView "Ausgabe_1" als aktuelles Listview wählen.

Wie aber kann ich abfragen, welches das aktuelle Listview ist?
Irgendwie steh ich auf´m Schlauch... :/

Ich habe ein GUI mit 4 LVs und möchte herausfinden, welches das Jenige ist, in dem der User gerade herum klickt.

Danke im Voraus,

Gucky.
User avatar
gregster
Posts: 1390
Joined: 30 Sep 2013, 06:48

Re: Aktives Control ermitteln (Listview)

Post by gregster » 14 May 2018, 10:43

Gucky_87 wrote:Wie aber kann ich abfragen, welches das aktuelle Listview ist?
Das aktuell gesetzte Default-ListGui bekommst du über A_DefaultListView [AHK v1.1.23+].
...möchte herausfinden, welches das Jenige ist, in dem der User gerade herum klickt.
Das hört sich doch eher nach einem Einsatz für ein g-Label an und A_GuiControl an - Beispiel mit 2 ListViews:

Code: Select all

Gui, Add, ListView, r20 w700 gMyListView vAusgabe_1 AltSubmit, Time|Action
Loop, 5
    LV_Add("", A_Now+A_Index, "blablabla")
LV_ModifyCol()

Gui, Add, ListView, r20 w700 gMyListView vAusgabe_2 AltSubmit, Time|Action
Loop, 3
 	LV_Add("", A_Index+1, "blabla")
LV_ModifyCol()  
Gui, Show
return
MyListView:
if (A_GuiEvent = "Normal")		; um einen einfachen Linksklick zu registrieren, muss AltSubmit hinzugefügt worden sein
{ 
	Gui, Listview, % A_GuiControl
	LV_GetText(RowText, A_EventInfo)
    msgbox % A_Guicontrol "     Zeile:" A_EventInfo "    Text, 1.Spalte:  " RowText
}
return

a::msgbox % A_DefaultListView	; nennt aktuelles Standard-Listview
Esc::ExitApp
(siehe auch https://autohotkey.com/docs/commands/Li ... _Secondary zu A_GuiEvent)
User avatar
Gucky_87
Posts: 276
Joined: 03 Jul 2014, 05:09

Re: Aktives Control ermitteln (Listview)

Post by Gucky_87 » 15 May 2018, 09:54

Lieben Dank, genau DAS hab ich gesucht.
Das mit den ListViews spielt an sich, nur schrieb mein Script immer mal wieder
Werte in die falsche Tabelle, wenn diese zuvor vom User angeklickt wurde und
"Gui, 1: Listview, AUSGABE_1" wollte ich nicht im Loop aufrufen, denn das kostet
unnötig Zeit und ich besch... eiden programmiert ;D

A_DefaultListView hieß es. Mööönsch, da muss ich mich ja fast für schämen :/
Aber ich hab echt nicht dran gedacht.

Gruß,

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

Re: Aktives Control ermitteln (Listview)

Post by just me » 16 May 2018, 03:58

Gucky_87 wrote:Das mit den ListViews spielt an sich, nur schrieb mein Script immer mal wieder
Werte in die falsche Tabelle, wenn diese zuvor vom User angeklickt wurde und
"Gui, 1: Listview, AUSGABE_1" wollte ich nicht im Loop aufrufen, denn das kostet
unnötig Zeit und ich besch... eiden programmiert ;D
Nur als Hinweis für Andere, die über diesen Beitrag stolpern:
Der User kann klicken wo und wie er will. Er ändert damit nicht das ListView-Control, auf das sich die LV_...() Funktionen beziehen. Das muss man in AHK 1 innerhalb des Skripts per Anweisung Gui, ListView, ... schon selbst tun. Und wenn man das tut, kann man es auch sehr einfach wieder 'zurückdrehen', wenn Ausgaben immer in einem bestimmten ListView landen sollen. Dessen Name sollte dem Skript ja bekannt sein.
User avatar
Gucky_87
Posts: 276
Joined: 03 Jul 2014, 05:09

Re: Aktives Control ermitteln (Listview)

Post by Gucky_87 » 16 May 2018, 09:40

@ justme:
Danke für diesen wichtigen Hinweis.
Du hast mich dadurch auf einen kleinen Logikfehler in meinem Script aufmerksam gemacht.
Der Fehler lag tatsächlich in der Reihenfolge der Gui, ListView... Kommandos.

Fälschlicherweise wurde in einer Subroutine dieser Wert geändert, nicht aber wieder zurückgestellt, sodass sich meine obige Anfrage damit an sich erledigt hat und ich zunächst dachte, es läge daran, dass ich ein LV per Maus aktiviere.

Dennoch ist es gut zu wissen, dass man auch das abfragen kann.

Grüße,

Gucky.
just me
Posts: 5510
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Aktives Control ermitteln (Listview)

Post by just me » 16 May 2018, 10:06

Moin Gucky,

AHK und ListViews (und auch TreeViews) sind ein recht zwiespältiges Paar. Als ich mit AHK angefangen habe, hat es eine ganze Weile gedauert, bis ich mich an dieses Control herangetraut habe. Im Vergleich mit der 'normalen' Kommandosyntax für die anderen Controls wirken ListView und TreeView wie Fremdkörper. Schon die Tatsache, dass man sie über Funtionen und damit per 'Expressionsyntax' ansprechen muss, kann für einen Einsteiger verwirrend sein.

Warum das Zielcontrol in den LV_...() Funktionen nicht als Parameter angegeben werden kann, war für mich nie nachvollziehbar. Ich verstehe auch bis heute nicht, warum in einer einem ListView zugewiesenen Subroutine (g-Label) das auslösende ListView-Control nicht automatisch zum 'DefaultListView' wird.

Ich hatte schon immer den Eindruck, dass ListVIew und TreeView ohne Rücksicht auf die wahrscheinlich schon vorher vorhandenen GuiControl... Kommandos von einem anderen Entwickler implementiert wurden.
Post Reply

Return to “Ich brauche Hilfe”