Hi,
ich habe 2 GUI's. Wenn ich auf einen
Button klicke möchte ich, dass das
auf GUI1 befindliche Control auf GUI2
verschoben wird. Ist das irgendwie möglich?
MfG
qixx
Hi,
ich habe 2 GUI's. Wenn ich auf einen
Button klicke möchte ich, dass das
auf GUI1 befindliche Control auf GUI2
verschoben wird. Ist das irgendwie möglich?
MfG
qixx
wie wärs mit ausblenden und einblenden?
also wenn button gedrückt wird blendest du auf gui1 aus und auf gui2 ein
Ja, das habe ich auch schon gemacht. xD
Aber dann beziehen sich ja alle Sachen nicht
auf das Control in GUI2, sondern auf GUI1...
So nebenbei, es ist eine ListBox, bald Listview. ![]()
MfG
qixx
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
Global $hGui
$hGui = GUICreate("Haupt GUI", 200, 200, 100, 100)
$Button1 = GUICtrlCreateButton("Button to Move", 10, 10, 100, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
$Button2 = GUICtrlCreateButton("Move Button Test", 10, 40, 100, 21)
GUISetState()
$hGui2 = GUICreate("Neben GUI", 200, 200, -1, -1)
GUISetState()
#Region - GUI SelectLoop
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $Button2
$HandletoMove = GUICtrlGetHandle($Button1)
t($HandletoMove, $hGui2)
GUICtrlSetState($Button1, $GUI_ENABLE)
Case $Button1
MsgBox(0,"Info", "Ich wurde verschoben und funktioniere trotzdem.")
EndSwitch
WEnd
#EndRegion - GUI SelectLoop
Es wird nur schwierigkeiten geben wenn du z.B. mit den erweiterten GUIGetMsg arbeitest. Das Conrol das verschoben wurde, ist nun ein Child der beherbergenden GUI.
Weiter zu beachten ist das du bei _WinAPI_SetParent das Handle des Controls und nicht die ControlID verwendest.
Genau! _WinAPI_SetParent() war das!
Danke! ![]()
MfG
qixx
Raupi : sehr schönes ding ![]()
hätte ich jetz für ein bisschen schwiriger gehalten.
@qixx:bei sowas würde ich in Oneventmodus scripten. dann haste die parent child probleme nicht ![]()
dann haste die parent child probleme nicht
Öhm, welche Probleme meinst du? xD
MfG
qixx
ZitatEs wird nur schwierigkeiten geben wenn du z.B. mit den erweiterten GUIGetMsg arbeitest. Das Conrol das verschoben wurde, ist nun ein Child der beherbergenden GUI.
Also mein GuiGetMsg() ist eigentlich normal. xD
Ich wüsste jetzt auch nicht, was erweitert wäre.
Oder ist der erweitert, wenn man das [advanced]
angibt?
MfG
qixx
99 % der Scipte im Message Loop Mode arbeiten mit normalem GUIGetMsg und nicht mit GUIGetMsg(1) (Advance). Zumindest arbeitest du nicht damit und mußt dir keine Gedanken machen. ![]()
War nur so nebenbei als Anmerkung gedacht. Es soll ja auch vorkommen, das die Lösung auch noch jemand anderes als du benutzt. ![]()
ja es ist erweitert wenn du das advanced angibts.
bzw wenn du es dann auch noch verwendest.
wenn du auf beiden gui's einen button1 hast ist einer von beiden nicht ansprechbar. außer du machst mit guigetmsg(1) einen switch case der beiden gui's
Ah, gut. ![]()
Dann weiß ich das jetzt auch. ![]()
MfG
qixx
Der Advanced Mode von GUIGetMsg macht nur Sinn, um folgende Events pro GUI auszuwerten :
ZitatAlles anzeigen$GUI_EVENT_CLOSE dialog box being closed (either by defined button or system menu).
$GUI_EVENT_MINIMIZE dialog box minimized with Windows title bar button.
$GUI_EVENT_RESTORE dialog box restored by click on task bar icon.
$GUI_EVENT_MAXIMIZE dialog box maximized with Windows title bar button.
$GUI_EVENT_MOUSEMOVE the mouse cursor has moved.
$GUI_EVENT_PRIMARYDOWN the primary mouse button was pressed.
$GUI_EVENT_PRIMARYUP the primary mouse button was released.
$GUI_EVENT_SECONDARYDOWN the secondary mouse button was pressed.
$GUI_EVENT_SECONDARYUP the secondary mouse button was released.
$GUI_EVENT_RESIZED dialog box has been resized.
$GUI_EVENT_DROPPED End of a Drag&Drop action @GUI_DRAGID, @GUI_DRAGFILE and @GUI_DROPID will be used to retrieve the ID's/file corresponding to the involve control.
Zitatwenn du auf beiden gui's einen button1 hast ist einer von beiden nicht ansprechbar. außer du machst mit guigetmsg(1) einen switch case der beiden gui's
Den Advenced Mode braucht man für die Controls selbst nicht, weil der Variablennamen des Controls eindeutig sein muß. 2 Controls mit z.B. dem Variablennamen $Button1 können nicht gleichzeitig existieren.
2 Controls mit z.B. dem Variablennamen $Button1 können nicht gleichzeitig existieren.
öhm und was ist das:
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
Global $hGui
$hGui = GUICreate("Haupt GUI", 200, 200, 100, 100)
$Button1 = GUICtrlCreateButton("Button to Move", 10, 10, 100, 21)
$Button2 = GUICtrlCreateButton("Move Button Test", 10, 40, 100, 21)
GUISetState()
$hGui2 = GUICreate("Neben GUI", 200, 200, -1, -1)
$Button1 = Guictrlcreatebutton("",10, 10, 100, 21)
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $Button2
$HandletoMove = GUICtrlGetHandle($Button1)
_WinAPI_SetParent($HandletoMove, $hGui2)
GUICtrlSetState($Button1, $GUI_ENABLE)
Case $Button1
MsgBox(0,"info", "Ich wurde verschoben und funktioniere trotzdem.")
EndSwitch
WEnd
für die Special events braucht mans natürlich auf jeden fall.
aber $button1 ist ja nur der name einer variable welcher die controlid enthält und wenn diese variable überschrieben wird ist der zuersterstellte button1 halt nicht mehr ansprechbar.
oder etwa nicht?
Zitataber $button1 ist ja nur der name einer variable welcher die controlid enthält und wenn diese variable überschrieben wird ist der zuersterstellte button1 halt nicht mehr ansprechbar.
oder etwa nicht?
Der Button aus Zeile 5 ist überhaupt nicht mehr abfragbar, weil du in Zeile 9 der Variable $Button1 ein neues Conrol zugeordnet hast.
Der 1. Button ist nicht mehr auswertbar für GUIGetMsg, auch nicht im Advanced Mode. ![]()
lol stimmt. überschrieben wird er im advanced ja genauso.
ich glaub gestern abend, bzw heut früh war eindeutig zu lange ![]()
und ich dachte da hatte ich mal was mit childgui's in unterfunktionen mit lokalen variablen. finds aber nichmehr.
ist wohl noch der kater...
Also mit dem "Verschieben auf ein anderes Handle"
klappt alles gut, aber ich möchte gerne Resizing
im 2. GUI nutzen. Das funkrioniert irgendwie nicht. ![]()
Warum? Es geht um eine ListBox.
MfG
qixx
Wo ist der Code zum testen?
Ups, völlig vergessen. ![]()
Den ganzen Code wollte ich jeztz nicht posten,
aber hier mal ein Teil. Ich hoffe, der reicht. xD
$MainGUI = GUICreate($Chat_Name, 490, 465)
$UserList = GUICtrlCreateList("", 360, 40, 121, 357, BitOR($WS_HSCROLL,$WS_VSCROLL,$WS_BORDER))
GUICtrlSetResizing($UserList,$GUI_DOCKSIZE)
$NamenListeGUI = GUICreate("", 138, 465, -1, -1,BitOR($WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU))
[/autoit][autoit][/autoit][autoit]_WinAPI_SetParent(GUICtrlGetHandle($UserList), $NamenListeGUI)
GUICtrlSetPos($UserList, 8, 40, 121, 394)
GUICtrlSetResizing($UserList, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKBOTTOM)
GUISetState(@SW_SHOW, $NamenListeGUI)
Hat denn keiner mehr eine Idee dazu? ![]()
MfG
qixx