Moin,
ich habe darüber mal mit lexikos gesprochen. Er sagte, das die "Labelfunktionen" mit genau diesen Parametern
auch als vorbereitende Maßnahme für den Umstieg auf AHK v2 eingebaut wurden. In AHK v1.1 stehen innerhalb der Funktionen auch die
A_Variablen zur Verfügung. In AHK v2 gibt es die nicht mehr.
Code: Select all
Gui, Main: Add, Edit, w400 h400 vEdit gEditFunc
Gui, Main: Show, , Test
Return
MainGuiClose:
ExitApp
EditFunc(CtrlHwnd, GuiEvent, EventInfo, ErrLevel := "") {
ToolTip, CtrlHwnd: %CtrlHwnd%`nA_GuiControl: %A_GuiControl%`nA_Gui: %A_Gui%
}
Man kann einer "Labelfunktion" auch zusätzliche Parameter übergeben. Dafür muss man ein
BoundFunc-Objekt bemühen. Die Hilfe sagt dazu.
[b]Speichern von und Reagieren auf Benutzereingaben[/b] wrote:[v1.1.20+]: Wenn der Labelname ungültig ist, wird er stattdessen als Funktionsname angesehen.
Alternativ kann man via GuiControl ein Funktionsobjekt mit einem Steuerelement verbinden. Die Funktion akzeptiert folgende Parameter (wenn man in diesem Fall gCtrlEvent in den Optionen verwendet):
Code: Select all
CtrlEvent(CtrlHwnd, GuiEvent, EventInfo, ErrLevel:="")
[b]GuiControl -> +/-Option1 +/-Option2 ...[/b] wrote:[v1.1.20+]: Um ein Funktionsobjekt zum Behandeln von Ereignissen des Steuerelements zu setzen, muss Param3 ein einzelner Variablenverweis sein, wie es in den folgenden beiden Beispielen gezeigt wird. Andere Ausdrücke, die Objekte zurückgeben, werden zurzeit nicht unterstützt.
Code: Select all
GuiControl +g, SteuerelementID, %FunkObj%
GuiControl +g, SteuerelementID, % FunkObj
Beispiel:
Code: Select all
Gui, Add, MonthCall, vDate, ...
Param := 42
LabelFunc := Func("MCFunc").Bind(Param)
GuiControl, +g, Date, % LabelFunc
...
MCFunc(Param, CtrlHwnd := "", GuiEvent := "", EventInfo := "", ErrLevel := ""){
MsgBox % Param
}
Der Inhalt des
Bind Parameters wird aber bereits aufgelöst, wenn das
BoundFuncObject erstellt wird. Das bedeutet, man übergibt einen konstanten Wert.