Gui control mit funktion als label

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Gui control mit funktion als label

29 Jan 2018, 06:43

Moin,
im zuge eines herumfrickelns ist mir aufgefallen, das es nicht so ohne weiteres möglich zu sein scheint, eine funktion als sprungmarke einer Gui zu nutzen - präziser, einen funktionsnamen schon, doch nicht die funktion in ihrer funktion als funktion (zB mit einem übergabewert)...

Code: Select all

Gui, Add, MonthCall, vdate gfunc, ...
Gui, Add, MonthCall, vdate gfunc(date), ...

func(date){
MsgBox % date
}
Frage: welchen vorteil bietet damit die option eines quasi verstümmelten "funktionsaufruf" gegenüber einem nativen label?? IMHO, irgendwie keinen, oder?
wolf_II
Posts: 2688
Joined: 08 Feb 2015, 20:55

Re: Gui control mit funktion als label

29 Jan 2018, 06:58

Man kann damit z.B. fünf EditBoxes mit derselben Funktion belegen, die dann überwacht ob Zahlen (mit/ohne dezimal "trenner", mit oder ohne Minuszeichen am Anfang) eingegeben werden.
Ich glaube, daß sowas mit Labels nicht geht, weil eine A_ThisCtrl fehlt,


P.S. falls man sich sowas basteln mag, geht's schon, glaub' ich, aber mit Funktionen ist es schöner.
toralf
Posts: 868
Joined: 27 Apr 2014, 21:08
Location: Germany

Re: Gui control mit funktion als label

29 Jan 2018, 17:10

Hi BoBo,

Es hilft sehr, wenn man z.B. Eine Library schreibt, da man dann keine Labels nutzen muss, sondern alles abkapseln kann.

Wolf2: mit Labels ging es auch . Wenn ich mich recht entsinne gibt es a_guicontrol
ciao
toralf
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Gui control mit funktion als label

29 Jan 2018, 18:59

Du könntest z. B. Bind damit verwenden wenn ich mich richtig erinnere.
Recommends AHK Studio
just me
Posts: 9451
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Gui control mit funktion als label

30 Jan 2018, 02:47

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.

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 12 guests