ich möchte etwas nur ausführen, wenn ein input feld nicht den focus hat
[autoit]if $ispeed GUICtrlGetState($ispeed) <> $GUI_FOCUS then GUICtrlSetData($ispeed,$was[0])
[/autoit]und ich weiss nicht warum es nicht geht.
ich möchte etwas nur ausführen, wenn ein input feld nicht den focus hat
[autoit]if $ispeed GUICtrlGetState($ispeed) <> $GUI_FOCUS then GUICtrlSetData($ispeed,$was[0])
[/autoit]und ich weiss nicht warum es nicht geht.
Hi, hast du dir das mal in einer MsgBox ausgeben lassen ob es unterschiede gibt ob Focus oder nicht?
Ich weis nicht genau ob sich der Fokus nur auf GUI-Schaltflächen bezieht.
Wenn das ganze nicht sowieso in einer While-Schleife läuft muß der Fokus schon beim Programmstart gesetzt werden, weil das ganze in Script nur einmal ausgeführt wird.
MfG
Der_Doc
If GuiCtrlGetState($ispeed) <> $GUI_FOCUS Then GuiCtrlSetData($ispeed, $was[0])
[/autoit]so ?
Edit:
$GUI_FOCUS Das Steuerelement erhält den Eingabefokus
Denke schon dass es sich NUR auf ein Steuerelement bezieht.
[autoit]
AutoIt-QuellcodeIf GuiCtrlGetState($ispeed) <> $GUI_FOCUS Then GuiCtrlSetData($ispeed, $was[0])
[/autoit]
so ?
hatte ich auch erst gedacht geht aber nicht da das control natürlich mehrere staten (heißt das so???) hat.
es ist ja auch noch $GUI_ENABLE und $GUI_SHOW und wer weiß was noch alles
wie ging nochmal der bitweise vergleich??
If Not GuiCtrlGetState(BitAND($ispeed,$GUI_FOCUS)) = $GUI_FOCUS Then GuiCtrlSetData($ispeed, $was[0])
; oder so
If ControlGetFocus(WinGetHandle("")) <> ControlGetHandle($GUI,"",$ispeed) Then GuiCtrlSetData($ispeed, $was[0])
Alle angaben ohne gewähr
[autoit]If Not GuiCtrlGetState(BitAND($ispeed,$GUI_FOCUS)) = $GUI_FOCUS Then GuiCtrlSetData($ispeed, $was[0])
[/autoit]
; oder so
If ControlGetFocus(WinGetHandle("")) <> ControlGetHandle($GUI,"",$ispeed) Then GuiCtrlSetData($ispeed, $was[0])Alle angaben ohne gewähr
nö beides nicht
irgendwie ist das doof, wenn man sich mich Guictrlgetstate den status überprüft dann hat das Control weder Focus noch keinen Focus
auch nicht wenn man es direkt zuvor auf Focus setzt
'tschudligung. 2te Zeile muss so lauten:
[autoit]If ControlGetHandle("","",ControlGetFocus("")) <> ControlGetHandle($GUI,"",$ispeed) Then GuiCtrlSetData($ispeed, $was[0])
[/autoit]Und hier kannste es direkt testen:
HotKeySet("{-}","_hks")
[/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate("Test",300,200)
$Input = GUICtrlCreateInput("",20,50,150,25)
GUISetState()
While 1
Sleep(10)
WEnd
Func _hks()
If ControlGetHandle("","",ControlGetFocus("")) <> ControlGetHandle($hGUI,"",$Input) Then MsgBox(0,"","Control hat keinen Focus!")
EndFunc
jup so gehts
HotKeySet("{-}","_hks")
[/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate("Test",300,200)
$Input = GUICtrlCreateInput("",20,50,150,25)
GUISetState()
While 1
Sleep(10)
WEnd
Func _hks()
If ControlGetHandle("","",ControlGetFocus("")) <> ControlGetHandle($hGUI,"",$Input) Then MsgBox(0,"","Control hat keinen Focus!" & @CRLF & GUICtrlGetState($Input))
EndFunc
was mich aber gerade mehr beschäftigt ist warum guictrlgetstate "nur" 80 zurückliefert ( 80 enspricht $GUI_SHOW und $GUI_ENABLE)
weiß jemand warum das so ist?
vielen dank ich hab es auch mit bitand probiert, hab auch gemerkt das immer nur 80 bei GUICtrlGetState rausgekommen ist
aber jetzt klappts
vielen dank