Auch Gratulation von mir.
Gilt übrigens auch für „HassanMullah (44)“ ![]()
Auch Gratulation von mir.
Gilt übrigens auch für „HassanMullah (44)“ ![]()
Vielen Dank dafür Mega. Ich werd mal schauen was ich zum schluss dann nehme, bzw. was besser in der Handhabung ist. Danke soweit ![]()
Hallo Com,
ich arbeite momentan mit der UDF von 'peethebee': RestrictControlRegExp-UDF - Fehleingaben direkt verhindern, Eingabentypen festlegen und habe auch schon mit ihm gesprochen gehabt.
Mein Anliegen: Ich habe einen einzeiligen Input Ctrl indem eine Uhrzeit eingegeben werden soll. D.h. die UDF soll nach 2 Zeichen automatisch ein Zeichen einfügen.
Die Variante einfach 2 InputCtrls zu nehmen ist mir bekannt aber mir wäre wenn möglich die kleine Anpassung der UDF 1000x lieber.
Wahrscheinlich muss in der
[autoit]Func _RegEx_RestrictControl_check($hWnd, $msg, $wParam, $lParam)
[/autoit]etwas hinzugefügt werden.
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include "RestrictControlRegExp.au3"
_RegEx_RestrictControl_setup (1) ; prepare for up to 20 Controls to restrict
[/autoit] [autoit][/autoit] [autoit]Global $hGUI = GUICreate("", 120, 50)
Global $hINPUT = GUICtrlCreateInput("", 10, 5, 100, 20, $ES_WANTRETURN)
_RegEx_RestrictControl_add ($hINPUT, "^[012]{1}[0-9]{1}\:[0-6]{1}[0-9]{1}$", "13:37")
GUISetState(@SW_SHOW, $hGUI)
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit", $hGUI)
; Wechsle in den OnEvent Modus
Opt("GUIOnEventMode", 1)
; Schleife
While 1
Sleep(100) ; beschäftigen, damit die CPU-Auslastung nicht zu hoch geht
WEnd
Func _exit()
Exit
EndFunc ;==>_exit
Mache ich aus:
; ===============================================================================
;
; UDF Name: RestrictControlRegExp.au3
; Description: This UDF can restrict the text typed into input controls live
; while typing based on a given Regular Expression.
; Requirement: AutoIt 3.2.0.1 or higher
; Author: peethebee ([email='peethebee@gmx.de'][/email], http://www.autoit.de)
; Notice: based on a script by gafrost in this thread:
; http://www.autoitscript.com/forum/index.ph…=guiregistermsg
;
; ===============================================================================
#include-once
[/autoit] [autoit][/autoit] [autoit]#include <EditConstants.au3>
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
;Global Const $WM_COMMAND = 0x0111
;Global Const $EN_CHANGE = 0x300
Global $array__RegEx_RestrictControl[1][4]
Global $array__RegEx_RestrictControl_id_count = 0
;===============================================================================
;
; Function Name: _RegEx_RestrictControl_setup
; Description: Sets up the features of this UDF.
; Parameter(s): $_re_rc_max_controls (opotional, default 10)
; defines how many controls gan be controlled at maximum
; Requirement(s): This UDF included
; Return Value(s): None.
; Author(s): peethebee
;
;===============================================================================
Func _RegEx_RestrictControl_setup($_re_rc_max_controls = 10)
GUIRegisterMsg($WM_COMMAND, "_RegEx_RestrictControl_check")
ReDim $array__RegEx_RestrictControl[$_re_rc_max_controls][4]
$array__RegEx_RestrictControl_id_count = 0
EndFunc ;==>_RegEx_RestrictControl_setup
;===============================================================================
;
; Function Name: _RegEx_RestrictControl_add
; Description: Sets up the controlling for a control.
; Parameter(s): $_re_rc_ctrlid
; ID of the control to be monitored
; $_re_rc_regex_pattern
; RegExp which has to be fullfilled or fullfillable
; $_re_rc_valid_string (optional, default "")
; Valid string for testing if RegExp can still be fullfilled.
; Requirement(s): This UDF included
; Return Value(s): None.
; Author(s): peethebee
;
;===============================================================================
Func _RegEx_RestrictControl_add($_re_rc_ctrlid, $_re_rc_regex_pattern, $_re_rc_valid_string = "")
$array__RegEx_RestrictControl[$array__RegEx_RestrictControl_id_count][0] = $_re_rc_ctrlid
$array__RegEx_RestrictControl[$array__RegEx_RestrictControl_id_count][1] = $_re_rc_regex_pattern
$array__RegEx_RestrictControl[$array__RegEx_RestrictControl_id_count][2] = $_re_rc_valid_string
$array__RegEx_RestrictControl[$array__RegEx_RestrictControl_id_count][3] = ""
$array__RegEx_RestrictControl_id_count += 1
EndFunc ;==>_RegEx_RestrictControl_add
;===============================================================================
;
; Function Name: _RegEx_RestrictControl_check
; Description: Internal processing function - not to be called from outside!
; Parameter(s): [...]
; Requirement(s): This UDF included
; Return Value(s): None.
; Author(s): peethebee (using gafrost's work as a basis)
;
;===============================================================================
Func _RegEx_RestrictControl_check($hWnd, $msg, $wParam, $lParam)
Local $nNotifyCode = _HiWord($wParam)
Local $nID = _LoWord($wParam)
Local $hCtrl = $lParam
;~ MsgBox(0, "", UBound($array__RegEx_RestrictControl, 1))
For $_re_rc_i = 0 To UBound($array__RegEx_RestrictControl, 1) - 1
If $nID = $array__RegEx_RestrictControl[$_re_rc_i][0] Then
If $nNotifyCode = $EN_CHANGE Then
; Check RegEx and set text
For $_re_rc_j = 0 To StringLen($array__RegEx_RestrictControl[$_re_rc_i][2])
$_re_rc_regex_res = 1
;~ MsgBox(0, "regexp string", GUICtrlRead($array__RegEx_RestrictControl[$_re_rc_i][0]) & StringTrimLeft($array__RegEx_RestrictControl[$_re_rc_i][2], $_re_rc_j))
If StringRegExp (GUICtrlRead($array__RegEx_RestrictControl[$_re_rc_i][0]) & StringTrimLeft($array__RegEx_RestrictControl[$_re_rc_i][2], $_re_rc_j), $array__RegEx_RestrictControl[$_re_rc_i][1]) Then ExitLoop
$_re_rc_regex_res = 0
Next
If $_re_rc_regex_res = 1 Then
; save string as "good" value for later resettability
$array__RegEx_RestrictControl[$_re_rc_i][3] = GUICtrlRead($array__RegEx_RestrictControl[$_re_rc_i][0])
Else
; reset Text to last known good value
GUICtrlSetData($array__RegEx_RestrictControl[$_re_rc_i][0], $array__RegEx_RestrictControl[$_re_rc_i][3])
EndIf
EndIf
EndIf
Next
; Proceed the default Autoit3 internal message commands.
; You also can complete let the line out.
; !!! But only 'Return' (without any value) will not proceed
; the default Autoit3-message in the future !!!
Return $GUI_RUNDEFMSG
EndFunc ;==>_RegEx_RestrictControl_check
; helping function by gafrost
Func _HiWord($x)
Return BitShift($x, 16)
EndFunc ;==>_HiWord
; helping function by gafrost
Func _LoWord($x)
Return BitAND($x, 0xFFFF)
EndFunc ;==>_LoWord
folgendes:
Func _RegEx_RestrictControl_check($hWnd, $msg, $wParam, $lParam)
Local $nNotifyCode = _HiWord($wParam)
Local $nID = _LoWord($wParam)
Local $hCtrl = $lParam
;~ MsgBox(0, "", UBound($array__RegEx_RestrictControl, 1))
For $_re_rc_i = 0 To UBound($array__RegEx_RestrictControl, 1) - 1
If $nID = $array__RegEx_RestrictControl[$_re_rc_i][0] Then
If $nNotifyCode = $EN_CHANGE Then
; Check RegEx and set text
For $_re_rc_j = 0 To StringLen($array__RegEx_RestrictControl[$_re_rc_i][2])
$_re_rc_regex_res = 1
;~ MsgBox(0, "regexp string", GUICtrlRead($array__RegEx_RestrictControl[$_re_rc_i][0]) & StringTrimLeft($array__RegEx_RestrictControl[$_re_rc_i][2], $_re_rc_j))
If StringRegExp (GUICtrlRead($array__RegEx_RestrictControl[$_re_rc_i][0]) & StringTrimLeft($array__RegEx_RestrictControl[$_re_rc_i][2], $_re_rc_j), $array__RegEx_RestrictControl[$_re_rc_i][1]) Then ExitLoop
$_re_rc_regex_res = 0
Next
If $_re_rc_regex_res = 1 Then
; save string as "good" value for later resettability
$array__RegEx_RestrictControl[$_re_rc_i][3] = StringMid(GUICtrlRead($array__RegEx_RestrictControl[$_re_rc_i][0]), 1, 2) & ":" & StringMid(GUICtrlRead($array__RegEx_RestrictControl[$_re_rc_i][0]), 4, 2)
Else
; reset Text to last known good value
GUICtrlSetData($array__RegEx_RestrictControl[$_re_rc_i][0], $array__RegEx_RestrictControl[$_re_rc_i][3])
EndIf
EndIf
EndIf
Next
; Proceed the default Autoit3 internal message commands.
; You also can complete let the line out.
; !!! But only 'Return' (without any value) will not proceed
; the default Autoit3-message in the future !!!
Return $GUI_RUNDEFMSG
EndFunc ;==>_RegEx_RestrictControl_check
So wird aus der Eingabe '1234' -> 12:4, aus '12345' -> 12:45 ... Der Doppelpunkt benötigt immernoch eine Eingabe, aber es ist egal welche.
Könnt ihr mir vll. helfen dies wie oben erwähnt zu verbessern?
'peethebee' meinte noch:
ZitatHab den Code gerade nicht da, aber auch keine Zeit im Moment. Der Reset-Part ist vermutlich die falsche Stelle für die Änderung. Mach das außerhalb der Fallunterscheidung (danach denke ich).[...]
Grüße und schonmal Danke im voraus
Erstmal danke für die UDF, ist nun zwar schon eine ganze Weile her, aber ich habe genau solch eien UDF grad gebraucht.
Eine kleine Idee meiner Seits wäre es vielleicht noch bei falscher Eingabe ein Infofenster hinzuzufügen wie es bei GUICtrlCreateInput mit $ES_NUMBER kommt.
Ich bin noch ein Anfänger daher weiss ich nicht ob dies einfach zu realisieren ist aber vll. liest es ja noch jemand und hätte Spaß daran ![]()
Grüße
Eine Hilfe wie das Spiel funktioniert wäre vll. ganz Hilfreich ... ![]()
Erstmal danke für die tollen Vorschläge ![]()
Ich habe mich für die Variante der
RestrictControlRegExp-UDF - Fehleingaben direkt verhindern, Eingabentypen festlegen
entschieden und bin hell auf begeistert. Wirklich großartige UDF, in diesem Sinne Danke an 'funkey' für den Verweis und selbstverständlich ein großes Danke an 'peethebee'.
Hier mein Ergebnis:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include "RestrictControlRegExp.au3"
_RegEx_RestrictControl_setup (1) ; prepare for up to 20 Controls to restrict
[/autoit] [autoit][/autoit] [autoit]Global $hGUI = GUICreate("", 120, 50)
Global $hINPUT = GUICtrlCreateInput("", 10, 5, 100, 20, $ES_WANTRETURN)
_RegEx_RestrictControl_add ($hINPUT, "^[012]{1}[0-9]{1}\:[0-6]{1}[0-9]{1}$", "13:37")
GUISetState(@SW_SHOW, $hGUI)
[/autoit] [autoit][/autoit] [autoit]While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Hallo zusammen,
ich habe die letzte Stunde damit verbracht mit Hilfe der SuFu und Google eine Lösung zu finden, leider erfolgslos.
Ich weiss es gibt schon einige Themen, allerdings habe ich keins mit einer Einschränkung meines bestrebens gefunden ![]()
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
Global $GUI = GUICreate("", 320, 50)
Global $INPUT = GUICtrlCreateInput("", 10, 5, 300, 20)
GUISetState(@SW_SHOW, $GUI)
[/autoit] [autoit][/autoit] [autoit]While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Ich würde gerne diese InputCtrl wie folgt beschränken und im Falle einer Eingabe überwachen, sprich:
Wenn das Feld ausgewählt worden ist für eine Eingabe, dann beschränke wie folgt:
- erste Zeichen darf nur eine Zahl von 0-2 sein
- zweite Zeichen darf nur eine Zahl von 0-9 sein
- dann soll automatisch ein ":" hinzugefügt werden
- dritte Zeichen darf nur eine Zahl von 0-6 sein
- vierte Zeichen darf nur eine Zahl von 0-9 sein
Herauskommen soll, man glaubt es kaum, eine Uhrzeiteingabe.
Ist dies überhaupt möglich ohne ein eigenen Input über einen weiteren GUI zu schreiben?
Grüße Yaerox
Ahh okay, hast recht AspirinJunkie ![]()
Tut mir leid, hab das vorhin wohl falsch verstanden ![]()
Wäre RunWait() nicht auch eine Alternative?
Ich bin jetzt noch kein Superuser mit AutoIt, aber ich denke ich würde den String beim Semikolon jedes mal 'splitten' und die einzelnden Wörter in ein Array schreiben. Wenn du dann immer den zweiten Teil oder so brauchst kannst du diesen ja einfach aus dem Array holen ![]()
Grüße
Wahrscheinlich nicht die Beste Lösung, aber ich bin zufrieden ![]()
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>
#include <WinAPI.au3>
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Aufgabenliste-GUI erstellen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Global $window = GUICreate("Aufgabenliste", 250, 360) ;~ Erstelle das 'Aufgabenliste'-Fenster.
;~ Menü erstellen
Global $datei = GUICtrlCreateMenu("Datei") ;~ Erstelle ein Menue mit dem ersten Menuepunkt 'Datei'.
Global $datei_beenden = GUICtrlCreateMenuItem("Beenden", $datei) ;~ Erstelle ein Menueunterpunkt 'Beenden' fuer den Menuepunkt 'Datei'.
;~ Button erstellen
Global $go_button = GUICtrlCreateButton("GO", 10, 5, 230, 30) ;~ Erstelle ein Button 'GO'.
;~ Progress Bar + Label
Global $label_status = GUICtrlCreateLabel("Status:", 5, 42, 246, 20) ;~ Erstelle einen Anzeigetext 'Status'.
Global $progress = GUICtrlCreateProgress(5, 56, 240, 17) ;~ Erstelle eine Statusleiste.
;~ Listview_top ... Arbeitspunkte des aktiven Arbeitsplans
Global $top_listview = GUICtrlCreateListView("Startzeit |Arbeitspunkte ", 5, 75, 240, 120, $WS_BORDER, $LVS_EX_FULLROWSELECT) ;~ Erstelle eine Tabellenansicht fuer Arbeitspunkte des aktiven Arbeitsplans (oben),
_GUICtrlListView_SetColumnWidth($top_listview, 0, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die erste Spalte an,
_GUICtrlListView_SetColumnWidth($top_listview, 1, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die zweite Spalte an,
;~ Listview_bot ... Arbeitsplaene in der Warteschlange
Global $bot_label_status = GUICtrlCreateLabel("Warteschlange:", 5, 200, 200, 20) ;~ Erstelle einen Anzeigetext 'Warteschlange'.
Global $bot_listview = GUICtrlCreateListView("Geplante Startzeit |Arbeitsplan ", 5, 215, 240, 120) ;~ Erstelle eine Tabellenansicht fuer Arbeitsplaene in der Warteschlange (unten),
_GUICtrlListView_SetColumnWidth($bot_listview, 0, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die erste Spalte an,
_GUICtrlListView_SetColumnWidth($bot_listview, 1, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die zweite Spalte an,
_GUICtrlListView_SetExtendedListViewStyle($bot_listview, $LVS_EX_FULLROWSELECT)
;====================================== Aufgabenliste-GUI erstellen ======================================
;~ Mit GUI erstelltes Fenster auch anzeigen, da standard Einstellungen 'hidden' ist
GUISetState(@SW_SHOW, $window)
;~ Schleife
While 1
Switch GUIGetMsg()
Case $datei_beenden
Exit
Case $go_button
go()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Subfunktionen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Func go()
Local $carray[3]
$carray[0] = 0xFFFF00
$carray[1] = 0x00ff00
$carray[2] = 0xff0000
_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($bot_listview))
Local $i
Local $zaehler
Global $lvitems[3]
$zaehler = 0
For $i = 0 To 2
$lvitems[$i] = GUICtrlCreateListViewItem(Int(Random(0, 24)) & ":" & Int(Random(0, 60)) & " |Arbeitsplan " & $zaehler, $bot_listview)
$zaehler = $zaehler +1
Next
$zaehler = 0
$i = 1
Local $ii = 0
Local $wait = 100
Local $s = 0
Do
GUICtrlSetData($progress, 0)
_GUICtrlListView_AddItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC)
_GUICtrlListView_AddSubItem($top_listview, 0, "Arbeitspunkt" & Int(Random(0, 10)), 1)
GUICtrlSetBkColor($lvitems[$ii], $carray[$ii])
GUICtrlSetBkColor($top_listview, $carray[$ii])
$ii = $ii + 1
_GUICtrlListView_AddItem($top_listview, "")
_GUICtrlListView_AddSubItem($top_listview, 1, "Arbeitspunkt" & Int(Random(0, 10)), 1)
_GUICtrlListView_AddItem($top_listview, "")
_GUICtrlListView_AddSubItem($top_listview, 2, "Arbeitspunkt" & Int(Random(0, 10)), 1)
For $si = 0 To 30
GUICtrlSetData($progress, $si)
Sleep($wait)
Next
_GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
_GUICtrlListView_SetItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC, 0)
For $si = 30 To 60
GUICtrlSetData($progress, $si)
Sleep($wait)
Next
_GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
_GUICtrlListView_SetItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC, 0)
For $si = 60 To 90
GUICtrlSetData($progress, $si)
Sleep($wait)
Next
_GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
$zaehler = $zaehler + 1
_GUICtrlListView_DeleteItem(GUICtrlGetHandle($bot_listview), 0)
GUICtrlSetData($progress, 100)
Sleep(1000)
GUICtrlCreateListViewItem(Int(Random(0, 24)) & ":" & Int(Random(0, 60)) & "|Arbeitsplan " & Int(Random(1, 10)), $bot_listview)
$i = $i + 3
GUICtrlSetBkColor($top_listview, 0xffffff)
Until ($zaehler = 3)
Sleep(1000)
GUICtrlSetData($progress, 0)
EndFunc ;==>go
;====================================== Subfunktionen ======================================
Hab mich mit
[autoit]GUICtrlSetBkColor(_WinAPI_GetDlgCtrlID(GUICtrlGetHandle($bot_listview)), 030144255)
[/autoit]versucht, aber so färbt er die ganze Listview was für oben korrekt ist aber für unten nicht...
Ich denke die Lösung müsste etwas sein wie: GUICtrlSetBkColor( immer_die_oberste_zeile, farbe ) oder falls die Möglichkeit besteht die ControlID der Zeile rauszukriegen, die es meines Wissens nicht gibt, oder? Ich würd einfach mal behaupten die Listview ist ein Ctrl die hat eine ID und fertig.
Falls ich falsch liege korrigiert mich bitte ![]()
Edit: Es scheint mir als würde es nur 2 Varianten geben ...
Entweder Script neuschreiben mit den AutoIt Funktionen (GUICtrLCreateListView) oder mit GDI arbeiten ... kann das sein?
Versuche grad über GDI etwas zu finden ![]()
Okay, soweit ist der Groschen gefallen, und ich denke das Programm stellt die Visualisierung für meine Zwecke anständig da.
Soweit funktionierend:
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Aufgabenliste-GUI erstellen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Global $window = GUICreate("Aufgabenliste", 250, 360) ;~ Erstelle das 'Aufgabenliste'-Fenster.
;~ Menü erstellen
Global $datei = GUICtrlCreateMenu("Datei") ;~ Erstelle ein Menue mit dem ersten Menuepunkt 'Datei'.
Global $datei_beenden = GUICtrlCreateMenuItem("Beenden", $datei) ;~ Erstelle ein Menueunterpunkt 'Beenden' fuer den Menuepunkt 'Datei'.
;~ Button erstellen
Global $go_button = GUICtrlCreateButton("GO", 10, 5, 230, 30) ;~ Erstelle ein Button 'GO'.
;~ Progress Bar + Label
Global $label_status = GUICtrlCreateLabel("Status:", 5, 42, 246, 20) ;~ Erstelle einen Anzeigetext 'Status'.
Global $progress = GUICtrlCreateProgress(5, 56, 240, 17) ;~ Erstelle eine Statusleiste.
;~ Listview_top ... Arbeitspunkte des aktiven Arbeitsplans
Global $top_listview = GUICtrlCreateListView("Startzeit |Arbeitspunkte ", 5, 75, 240, 120, $WS_BORDER, $LVS_EX_FULLROWSELECT) ;~ Erstelle eine Tabellenansicht fuer Arbeitspunkte des aktiven Arbeitsplans (oben),
_GUICtrlListView_SetColumnWidth($top_listview, 0, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die erste Spalte an,
_GUICtrlListView_SetColumnWidth($top_listview, 1, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die zweite Spalte an,
;~ Listview_bot ... Arbeitsplaene in der Warteschlange
Global $bot_label_status = GUICtrlCreateLabel("Warteschlange:", 5, 200, 200, 20) ;~ Erstelle einen Anzeigetext 'Warteschlange'.
Global $bot_listview = GUICtrlCreateListView("Geplante Startzeit |Arbeitsplan ", 5, 215, 240, 120) ;~ Erstelle eine Tabellenansicht fuer Arbeitsplaene in der Warteschlange (unten),
_GUICtrlListView_SetColumnWidth($bot_listview, 0, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die erste Spalte an,
_GUICtrlListView_SetColumnWidth($bot_listview, 1, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die zweite Spalte an,
_GUICtrlListView_SetExtendedListViewStyle($bot_listview, $LVS_EX_FULLROWSELECT)
;====================================== Aufgabenliste-GUI erstellen ======================================
;~ Mit GUI erstelltes Fenster auch anzeigen, da standard Einstellungen 'hidden' ist
GUISetState(@SW_SHOW, $window)
;~ Schleife
While 1
Switch GUIGetMsg()
Case $datei_beenden
Exit
Case $go_button
go()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Subfunktionen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Func go()
_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($bot_listview))
;~ Local $item1 = GUICtrlCreateListViewItem("10:00|Arbeitsplan1", $bot_listview)
;~ Local $item2 = GUICtrlCreateListViewItem("12:00|Arbeitsplan2", $bot_listview)
;~ Local $item3 = GUICtrlCreateListViewItem("14:00|Arbeitsplan3", $bot_listview)
_GUICtrlListView_AddItem($bot_listview, "10:00")
_GUICtrlListView_AddSubItem($bot_listview, 0, "Arbeitsplan 1", 1)
_GUICtrlListView_AddItem($bot_listview, "12:00")
_GUICtrlListView_AddSubItem($bot_listview, 1, "Arbeitsplan 2", 1)
_GUICtrlListView_AddItem($bot_listview, "13:00")
_GUICtrlListView_AddSubItem($bot_listview, 2, "Arbeitsplan 3", 1)
Local $zaehler = 0
Local $i = 1
Local $wait = 100
Local $s = 0
Do
;~ If $zaehler = 0 Then
;~ Local $item = $item1
;~ ElseIf $zaehler = 1 Then
;~ GUICtrlSetBkColor($item1, 255255255) ; soll eig die Farbe löschen bzw. weiß sein ... ![]()
;~ Local $item = $item2
;~ ElseIf $zaehler = 2 Then
;~ GUICtrlSetBkColor($item2, 255255255) ; soll eig die Farbe löschen bzw. weiß sein ... ![]()
;~ Local $item = $item3
;~ EndIf
GUICtrlSetData($progress, 0)
_GUICtrlListView_SetItemSelected($bot_listview, 0)
_GUICtrlListView_AddItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC)
_GUICtrlListView_AddSubItem($top_listview, 0, "Arbeitspunkt" & Int(Random(0, 10)), 1)
;~ If GUICtrlSetBkColor($item, 030144255) = 0 Then
;~ Exit
;~ EndIf
_GUICtrlListView_AddItem($top_listview, "")
_GUICtrlListView_AddSubItem($top_listview, 1, "Arbeitspunkt" & Int(Random(0, 10)), 1)
_GUICtrlListView_AddItem($top_listview, "")
_GUICtrlListView_AddSubItem($top_listview, 2, "Arbeitspunkt" & Int(Random(0, 10)), 1)
For $si = 0 To 30
GUICtrlSetData($progress, $si)
Sleep($wait)
Next
_GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
_GUICtrlListView_SetItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC, 0)
For $si = 30 To 60
GUICtrlSetData($progress, $si)
Sleep($wait)
Next
_GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
_GUICtrlListView_SetItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC, 0)
For $si = 60 To 90
GUICtrlSetData($progress, $si)
Sleep($wait)
Next
_GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
$zaehler = $zaehler + 1
_GUICtrlListView_DeleteItem(GUICtrlGetHandle($bot_listview), 0)
GUICtrlSetData($progress, 100)
Sleep(1000)
_GUICtrlListView_AddItem($bot_listview, Int(Random(0, 24)) & ":" & Int(Random(0, 60)))
_GUICtrlListView_AddSubItem($bot_listview, 2, "Arbeitsplan " & $zaehler, 1)
$i = $i + 3
Until ($zaehler = 3)
Sleep(1000)
GUICtrlSetData($progress, 0)
EndFunc ;==>go
;====================================== Subfunktionen ======================================
Nun hätte ich jedoch noch gerne, dass nach dem Selektieren einer Zeile, oder einfach die zu selektierende Zeile gefärbt wird.
Dazu habe ich gesehen gibt es „GUICtrlSetBkColor ( controlID, backgroundcolor )“ aber das geht damit scheinbar nur wenn ich dann die ListviewItems mit den von AutoIt vorhandenen Funktionen hinzufüge. Die User-Definded-Functions _GUICTRL... kann ich dann nicht nutzen oder? Ich habe versucht die Handles auszulesen und ähnliches um halt zu sagen, wenn du in der bot_listview das erste Item selektiert hast färbe es blau, und die gesamte top_listview in der gleichen Farbe. Erfolgslos.
Wenn das Item dann gelöscht worden ist, bin ich davon ausgegangen, dass die Färbung auch gelöscht worden ist.
Kann mir da vielleicht jemand helfen?
Hier die bisher einzige Lösung von mir mit dem Problem, dass erst beim zweiten mal GO drücken gefärbt wird, und die Listview Bot dann flasch angezeigt ist, da Sie im zweiten durchlauf dann so ausschauen soll wie beim ersten...
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Aufgabenliste-GUI erstellen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Global $window = GUICreate("Aufgabenliste", 250, 360) ;~ Erstelle das 'Aufgabenliste'-Fenster.
;~ Menü erstellen
Global $datei = GUICtrlCreateMenu("Datei") ;~ Erstelle ein Menue mit dem ersten Menuepunkt 'Datei'.
Global $datei_beenden = GUICtrlCreateMenuItem("Beenden", $datei) ;~ Erstelle ein Menueunterpunkt 'Beenden' fuer den Menuepunkt 'Datei'.
;~ Button erstellen
Global $go_button = GUICtrlCreateButton("GO", 10, 5, 230, 30) ;~ Erstelle ein Button 'GO'.
;~ Progress Bar + Label
Global $label_status = GUICtrlCreateLabel("Status:", 5, 42, 246, 20) ;~ Erstelle einen Anzeigetext 'Status'.
Global $progress = GUICtrlCreateProgress(5, 56, 240, 17) ;~ Erstelle eine Statusleiste.
;~ Listview_top ... Arbeitspunkte des aktiven Arbeitsplans
Global $top_listview = GUICtrlCreateListView("Startzeit |Arbeitspunkte ", 5, 75, 240, 120, $WS_BORDER, $LVS_EX_FULLROWSELECT) ;~ Erstelle eine Tabellenansicht fuer Arbeitspunkte des aktiven Arbeitsplans (oben),
_GUICtrlListView_SetColumnWidth($top_listview, 0, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die erste Spalte an,
_GUICtrlListView_SetColumnWidth($top_listview, 1, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die zweite Spalte an,
;~ Listview_bot ... Arbeitsplaene in der Warteschlange
Global $bot_label_status = GUICtrlCreateLabel("Warteschlange:", 5, 200, 200, 20) ;~ Erstelle einen Anzeigetext 'Warteschlange'.
Global $bot_listview = GUICtrlCreateListView("Geplante Startzeit |Arbeitsplan ", 5, 215, 240, 120) ;~ Erstelle eine Tabellenansicht fuer Arbeitsplaene in der Warteschlange (unten),
_GUICtrlListView_SetColumnWidth($bot_listview, 0, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die erste Spalte an,
_GUICtrlListView_SetColumnWidth($bot_listview, 1, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die zweite Spalte an,
_GUICtrlListView_SetExtendedListViewStyle($bot_listview, $LVS_EX_FULLROWSELECT)
;====================================== Aufgabenliste-GUI erstellen ======================================
;~ Mit GUI erstelltes Fenster auch anzeigen, da standard Einstellungen 'hidden' ist
GUISetState(@SW_SHOW, $window)
;~ Schleife
While 1
Switch GUIGetMsg()
Case $datei_beenden
Exit
Case $go_button
go()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Subfunktionen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Func go()
;~ _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($bot_listview))
Local $item1 = GUICtrlCreateListViewItem("10:00|Arbeitsplan1", $bot_listview)
Local $item2 = GUICtrlCreateListViewItem("12:00|Arbeitsplan2", $bot_listview)
Local $item3 = GUICtrlCreateListViewItem("14:00|Arbeitsplan3", $bot_listview)
;~ _GUICtrlListView_AddItem($bot_listview, "10:00")
;~ _GUICtrlListView_AddSubItem($bot_listview, 0, "Arbeitsplan 1", 1)
;~ _GUICtrlListView_AddItem($bot_listview, "12:00")
;~ _GUICtrlListView_AddSubItem($bot_listview, 1, "Arbeitsplan 2", 1)
;~ _GUICtrlListView_AddItem($bot_listview, "13:00")
;~ _GUICtrlListView_AddSubItem($bot_listview, 2, "Arbeitsplan 3", 1)
Local $zaehler = 0
Local $i = 1
Local $wait = 100
Local $s = 0
Do
If $zaehler = 0 Then
Local $item = $item1
ElseIf $zaehler = 1 Then
GUICtrlSetBkColor($item1, 255255255) ; soll eig die Farbe löschen bzw. weiß sein ... ![]()
Local $item = $item2
ElseIf $zaehler = 2 Then
GUICtrlSetBkColor($item2, 255255255) ; soll eig die Farbe löschen bzw. weiß sein ... ![]()
Local $item = $item3
EndIf
GUICtrlSetData($progress, 0)
_GUICtrlListView_SetItemSelected($bot_listview, 0)
_GUICtrlListView_AddItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC)
_GUICtrlListView_AddSubItem($top_listview, 0, "Arbeitspunkt" & Int(Random(0, 10)), 1)
If GUICtrlSetBkColor($item, 030144255) = 0 Then
Exit
EndIf
_GUICtrlListView_AddItem($top_listview, "")
_GUICtrlListView_AddSubItem($top_listview, 1, "Arbeitspunkt" & Int(Random(0, 10)), 1)
_GUICtrlListView_AddItem($top_listview, "")
_GUICtrlListView_AddSubItem($top_listview, 2, "Arbeitspunkt" & Int(Random(0, 10)), 1)
For $si = 0 To 30
GUICtrlSetData($progress, $si)
Sleep($wait)
Next
_GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
_GUICtrlListView_SetItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC, 0)
For $si = 30 To 60
GUICtrlSetData($progress, $si)
Sleep($wait)
Next
_GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
_GUICtrlListView_SetItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC, 0)
For $si = 60 To 90
GUICtrlSetData($progress, $si)
Sleep($wait)
Next
_GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0)
$zaehler = $zaehler + 1
_GUICtrlListView_DeleteItem(GUICtrlGetHandle($bot_listview), 0)
GUICtrlSetData($progress, 100)
Sleep(1000)
_GUICtrlListView_AddItem($bot_listview, Int(Random(0, 24)) & ":" & Int(Random(0, 60)))
_GUICtrlListView_AddSubItem($bot_listview, 2, "Arbeitsplan " & $zaehler, 1)
$i = $i + 3
If $zaehler = 3 Then
GUICtrlSetBkColor($item3, 255255255) ; soll eig die Farbe löschen bzw. weiß sein ... ![]()
EndIf
Until ($zaehler = 3)
Sleep(1000)
GUICtrlSetData($progress, 0)
EndFunc ;==>go
;====================================== Subfunktionen ======================================
Ich habe die Zeile 59:
;~ _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($bot_listview))
[/autoit]auskommentiert, da wenn ich diese aktiv laufen lasse ist die Listview dann zwar richtig, aber es wird nicht mehr gefärbt ![]()
Grüße
PS: Das färben der oberen Listview ist hier noch nirgends, da ich erstmal die untere Zeile gerne färben würde ![]()
So peinlich "-.-
Kaum mal 45 Min den Thread geschrieben, Kopf anscheinend klarer da findet man: _GUICtrlListView_DeleteItem(GUICtrlGetHandle($top_listview), 0) ...
Darf der Thread evtl. bestehen bleiben, oder nach Projekte o.ä. verschoben werden?
Hallo liebe Community,
ich bräuchte mal wieder eure Hilfe ![]()
Dies ist quasi eine kleine Testumgebung bezüglich einer Ablaufsteuerung die ich derzeit versuche zu programmieren.
Ich würde mir wünschen
, dass in der unteren Listview 3 Zeilen eingefügt werden , dann immer die kleinste Uhrzeit automatisch selektiert werden soll, und die Arbeitspunkte für den jeweiligen Arbeitsplan sollen dann oben in der Listview erscheinen. Dann hätten wir oben in der zweiten Spalte quasi 3 Arbeitspunkte für diesen Arbeitsplan stehen die nacheinander "abgearbeitet" werden sollen. Hier würde als Simulation ein hochzählen oder ein Sleep() ja ausreichen...Bei Startzeit in der oberen Listview soll jedoch die Systemzeit eingetragen werden zudem dieser Arbeitspunkt angestoßen worden ist. Dann soll dieser arbeitspunkt wenn er fertig ist rausfliegen, und die beiden anderen rutschen in der Liste quasi "nach oben" und dann das selbe Spiel: Systemzeit soll eingetragen werden wenn der Arbeitspunkt "gestartet" wird, bis alle Arbeitspunkte durch sind. Diese 3 Arbeitspunkte die dort also einen einzigen Arbeitsplan darstellen sollen dazu diesen Statusbalken animieren.
Dieser Ablauf soll dann quasi auch unten passieren. Sprich: Sind alle 3 Arbeitspunkte eines Arbeitsplans durchgelaufen, soll der eintrag des ersten Arbeitsplans unten in der Listview rausfliegen, die beiden noch vorhandenen quasi "nach oben rutschen", und dann soll der Arbeitsplan wieder angehangen werden mit einer größeren "geplanten Startzeit".
---
Nochmal in kurz: Es sollen nach dem GO drücken 3 Arbeitspläne nacheinander ablaufen, der aktive Arbeitsplan wird in der unteren Listview "als ausgewählt makiert", dann werden oben seine Arbeitspunkte eingeblendet, diese laufen nacheinander durch und ziehen alle 3 zusammen 1x den Statusbalken mit sich, dann fliegt der Arbeitsplan aus der unteren Listview raus, die anderen 2 rutschen auf und er soll angehangen werden bis jeder Arbeitsplan 1x durchgelaufen ist.
Hier eine kleine bildliche Darstellung (mit Paint gezaubert :D):
[Blockierte Grafik: http://s14.directupload.net/images/121011/ybyr3c9i.png]
und dies für jeden Punkt unten in der Liste 1x ;D
Mein bisheriges vorgehen:
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Aufgabenliste-GUI erstellen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Global $window = GUICreate("Aufgabenliste", 250, 360) ;~ Erstelle das 'Aufgabenliste'-Fenster.
;~ Menü erstellen
Global $datei = GUICtrlCreateMenu("Datei") ;~ Erstelle ein Menue mit dem ersten Menuepunkt 'Datei'.
Global $datei_beenden = GUICtrlCreateMenuItem("Beenden", $datei) ;~ Erstelle ein Menueunterpunkt 'Beenden' fuer den Menuepunkt 'Datei'.
;~ Button erstellen
Global $go_button = GUICtrlCreateButton("GO", 10, 5, 230, 30) ;~ Erstelle ein Button 'GO'.
;~ Progress Bar + Label
Global $label_status = GUICtrlCreateLabel("Status:", 5, 42, 246, 20) ;~ Erstelle einen Anzeigetext 'Status'.
Global $progress = GUICtrlCreateProgress(5, 56, 240, 17) ;~ Erstelle eine Statusleiste.
;~ Listview_top ... Arbeitspunkte des aktiven Arbeitsplans
Global $top_listview = GUICtrlCreateListView("Startzeit |Arbeitspunkte ", 5, 75, 240, 120, $WS_BORDER, $LVS_EX_FULLROWSELECT + $LVS_EX_CHECKBOXES) ;~ Erstelle eine Tabellenansicht fuer Arbeitspunkte des aktiven Arbeitsplans (oben),
_GUICtrlListView_SetColumnWidth($top_listview, 0, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die erste Spalte an,
_GUICtrlListView_SetColumnWidth($top_listview, 1, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die zweite Spalte an,
_GUICtrlListView_SetExtendedListViewStyle($top_listview, $LVS_EX_FULLROWSELECT) ;~ und waehle immer die gesamte Zeile aus.
;~ Listview_bot ... Arbeitsplaene in der Warteschlange
Global $bot_label_status = GUICtrlCreateLabel("Warteschlange:", 5, 200, 200, 20) ;~ Erstelle einen Anzeigetext 'Warteschlange'.
Global $bot_listview = GUICtrlCreateListView("Geplante Startzeit |Arbeitsplan ", 5, 215, 240, 120, $WS_BORDER, $LVS_EX_FULLROWSELECT + $LVS_EX_CHECKBOXES) ;~ Erstelle eine Tabellenansicht fuer Arbeitsplaene in der Warteschlange (unten),
_GUICtrlListView_SetColumnWidth($bot_listview, 0, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die erste Spalte an,
_GUICtrlListView_SetColumnWidth($bot_listview, 1, $LVSCW_AUTOSIZE_USEHEADER) ;~ passe die Spaltenbreite an den Spaltennamen für die zweite Spalte an,
_GUICtrlListView_SetExtendedListViewStyle($bot_listview, $LVS_EX_FULLROWSELECT) ;~ und waehle immer die gesamte Zeile aus.
;====================================== Aufgabenliste-GUI erstellen ======================================
[/autoit] [autoit][/autoit] [autoit];~ Mit GUI erstelltes Fenster auch anzeigen, da standard Einstellungen 'hidden' ist
GUISetState(@SW_SHOW, $window)
;~ Schleife
While 1
Switch GUIGetMsg()
Case $datei_beenden
Exit
Case $go_button
go()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Subfunktionen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Func go()
_GUICtrlListView_AddItem($bot_listview, "10:00")
_GUICtrlListView_AddSubItem($bot_listview, 0, "Arbeitsplan 1", 1)
_GUICtrlListView_AddItem($bot_listview, "12:00")
_GUICtrlListView_AddSubItem($bot_listview, 1, "Arbeitsplan 2", 1)
_GUICtrlListView_AddItem($bot_listview, "13:00")
_GUICtrlListView_AddSubItem($bot_listview, 2, "Arbeitsplan 3", 1)
_GUICtrlListView_SetItemSelected($bot_listview, 0)
[/autoit] [autoit][/autoit] [autoit]_GUICtrlListView_AddItem($top_listview, @HOUR & ":" & @MIN & ":" & @SEC)
_GUICtrlListView_AddSubItem($top_listview, 0, "Arbeitspunkt 1", 1)
_GUICtrlListView_AddItem($top_listview, "")
_GUICtrlListView_AddSubItem($top_listview, 1, "Arbeitspunkt 2", 1)
_GUICtrlListView_AddItem($top_listview, "")
_GUICtrlListView_AddSubItem($top_listview, 2, "Arbeitspunkt 3", 1)
Sleep(500)
_GUICtrlListView_DeleteItem($top_listview, 0)
EndFunc
;====================================== Subfunktionen ======================================
Hier ist nun mein erstes Problem: Ich dachte ich lösche aus der Listview oben die erste zeile, damit ich dann den nächsten Arbeitspunkt starten kann. Aber hier hängt es grad irgendwie
Seit 2 Stunden starre ich auf den Text, ich seh den Fehler nicht ... ![]()
Mir wäre wichtig das ihr wisst, ich will nicht einfach nur einen Code vorgelegt bekommen für meine Probleme, ich lerne momentan mit AutoIt zu programmieren (bzw. versuch es mir beizubringen), will es verstehen und arbeite selbstverständlich auch daran.
Ich habe solch einen 'Progress' z.B. bisher nie genutzt, also solche Dinge könnten auch noch weggelassen werden, wenn ich mich damit beschäftige schaffe ich dies vielleicht ja auch alleine !! ![]()
Also würde es mir vollkommen ausreichen wenn ihr mir bei Problemen helfen würdet und ich bis zum nächsten Problem den Code auch selber schreibe ![]()
*freundlich um Hilfe bitten* *g*
Achja, ich nehme Tipps (Lob und Kritik) zu meiner Schreibweise bezüglich des Codes oder der Wahl meiner Variablen geren an
![]()
Grüße
Nun hab ich so lang am Thread geschrieben, da ist glatt mein Kaffee kalt :O
Super, sowas hab ich gebraucht
Danke
Dann schau ich jetzt mal ob ich das im großen Stil übertragen kriege ![]()
Grüße
MessageLoop-Methode kombiniert mit der OnEvent-Methode. [...] Und pack mal die Funktion ans Ende. So dazwischen ist das nicht "schön".
So besser? (habe es editiert)
Hallo liebe Community ![]()
Ich versuche mich nun seit ca. 3 Wochen mit AutoIt, und schreibe derzeit ein Programm bei den ich quasi eine Comboüberwachung in einer Tabüberwachung bräuchte wie es bei Toolbars auch möglich ist.
Meine Bitte an euch wäre, mir verständlich zu machen wie das funktioniert. Ich habe mir schon einige Beispiele angeschaut und simple Beispiele konnte ich auch erweitern/bearbeiten, aber 100%ig verstanden habe ich nicht, was ich dort tat ![]()
Hier zunächst ein Code für mein Beispiel:
[autoit]#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
$gui1 = GUICreate("GUI 1", 505, 505)
$switchtogui2 = GUICtrlCreateButton("Switch to GUI 2", 10, 10)
GUISetState(@SW_SHOW, $gui1)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $switchtogui2
zeige_gui2()
EndSelect
WEnd
Func zeige_gui2()
GUISetState(@SW_HIDE, $gui1)
$gui2 = GUICreate("GUI 2", 500, 500)
GUISetState(@SW_SHOW, $gui2)
Local $tab = GUICtrlCreateTab(10, 10, 480, 480)
Local $tab_1 = GUICtrlCreateTabItem("1")
Local $tab1_combo = GUICtrlCreateCombo("", 50, 50, 200, 20)
GUICtrlSetData(-1, "item1|item2|item3")
Local $lvt1 = GUICtrlCreateListView("Test", 80, 80, 200, 200, $WS_BORDER, $LVS_EX_FULLROWSELECT)
Local $tab_2 = GUICtrlCreateTabItem("2")
Local $tab2_combo = GUICtrlCreateCombo("", 50, 50, 200, 20)
GUICtrlSetData(-1, "item1|item2|item3")
Local $lvt2 = GUICtrlCreateListView("Test", 80, 80, 200, 200, $WS_BORDER, $LVS_EX_FULLROWSELECT)
GUICtrlCreateTabItem("")
EndFunc
Nun soll quasi eien Überwachung stattfinden die wie folgt aussehen sollte:
Überwache den Tab
wenn TabItem1 angeklickt wird, dann
Überwache die Combobox
wenn eine Auswahl getätigt wird, dann
schreibe die Auswahl in die Listview
EndeÜberwachung
wenn TabItem2 angeklickt wird, dann
Überwache die Combobox
wenn eine Auswahl getätigt wird, dann
schreibe die Auswahl in die Listview
EndeÜberwachung
EndeÜberwachung
Alles anzeigen
Mein Ansatz wäre:
[autoit]Local $msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $tab_1
MsgBox(0,"","Tab1")
Case $msg = $tab_2
MsgBox(0,"","Tab2")
EndSelect
funktioniert nur leider (bisher) nicht ![]()
Ich sag schonmal danke an alle die versuchen oder es vll. sogar schaffen mir diese Überwachung beizubringen ![]()
Grüße
Sorry, dass Problem hat sich erledigt. Lag eig auf der Hand wenn man darüber nachgedacht hat.
Zeige uns doch mal deinen bisherigen Quellcode, dann kann man sicherlich besser weiterhelfen
Quellcode ist bis auf den GUI noch nicht vorhanden ![]()
Habe mir über das Wochenende noch einige Gedanken gemacht und habe meinen ersten Post editiert ![]()