Gui, Submit - Mache ich was falsch?

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

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

Gui, Submit - Mache ich was falsch?

08 Jun 2017, 20:01

Huhu zusammen, ich hab mal wieder so´n Problemchen...

Ich habe ein Gui mit einem Edit Control, das über eine Variable und ein Sprunglabel verfügt.

Code: Select all

    Gui, MeinGUI: Add , Edit    , x10  y260 w780 h30 cC0FFFF gCHECK vINPUT,
    ..
    ..
    ..

    Gui, MeinGui: Show... (blabla, Ihr kennt das ja)
    Return
    
    
    
    CHECK:
    Gui, MeinGUI: Submit, NoHide
    If RegExMatch(INPUT, "^(\d{1})-([a-fA-F0-9]{4})-([a-fA-F0-9]{10})$") = 0
        GuiControl, MeinGUI: +cFF0000  , INPUT
    else
        GuiControl, MeinGUI: +cFFFFFF  , INPUT
    Return
Ich möchte das Editfeld umfärben (rot), um anzuzeigen, dass der User eine
unvollständige Eingabe gemacht hat. Das Muster ist hierbei '1-1234-1234567890',
d.h. also eine Zahl, dann ein Minus, dann eine 4 stellige Zahl, wieder ein Minus und eine 10 stellige Zahl.
Erst wenn diese Bedingung erfüllt ist, soll die Schrift wieder weiß werden.
Die Zahlen können dabei auch HEX Werte sein. Diese Abfrage klappt an sich so weit, aaaaaber...

Solange ich Text eingebe, wird 'CHECK' nach jedem Zeichen korrekt aufgerufen.
Ich gebe also ein 1-1234-1234567890... und das Feld bleibt rot.
Erst wenn ich noch ein Zeichen eingebe, es dann wieder lösche ODER mit der Maus
über das Editfeld fahre ohne zu klicken, ändert sich die Schrift, als würde die Sprungmarke erst
später und nicht direkt nach der Eingabe aufgerufen werden.

Mache ich einen Denkfehler? Ich würde, wenn, am ehesten auf RegExMatch tippen,
da dies bei mir, wie bei so vielen anderen ein Steckenpferd ist. Wirklich kapieren
werde ich das wohl nie XD

Bis denne und danke im Voraus,

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

Re: Gui, Submit - Mache ich was falsch?

09 Jun 2017, 01:26

Moin,

an sich machst Du gar nichts falsch. Ich denke sogar, dass AHK hier etwas falsch macht. Offenbar wird das Control nach Änderung der Textfarbe nicht automatisch neu gezeichnet. So siehst Du beim Tippen die Änderung erst, wenn eine weitere Eingabe dafür sorgt, dass das Control neu gezeichnet wird. Du kannst das Neuzeichnen aber auch selbst erzwingen, z.B.:

Code: Select all

    CHECK:
    Gui, MeinGUI: Submit, NoHide
    If RegExMatch(INPUT, "^(\d{1})-([a-fA-F0-9]{4})-([a-fA-F0-9]{10})$") = 0
        GuiControl, MeinGUI: +cFF0000  , INPUT
    else
        GuiControl, MeinGUI: +cDefault  , INPUT
    GuiControl, +Redraw, INPUT ; Control neu zeichnen - 'MeinGUI' wird automatisch als Standard-GUI für dieses Label gesetzt
    Return
Anmerkungen:
  1. In einer Routine, die ausschließlich den Inhalt eines Controls prüft, würde ich anstelle von Gui, Submit, ... GuiControlGet, INPUT verwenden. Wenn das GUI viele Controls enthält, ist das für AHK 'weniger anstrengend'.
  2. RegEx: (\d{1}) ist 'doppelt gemoppelt', weil \d allein schon für "genau eine Ziffer" steht. In jedem Fall kann so das erste Zeichen nicht hexadezimal A-F sein.
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Gui, Submit - Mache ich was falsch?

09 Jun 2017, 02:25

Moinsen,

ich habe nur das wichtigste aus dem GUI gepostet, da es sehr viele Elemente hat.
Daher benutze ich auch Gui, Submit, Nohide.

Genau den Eindruck hatte ich, dass es nicht aktualisiert wird.
Na dann versuche ich Deinen Tipp. Dank Dir.

Mit RexEx hast DU natürlich Recht, es IST doppelt gemoppelt. Danke auch dafür.

Gucky.

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 35 guests