Hallo @all,
habe wieder ein kleines Problem
Habe ein Tab mit mehreren Tab Items erstellt.
Nun möchte ich über das Tab und alle Tabitems ein Label einblenden. z.B. mit dem Text "läuft... Bitte warten."
Wie kann ich das machen?
Danke und Gruß
Herra
Hallo @all,
habe wieder ein kleines Problem
Habe ein Tab mit mehreren Tab Items erstellt.
Nun möchte ich über das Tab und alle Tabitems ein Label einblenden. z.B. mit dem Text "läuft... Bitte warten."
Wie kann ich das machen?
Danke und Gruß
Herra
Erstelle einfach eine andere GUI (z.B. im WM_POPUP-Style) und blende sie solange ein, wie der Vorgang läuft.
Hi BugFix,
das wäre eine Idee
Kann ich diese dann an die erste Gui binden, damit sie sich zusammen verschieben lassen?
cu Herra
Kann ich diese dann an die erste Gui binden, damit sie sich zusammen verschieben lassen?
Ja, erstelle diese GUI als Child zur Haupt-GUI.
Wie würde das den aussehen. Laut Hilfe:
$WS_POPUP = Erzeugt ein Pop-up-Fenster. Dieser Stil kann nicht gemeinsam mit dem Stil WS_CHILD verwendet werden.
Gruß Herra
Ist mir nie aufgefallen, dass das nicht ginge
Einfach als _EX_MDICHILD erstellen
Hier das Bsp.:
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
$guiMain = GUICreate('Main', 400, 300, -1, -1, Default, $GUI_WS_EX_PARENTDRAG)
$btShow = GUICtrlCreateButton('Zeige Child', 150, 100, 100, 20)
$guiChild = GUICreate("Child", 200, 150, 100, 75, $WS_POPUP, $WS_EX_MDICHILD, $guiMain)
GUISetBkColor(0xFFFF00)
GUICtrlCreateLabel('In Arbeit...', 20, 40)
GUICtrlSetBkColor(-1, 0xFFFF00)
GUISetState(@SW_SHOW, $guiMain)
[/autoit][autoit][/autoit][autoit]$timer = 0
While True
If TimerDiff($timer) >= 3000 Then GUISetState(@SW_HIDE, $guiChild) ; 3 Sekunden nach Anzeige Child beenden
Switch GUIGetMsg()
Case -3
Exit
Case $btShow
GUISetState(@SW_SHOW, $guiChild)
$timer = TimerInit()
EndSwitch
WEnd
Niemand hat geschrieben, daß du WM_POPUP benutzen MUSST!
Eine der 1000 Möglichkeiten...
#include <WindowsConstants.au3>
$maingui=guicreate("MainGui verschieben")
guisetstate()
$childgui=guicreate("ChildGui folgt dem MainGui",200,200,default,default,$DS_MODALFRAME+$DS_SETFOREGROUND,-1,$maingui)
guisetstate()
Do
if WinExists($childgui) then
$pos=WinGetPos($maingui)
winmove($childgui,"",$pos[0]+100,$pos[1]+100)
endif
until guigetmsg()=-3
oder
#include <WindowsConstants.au3>
$maingui=guicreate("MainGui verschieben")
guisetstate()
$childgui=guicreate("ChildGui folgt dem MainGui",200,200,default,default,$DS_MODALFRAME+$DS_SETFOREGROUND,$WS_EX_MDICHILD,$maingui)
guisetstate()
Do
until guigetmsg()=-3
/EDIT/ kann mir mal jemand verständlich erklären, warum in der Vorschau meines Antwortpostings neuerdings die inzwischen geposteten Antworten nicht erscheinen? Dann bräuchte ich meine nämlich nicht abzuschicken...
Danke euch. Auf die Idee bin ich irgendwie nicht gekommen
Eine Frage hätte ich dennoch: Wie kann ich nun das Maingui sperren, damit es nicht geändert werden kann, aber immer noch verschiebbar bleibt.
Es so lange "gesperrt" bleiben, bis das Child Fenster verschwindet.
GUISetState(@SW_DISABLE, $Maingui) deaktiviert den Gui ganz und kann nicht mehr verschoben werden.
Auf GUISetState(@SW_LOCK, $Maingui) reagiert die Gui leider nicht. Ich kann trotzdem alles ändern.
Danke und Gruß
Herra
Auf GUISetState(@SW_LOCK, $Maingui) reagiert die Gui leider nicht.
das sollte normal schon gehn.
poste doch mal deinen code bitte
Also irgendwie verhält es sich ganz komisch.
Sobald ich den script starte, passiert folgendes:
1. Der Button und die ComboBox können angklickt werden, also wurden diese nicht gelockt.
Die Input Box ist nicht beschreibbar.
2. Sobald ich das main Fenster bewege bzw. verschiebe kann ich alle 3 Controls benutzen und nichts ist mehr gelockt.
Ich könnte natürlich alle Controls einzeln deaktivieren, aber es gibt leider zu viele im Script.
Was mache ich falsch? Oder habe ich einen Denkfehler begangen?
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Main = GUICreate('Hauptfenster', 510, 450, -1, -1)
$b_test = GUICtrlCreateButton('Lock Test', 100, 20, 100, 20)
$edit = GUICtrlCreateInput('', 210, 20, 100, 20)
$combo = GUICtrlCreateCombo('text1', 320, 20, 100, 20)
GUICtrlSetData(-1, 'text2|text3')
$Child = GUICreate('Bitte warten', 440, 120, 30, 220, $DS_Modalframe+$DS_SETFOREGROUND+$WS_DISABLED, $WS_EX_MDICHILD, $Main)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]GUISetState(@SW_SHOW, $Main)
GUISetState(@SW_SHOW, $Child)
GUISetState(@SW_LOCK, $Main)
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $b_test
MsgBox(0, '', '@SW_LOCK hat nicht funktioniert!!!')
EndSwitch
WEnd
achso meinst du das.
mit sw_lock werden meines wissens nur die veränderungen gesperrt: heißt soviel wie: du kannst in ein input/edit nichts mehr eingeben. aber buttons sind noch aktiv.
würde es dir helfen einfach alle controls auf disabled zu setzen?
würde z.B. so gehen:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Main = GUICreate('Hauptfenster', 510, 450, -1, -1)
$b_test = GUICtrlCreateButton('Lock Test', 100, 20, 100, 20)
$edit = GUICtrlCreateInput('', 210, 20, 100, 20)
$combo = GUICtrlCreateCombo('text1', 320, 20, 100, 20)
GUICtrlSetData(-1, 'text2|text3')
$Child = GUICreate('Bitte warten', 440, 120, 30, 220, $DS_Modalframe+$DS_SETFOREGROUND+$WS_DISABLED, $WS_EX_MDICHILD, $Main)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]GUISetState(@SW_SHOW, $Main)
GUISetState(@SW_SHOW, $Child)
For $i = $b_test to $combo
GUICtrlSetState($i, $GUI_DISABLE)
Next
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $b_test
MsgBox(0, '', '@SW_LOCK hat nicht funktioniert!!!')
EndSwitch
WEnd
Hallo Schnitzel,
Werde es dann so umsetzen. Hoffe die Deaktivierung aller Controls verlangsamt das Script nicht zu sehr.
Danke euch allen für die Hilfe.
cu Herra