Hallo,
ich möchte ein GUI in einer Funktion verwenden. DAbei habe ich jetzt aber das Problem, dass der return-Befehl, der häufig nach dem Erstellen des GUI verwendet wird, um die Benutzereingabe abzuwarten, ja die funktion verlässt.
Gibt es eine Möglichkeit diesen Halbwegs elegant zu ersetzen?
GUI in Funktion
Moderator: jNizM
Re: GUI in Funktion
Moin,
eine 'Standardmethode' ist z.B.
Dafür muss das GUI allerdings in einer zugehörigen Subroutine mit Gui, Destroy zerstört werden.
Je nachdem, wie der reale Ablauf sein soll, sind auch (etwas) andere Lösungen denkbar.
eine 'Standardmethode' ist z.B.
Code: Select all
MyFunc(...) {
...
Gui, Add, ...
Gui, Show, ...
Gui, +LastFound
WinWaitActive
WinWaitClose
Return Result
...
}
Je nachdem, wie der reale Ablauf sein soll, sind auch (etwas) andere Lösungen denkbar.
Re: GUI in Funktion
Hallo,
das Gui wird erstellt, mit ein bissl text und ein paar Radioboxen und einem OK-Button, und nachdem es angezeigt wird soll es warten bis man ok drückt (und natürlich melden welche Radiobox aktiv war).
das Gui wird erstellt, mit ein bissl text und ein paar Radioboxen und einem OK-Button, und nachdem es angezeigt wird soll es warten bis man ok drückt (und natürlich melden welche Radiobox aktiv war).
Re: GUI in Funktion
Moin,
gibt es einen besonderen Grund dafür, dass Du das in einer Funktion verpacken willst? Das 'Gui-in-a-function' Konzept hat einige unangenehme Nebenwirkungen, die ich mir gern erspare.
Wenn Du das brauchst, stell doch mal ein 'konventionelles' Beispiel dafür ein, was Dein Gui-Code konkret tun soll.
gibt es einen besonderen Grund dafür, dass Du das in einer Funktion verpacken willst? Das 'Gui-in-a-function' Konzept hat einige unangenehme Nebenwirkungen, die ich mir gern erspare.
Wenn Du das brauchst, stell doch mal ein 'konventionelles' Beispiel dafür ein, was Dein Gui-Code konkret tun soll.
Re: GUI in Funktion
https://www.autohotkey.com/boards/viewtopic.php?f=76&t=68912
In dem o.g. Thema haben wir eine GUI in eine Klasse verpackt. Evtl. Hilft Dir das ja weiter.
In dem o.g. Thema haben wir eine GUI in eine Klasse verpackt. Evtl. Hilft Dir das ja weiter.
ciao
toralf
toralf
Re: GUI in Funktion
just me wrote: ↑12 Feb 2020, 04:13Moin,
gibt es einen besonderen Grund dafür, dass Du das in einer Funktion verpacken willst? Das 'Gui-in-a-function' Konzept hat einige unangenehme Nebenwirkungen, die ich mir gern erspare.
Wenn Du das brauchst, stell doch mal ein 'konventionelles' Beispiel dafür ein, was Dein Gui-Code konkret tun soll.
Hallo, der Grund ist einfach der, dass ich sehr gern versuche alles in eine Funktion zu packen, damit man es relativ einfach kopieren und woanders einfügen kann.
Ich arbeite viel mit Datenbankabfragen, auslesen von Excel-Dateien, vergleichen bzw. Verrechnen von werten und so weiter. Bei mir ist alles in Funktionen.
Ich hab zum Beispiel die Funktion excelincsv(...) in der eine Excel-Datei geöffnet werden und jede Seite in einer eigenen .csv mit einem bestimmten Namensschema an einen bestimmten Ort gespeichert wird. Diese funktion ist in Bibliothek, sodass ich sie mit jedem Script laden und ausführen kann, und wenn ich einen Bug finde dann muss ich ihn nur in der Bibliothek fixen.
So sieht mein Code bis jetzt aus:
Code: Select all
guierstellen(auftragsnummer,ab,links)
{
Gui, New , Border, Auftrag %auftragsnummer%
Loop, Parse, links, "`n"
{
If A_Index = 1
Gui, Add, Radio, vMeinRadio, %A_LoopField%
If A_Index > 1
Gui, Add, Radio,, %A_LoopField%
}
Gui, Add, Button, Default, OK
Gui, Show
return
ButtonOK:
MsgBox, %links%
Gui, Submit
return MeinRadio
}
GuiClose:
GuiEscape:
ExitApp
Re: GUI in Funktion
Moin,
probier das mal:
probier das mal:
Code: Select all
#NoEnv
Auftragsnummer := "123456789"
Links := "123`n456`n789`nABC`nDEF"
Link := AuswahlGui(Auftragsnummer, 0, Links)
MsgBox, Auswahl = %Link%
ExitApp
AuswahlGui(Auftragsnummer, ab, Links)
{
Static MeinRadio ; Gui Variablen müssen statisch oder global sein!
MeinRadio := 0
Gui, AuswahlGui: +Border +LabelAuswahlGui +LastFound
Loop, Parse, links, "`n"
{
Options := (A_Index = 1) ? "vMeinRadio" : ""
Gui, AuswahlGui:Add, Radio, %Options%, %A_LoopField%
}
Gui, AuswahlGui:Add, Button, Default gAuswahlGuiOK, OK
Gui, AuswahlGui:Show, w300, Auftrag %Auftragsnummer%
WinWaitActive
WinWaitCLose
Return MeinRadio
AuswahlGuiOK:
Gui, Submit
; hier könnte man noch prüfen, ob eine Auswahl getroffen wurde
AuswahlGuiClose:
AuswahlGuiEscape:
Gui, Destroy
Return
}
Who is online
Users browsing this forum: No registered users and 34 guests