|
You last visited: Today at 07:59
Advertisement
GUICtrlSetData ohne Button
Discussion on GUICtrlSetData ohne Button within the AutoIt forum part of the Coders Den category.
10/11/2011, 15:28
|
#1
|
elite*gold: 0
Join Date: Aug 2011
Posts: 134
Received Thanks: 148
|
GUICtrlSetData ohne Button
Wie schreibe ich das , das ich wenn ich in Input1 was schreibe das sich das DIREKT in Label2 übertragen wird
Code:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("F", 301, 35, 302, 218)
$Input1 = GUICtrlCreateInput("", 8, 8, 121, 21)
GUICtrlSetLimit(-1, 17)
$Label1 = GUICtrlCreateLabel(">", 136, 8, 10, 17)
$Label2 = GUICtrlCreateLabel(" ", 152, 8, 143, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
|
|
|
10/11/2011, 16:38
|
#2
|
elite*gold: 0
Join Date: Aug 2010
Posts: 880
Received Thanks: 113
|
PHP Code:
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit
EndSwitch if guictrlread($input1) <> GUICtrlRead($label1) Then GUICtrlSetData($Label1, GUICtrlRead($Input1)) endif
WEnd
|
|
|
10/11/2011, 17:28
|
#3
|
elite*gold: 0
Join Date: Aug 2011
Posts: 134
Received Thanks: 148
|
Dankii ^-^ #ThanksGive
|
|
|
10/11/2011, 17:41
|
#4
|
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
|
Ugh, das ist aber eine ziemlich hässliche Lösung..
Schöner und performanter wäre es, wenn du ein Callback für WM_COMMAND registrierst und die Nachricht der Editbox selbst abfängst:
Code:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("F", 301, 35, 302, 218)
$Input1 = GUICtrlCreateInput("", 8, 8, 121, 21)
GUICtrlSetLimit(-1, 17)
$Label1 = GUICtrlCreateLabel(">", 136, 8, 10, 17)
$Label2 = GUICtrlCreateLabel(" ", 152, 8, 143, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUIRegisterMsg($WM_COMMAND, "MsgCallback")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func MsgCallback($hWnd, $Msg, $wParam, $lParam)
Switch $Msg
Case $WM_COMMAND
If $wParam = BitShift($EN_CHANGE, -16) + $Input1 Then
GUICtrlSetData($Label2, GUICtrlRead($Input1))
EndIf
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
|
|
|
10/11/2011, 17:49
|
#5
|
elite*gold: 52
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
|
Wieso so umständlich?
PHP Code:
#include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $Form2 = GUICreate("F", 301, 35, 302, 218) $Input1 = GUICtrlCreateInput("", 8, 8, 121, 21) GUICtrlSetLimit(-1, 17) $Label1 = GUICtrlCreateLabel(">", 136, 8, 10, 17) $Label2 = GUICtrlCreateLabel(" ", 152, 8, 143, 20) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ###
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit
EndSwitch WEnd
Func WM_COMMAND($hWinHandle, $iMsg, $wParam, $lParam) $controlID = BitAND($wParam, 0x0000FFFF) If $controlID = $Input1 Then GUICtrlSetData($Label1, GUICtrlRead($Input1)) EndIf EndFunc
|
|
|
10/11/2011, 18:09
|
#6
|
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
|
Wieso umständlich?
Hatte überlesen, dass wenn kein Return ausgeführt, automatisch zum AutoIt Handler zurückgesprungen wird, also ist das "Return $GUI_RUNDEFMSG" überflüssig.
Da der MsgHandler aber auch für andere Nachrichten registriert werden kann, habe ich vollständigkeitshalber abgefragt, ob es sich um die gewollte Nachricht handelt.
Und den Notification Code habe ich überprüft, damit der Text nicht wie in deinem Codeschnipsel unnötigerweise kopiert wird, wenn die EditBox z.B. den Fokus erhält.
|
|
|
10/11/2011, 21:42
|
#7
|
elite*gold: 0
Join Date: Oct 2010
Posts: 51
Received Thanks: 12
|
Ich finde diese Art von "GUI Message abfragen" sehr interessant. Man kann sich doch damit die While Schleife, die Koda erstellt, sparen (zumindest halb):
Code:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 142, 54, 211, 122)
$Input1 = GUICtrlCreateInput("Input1", 8, 8, 121, 21)
$Label1 = GUICtrlCreateLabel("Label1", 8, 36, 36, 17)
$Button1 = GUICtrlCreateButton("Button1", 46, 32, 60, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
While 1
sleep(25)
If GUIGetMsg() = $GUI_EVENT_CLOSE then exit
WEnd
Func WM_COMMAND($hWinHandle, $iMsg, $wParam, $lParam)
MsgBox(4096, "", "$wParam = " & $wParam)
Switch $iMsg
Case $WM_COMMAND
Switch $wParam
Case 0x04000003
MsgBox(4096, "", "Input1 wurde betätigt")
GUICtrlSetData($Label1, GUICtrlRead($Input1))
Case 0x00000004
MsgBox(4096, "", "Label 1 wurde betätigt!")
Case 0x01000003
MsgBox(4096, "", "Form 1 wurde maximiert!")
Case 0x02000003
MsgBox(4096, "", "Form1 wurde minimiert!")
Case 0x00000005
MsgBox(4096, "", "Button1 wurde betätigt!")
EndSwitch
EndSwitch
EndFunc
Nur wird die Funktion halt nicht aufgerufen wenn man auf den Beenden Button klickt.
Habt ihr dazu evtl irgendwo Lektüre? Also iwelche Tutorials oder Websiten dazu?
|
|
|
10/11/2011, 22:30
|
#8
|
elite*gold: 52
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
|
Soweit ich weis geht es nicht, da das Script pausiert wird wenn irgendeine Notification stattfindet.
Bin mir an der Stelle aber nicht wirklich sicher.
Wenn eine weitere Notification stattfindet sollte sich Beispielsweise wenn man Exit benutzt sich das Script schließen
|
|
|
10/12/2011, 00:36
|
#9
|
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
|
Die Möglichkeit ein Callback für WM_CLOSE zu registrieren scheint wohl nicht implementiert zu sein.. Jedenfalls wird es nicht weitergeleitet.
Du könntest aber WM_SYSCOMMAND benutzen:
Code:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiButton.au3>
Global Const $SIZE_MAXIMIZED = 2
Global Const $SIZE_MINIMIZED = 1
Global Const $SC_CLOSE = 0xF060
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 142, 54, 211, 122, $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX + $WS_CAPTION + $WS_POPUP + $WS_SYSMENU)
$Input1 = GUICtrlCreateInput("Input1", 8, 8, 121, 21)
$Label1 = GUICtrlCreateLabel("Label1", 8, 36, 36, 17)
$Button1 = GUICtrlCreateButton("Button1", 46, 32, 60, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUIRegisterMsg($WM_COMMAND, "MsgCallback")
GUIRegisterMsg($WM_SIZE, "MsgCallback")
GUIRegisterMsg($WM_SYSCOMMAND, "MsgCallback")
While 1
Sleep(100)
WEnd
Func MsgCallback($hWnd, $Msg, $wParam, $lParam)
Switch $Msg
Case $WM_COMMAND
Switch $wParam
Case BitShift($EN_CHANGE, -16) + $Input1
GUICtrlSetData($Label1, GUICtrlRead($Input1))
Case BitShift($BN_CLICKED, -16) + $Button1
MsgBox(0, "", "Button")
Case BitShift($BN_CLICKED, -16) + $Label1
MsgBox(0, "", "Label")
EndSwitch
Case $WM_SIZE
Switch $wParam
Case $SIZE_MAXIMIZED
MsgBox(0, "", "Maximiert")
Case $SIZE_MINIMIZED
MsgBox(0, "", "Minimiert")
EndSwitch
Case $WM_SYSCOMMAND
If $wParam = $SC_CLOSE Then Exit
EndSwitch
EndFunc
|
|
|
 |
Similar Threads
|
GUiCtrlSetData
09/18/2011 - AutoIt - 5 Replies
Hey Com,
nochmal ne frage, versuche einen Text aus Ini auszulesen:
Versionsinfos="Data1|Data2|Data3"
und diesen dann mit Leerzeichen zwischen den einzelnen gesplitteten Daten in das Label eintrage soll, allerdings funktioniert es nicht, aber es kommt auch kein Fehler...
|
guictrlsetdata()
05/24/2011 - AutoIt - 1 Replies
HI,
wie kann ich was in einem Tabsheet/Tab item schreiben lassen??
Guictrlsetdata($tab1, ""&" .Login Game")
Wird nicht angezeigt. Nur wenn ich mit dem AutoIT window info tool rübergehe zeigt es mir an dass da doch was steht ich kanns aber nicht sehen...
|
Einen Button ohne Link anklicken.
12/31/2010 - AutoIt - 2 Replies
Mein Script
#include<IE.au3>
$seite = ("votefortheserver.tk")
$oIE = _IECreate ( "www.surf-web-safely.com" )
$oForm = _IEFormGetCollection ( $oIE, 0)
$oSeite = _IEFormElementGetObjByname ( $oForm , "u" )
_IEFormElementSetValue ( $oSeite, $seite)
_IEFormSubmit ( $oForm )
|
button ohne form?
10/24/2010 - AutoIt - 10 Replies
Hi
kann man ein button i-wie machen das er da ist ohne form?
|
Button ohne rand + ein/aus
02/10/2010 - AutoIt - 10 Replies
hai leuts
ich bin mal wieder am cooden und möchte gerne einen button haben, welcher 1. den gepunkteten rand nicht hat (immer wenn man ein button anklickt gibts doch so einen gepunkteten rand ... den will ich weg ^^)
und 2. sollte er wenn man drauf klick "drinne bleiben" also gedrückt bleiben und wenn man nochmal drauf klick, sollte er wieder raus gehen ^^
ich hoffe ihr versteht was ich meine.
hab mir in der help datei die parameter angeschaut... aber i-wie nix gesehen ^^
wär suppi...
|
All times are GMT +1. The time now is 08:01.
|
|