Hey,
hab ein Problem
In einer Eingabemaske, bestehend aus mehreren Input's, soll der Inhalt geprüft werden (Beispiel: Input2 darf nur Zahlen enthalten oder ähnliches).
Am sinnvollsten wäre es (denke ich mal ) sobald der Fokus vom Input genommen wird gleich den Inhalt zu prüfen.
Laut googel ist die Windows Message WM_Command dafür geeignet, es wird auch eine Message ausgegeben sobald der Fokus geändert wird!
Leider werden ich aus der Dokumentation nicht schlau, was genau ist die Message für einen Fokus wechsel? Wie kann ich diese Message den einzelen Controls zuweisen?
Beispiel:
Spoiler anzeigen
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>
#include <StructureConstants.au3>
#include <WinAPI.au3>
$sHeader = "Input1|Input2|Input3"
Global $hGui = GUICreate("", 400, 400, -1, -1)
Global $aHeader = StringSplit($sHeader, '|') ; Überschriften-Array
Global $aNew[$aHeader[0]] ; Array für die Input-IDs
Global $aInputWidth[$aHeader[0]] = [100, 100, 100] ; hier die Länge (in Pixel) der Inputfelder eintragen
Global $xPos = 20
For $i = 1 To $aHeader[0]
GUICtrlCreateLabel($aHeader[$i], $xPos + 2,200, 110, 20) ; Überschriften-Label erstellen
GUICtrlSetFont(-1, 8, 400, 0, 'Verdana') ; Schriftgröße und -art der Überschriften festlegen
$aNew[$i - 1] = GUICtrlCreateInput("", $xPos, 220, $aInputWidth[$i - 1], 20, Default, $WS_EX_STATICEDGE) ; Eingabefelder erstellen
GUICtrlSetFont(-1, 10, 600, 0, 'Verdana') ; Schriftgröße und -art der Eingabefelder festlegen
$xPos += $aInputWidth[$i - 1] + 5
Next
GUISetState(@SW_SHOW, $hGui)
GUIRegisterMsg($WM_Command ,"WM_COMMAND")
While 1
$nMsg = GUIGetMsg(1) ; Message-Event holen (1) = erweiterter Modus
Switch $nMsg[0] ; anhand der Control-ID das entsprechende Case aufrufen
[/autoit] [autoit][/autoit] [autoit]#Region Schließen
Case $GUI_EVENT_CLOSE ; User hat auf das Schließen-Symbol geklickt (bzw. die ESC-Taste gedrückt)
Switch $nMsg[1] ; erweiterte Abfrage für welches Fenster
Case $hGui ; User will das Hauptfenster schließen
exit
EndSwitch
[/autoit] [autoit][/autoit] [autoit]#EndRegion Schließen
EndSwitch
WEnd
[/autoit] [autoit][/autoit] [autoit]Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
MsgBox(1, "", $iwParam)
EndFunc ;==>WM_COMMAND
;jedes Input soll, sobald es den Fokus verliert mit einer anderen Funktion überprüft werden.
Func _Checkinput1()
;
Endfunc
Func _Checkinput2()
;
Endfunc
Func _Checkinput3()
;
Endfunc
Wäre super wenn mir dazu auch jemand erklären könnte wo man selbst nachlesen kann wie die verschiedenen Messagecodes zu behandeln sind.
Gruß nuts