Hallo zusammen,
bin Anfänger und nur gelegentlich im Forum unterwegs, um genau zu sein seit längerem mal wieder das erste mal.
Derzeit versuche ich eine tägliche Team To Do Liste zu erstellen, die eine simple "Abhaken" Funktion erfüllen soll mit gleichzeitigem
Zugriff für mehrere Personen.
Der Kern der Geschichte ist eine Ini in der alle Zustände der GUI gespeichert werden und alle im Netzwerk geöffneten Tools gleichzeitig
zugreifen und sich daraus aktualisieren.
Hat A etwas erledigt, sehen alle anderen das es erledigt wurde und die Checkbox wird ausgegraut. Sollte A sich vertan haben, kann nur er
es wieder aktivieren.
Das Problem an dem ich momentan arbeite ist, die GUI Update Funktion zu vereinfachen mit z.b. einer Schleife o.ä. .
Da weis ich leider nicht wie ich es adäquat umsetzen könnte , ohne für mögliche 20-30 Checkboxen alles einzeln in die Funktion reinzupacken
Den Code hab ich angefügt und die Problemstelle Funktion "GUI Update" auch kommentiert.
Wäre klasse wenn mir jemand dazu einen Tipp geben könnte. Falls ich mich zu unverständlich ausgedrückt habe bitte fragen.
Schon mal danke im voraus für evtl. Hilfe Tipps
Spoiler anzeigen
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=..\Icons\2_1.ico
#AutoIt3Wrapper_outfile=TeamToDo_beta 1.3.0.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <DateTimeConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <file.au3>
#include <array.au3>
;0xFF0000 = rot
;0x00FF00 = grün
;---------------- Startparameter -------------------------------
[/autoit] [autoit][/autoit] [autoit]Opt('MustDeclareVars', 1)
Opt("GUIOnEventMode", 1)
Global $User = @UserName
Global $Userdone = "Guest"
Global $logpath = @ScriptDir & "\Data\Logfile\" & @MDAY & @MON & @YEAR & ".txt"
Global $Dataini = @ScriptDir & "\Data\IniDB\" & @MDAY & @MON & @YEAR & ".ini"
Global $DBactivityExist = @ScriptDir & "\db.activity"
;---------------- Ini Database erstellen -------------------------------
[/autoit] [autoit][/autoit] [autoit]if not FileExists ($Dataini) then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Global $aData1[4][2] = [ [ "$Checkbox1", "0" ], [ "$Checkbox2", "0" ], [ "$Checkbox3", "0" ],[ "$Checkbox4", "0" ] ]
IniWriteSection($Dataini,'GUI Update Box', $aData1, 0)
Global $aData2[4][2] = [ [ "$Checkbox1User", "" ], [ "$Checkbox2User", "" ], [ "$Checkbox3User", "" ],[ "$Checkbox4User", "" ] ]
IniWriteSection($Dataini,'GUI Update User', $aData2, 0)
;IniWrite($Dataini, 'GUI Update', '$Checkbox1', "0")
;IniWrite($Dataini, 'GUI Update', '$Checkbox1User', "")
EndIf
[/autoit] [autoit][/autoit] [autoit];--------- User Func ausführen, Func Datenbank registrieren ------
[/autoit] [autoit][/autoit] [autoit]User ()
AdlibRegister ("DBactivity", 500)
;---------------- GUI erstellen -------------------------------
[/autoit] [autoit][/autoit] [autoit]#Region ### START Koda GUI section ### Form=S:\Sascha\Schäfer\AutoIT\Koda_GUI\Forms\to_do_lu690.kxf
Global $Form2 = GUICreate("Team To Do ", 1038, 631, 353, 159)
;GUISetBkColor(0xFFFFFF)
GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
GUISetIcon("D:\005.ico")
Global $PageControl1 = GUICtrlCreateTab(16, 8, 724, 576)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
Global $TabSheet1 = GUICtrlCreateTabItem("Frühschicht")
Global $Checkbox1 = GUICtrlCreateCheckbox("Aufgabe 1", 35, 53, 200, 40)
GUICtrlSetOnEvent(-1, "Checkbox1")
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xFF0000)
Global $Checkbox2 = GUICtrlCreateCheckbox("Aufgabe 2", 35, 113, 200, 40)
GUICtrlSetOnEvent(-1, "Checkbox2")
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xFF0000)
Global $Checkbox3 = GUICtrlCreateCheckbox("Aufgabe 3", 35, 173, 200, 40)
GUICtrlSetOnEvent(-1, "Checkbox3")
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xFF0000)
Global $Checkbox4 = GUICtrlCreateCheckbox("Aufgabe 4", 35, 233, 200, 40)
GUICtrlSetOnEvent(-1, "Checkbox4")
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xFF0000)
Global $Checkbox5 = GUICtrlCreateCheckbox("Aufgabe 5", 35, 293, 200, 40)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xFF0000)
Global $Checkbox6 = GUICtrlCreateCheckbox("Aufgabe 6", 35, 353, 200, 40)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xFF0000)
Global $Checkbox7 = GUICtrlCreateCheckbox("Aufgabe 7", 35, 413, 200, 40)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xFF0000)
Global $Checkbox8 = GUICtrlCreateCheckbox("Aufgabe 8", 35, 473, 200, 40)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xFF0000)
Global $Label1 = GUICtrlCreateLabel("", 248, 56, 38, 38)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
Global $Label2 = GUICtrlCreateLabel("", 248, 115, 38, 38)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
Global $Label3 = GUICtrlCreateLabel("", 248, 174, 38, 38)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
Global $Label4 = GUICtrlCreateLabel("", 248, 233, 38, 38)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
Global $TabSheet2 = GUICtrlCreateTabItem("Spätschicht")
Global $TabSheet3 = GUICtrlCreateTabItem("Diverse")
GUICtrlCreateTabItem("")
Global $Button2 = GUICtrlCreateButton("&Beenden", 808, 560, 80, 25, 0)
Global $Button3 = GUICtrlCreateButton("&Tagesabschluß", 904, 560, 80, 25, 0)
Global $MonthCal1 = GUICtrlCreateMonthCal(@MDAY, 784, 152, 201, 177)
Global $Label200 = GUICtrlCreateLabel("Team To Do", 792, 32, 192, 42)
GUICtrlSetFont(-1, 25, 800, 0, "Arial")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
[/autoit] [autoit][/autoit] [autoit]sleep (5)
[/autoit] [autoit][/autoit] [autoit]WEnd
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func Close ()
[/autoit] [autoit][/autoit] [autoit]Exit
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];---------------------- User Abfragen ----------------------------------------
[/autoit] [autoit][/autoit] [autoit]Func User ()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Switch $User
[/autoit] [autoit][/autoit] [autoit]Case $User = "1234"
$Userdone = "Peter"
Case $User = "1235"
$Userdone = "Thomas"
Case $User = "1236"
$Userdone = "Christian"
EndSwitch
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit];------------------ Check Datenbank Aktivität ------------------------------
[/autoit] [autoit][/autoit] [autoit]Func DBactivity ()
[/autoit] [autoit][/autoit] [autoit]if not FileExists ($DBactivityExist) Then
[/autoit] [autoit][/autoit] [autoit]call ("GuiUpdate")
[/autoit] [autoit][/autoit] [autoit]EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];---------------------- GUI Update Funktion ----------------------------------------
[/autoit] [autoit][/autoit] [autoit]Func GuiUpdate ()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Global $CB1update = IniRead ($Dataini, 'GUI Update Box', '$Checkbox1', "")
Global $CB1user = IniRead ($Dataini, 'GUI Update User', '$Checkbox1User', "")
#comments-start
Wenn Box markiert und der User NICHT der gleiche ist wie ich, dann
Box markieren, Grün setzen, Label User aktualisieren, Control deaktivieren
#comments-end
If $CB1update = 1 and $CB1user <> $Userdone Then
GUICtrlSetBkColor($Checkbox1, 0x00FF00)
GUICtrlSetState($Checkbox1, $GUI_CHECKED)
GUICtrlSetData ($Label1, $CB1user)
GUICtrlSetState($Checkbox1, $GUI_DISABLE)
EndIf
[/autoit] [autoit][/autoit] [autoit]#comments-start
Wenn Box markiert und der User der gleiche ist wie ich, dann
Box markieren, Grün setzen, Label User aktualisieren
#comments-end
If $CB1update = 1 and $CB1user = $Userdone Then
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetBkColor($Checkbox1, 0x00FF00)
GUICtrlSetState($Checkbox1, $GUI_CHECKED)
GUICtrlSetData ($Label1, $CB1user)
EndIf
[/autoit] [autoit][/autoit] [autoit]#comments-start
Wenn Box nicht markiert ist , dann
Box unchecked markieren, Rot setzen, Label User aktualisieren, Control aktivieren
#comments-end
If $CB1update = 0 Then
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetBkColor($Checkbox1, 0xFF0000)
GUICtrlSetState($Checkbox1, $GUI_UNCHECKED)
GUICtrlSetData ($Label1, "")
GUICtrlSetState($Checkbox1, $GUI_ENABLE)
EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit];---------------------- Checkboxen Abfragen ----------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func Checkbox1 ()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]if BitAnd(GUICtrlRead($Checkbox1),$GUI_CHECKED) = $GUI_CHECKED then
[/autoit] [autoit][/autoit] [autoit]IniWrite (@ScriptDir & "\db.activity","active","1","1")
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetBkColor($Checkbox1, 0x00FF00)
_FileWriteLog ($logpath, " * " & $Userdone & " * erledigte Aufgabe 1")
GUICtrlSetData ($Label1, $Userdone)
IniWrite($Dataini, 'GUI Update Box', '$Checkbox1', "1")
IniWrite($Dataini, 'GUI Update User', '$Checkbox1User', $Userdone)
sleep(2)
FileDelete (@ScriptDir & "\db.activity")
EndIf
[/autoit] [autoit][/autoit] [autoit]if BitAnd(GUICtrlRead($Checkbox1),$GUI_UNCHECKED) = $GUI_UNCHECKED then
[/autoit] [autoit][/autoit] [autoit]IniWrite (@ScriptDir & "\db.activity","active","1","1")
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetBkColor($Checkbox1, 0xFF0000)
_FileWriteLog ($logpath, " * " & $Userdone & " * hat Aufgabe 1 reaktiviert")
GUICtrlSetData ($Label1, "")
IniWrite($Dataini, 'GUI Update Box', '$Checkbox1', "0")
IniWrite($Dataini, 'GUI Update User', '$Checkbox1User', $Userdone)
sleep(2)
FileDelete (@ScriptDir & "\db.activity")
EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func Checkbox2 ()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]if BitAnd(GUICtrlRead($Checkbox2),$GUI_CHECKED) = $GUI_CHECKED then
[/autoit] [autoit][/autoit] [autoit]IniWrite (@ScriptDir & "\db.activity","active","1","1")
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetBkColor($Checkbox2, 0x00FF00)
_FileWriteLog ($logpath, " * " & $Userdone & " * erledigte Aufgabe 2")
GUICtrlSetData ($Label2, $Userdone)
IniWrite($Dataini, 'GUI Update Box', '$Checkbox2', "1")
IniWrite($Dataini, 'GUI Update User', '$Checkbox2User', $Userdone)
sleep(2)
FileDelete (@ScriptDir & "\db.activity")
EndIf
[/autoit] [autoit][/autoit] [autoit]if BitAnd(GUICtrlRead($Checkbox2),$GUI_UNCHECKED) = $GUI_UNCHECKED then
[/autoit] [autoit][/autoit] [autoit]IniWrite (@ScriptDir & "\db.activity","active","1","1")
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetBkColor($Checkbox2, 0xFF0000)
_FileWriteLog ($logpath, " * " & $Userdone & " * hat Aufgabe 2 reaktiviert")
GUICtrlSetData ($Label2, "")
IniWrite($Dataini, 'GUI Update Box', '$Checkbox2', "0")
IniWrite($Dataini, 'GUI Update User', '$Checkbox2User', $Userdone)
sleep(2)
FileDelete (@ScriptDir & "\db.activity")
EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit]Func Checkbox3 ()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]if BitAnd(GUICtrlRead($Checkbox3),$GUI_CHECKED) = $GUI_CHECKED then
[/autoit] [autoit][/autoit] [autoit]IniWrite (@ScriptDir & "\db.activity","active","1","1")
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetBkColor($Checkbox3, 0x00FF00)
_FileWriteLog ($logpath, " * " & $Userdone & " * erledigte Aufgabe 3")
GUICtrlSetData ($Label3, $Userdone)
IniWrite($Dataini, 'GUI Update Box', '$Checkbox3', "1")
IniWrite($Dataini, 'GUI Update User', '$Checkbox3User', $Userdone)
sleep(2)
FileDelete (@ScriptDir & "\db.activity")
EndIf
[/autoit] [autoit][/autoit] [autoit]if BitAnd(GUICtrlRead($Checkbox3),$GUI_UNCHECKED) = $GUI_UNCHECKED then
[/autoit] [autoit][/autoit] [autoit]IniWrite (@ScriptDir & "\db.activity","active","1","1")
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetBkColor($Checkbox3, 0xFF0000)
_FileWriteLog ($logpath, " * " & $Userdone & " * hat Aufgabe 3 reaktiviert")
GUICtrlSetData ($Label3, "")
IniWrite($Dataini, 'GUI Update Box', '$Checkbox3', "0")
IniWrite($Dataini, 'GUI Update User', '$Checkbox3User', $Userdone)
sleep(2)
FileDelete (@ScriptDir & "\db.activity")
EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit]Func Checkbox4 ()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]if BitAnd(GUICtrlRead($Checkbox4),$GUI_CHECKED) = $GUI_CHECKED then
[/autoit] [autoit][/autoit] [autoit]IniWrite (@ScriptDir & "\db.activity","active","1","1")
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetBkColor($Checkbox4, 0x00FF00)
_FileWriteLog ($logpath, " * " & $Userdone & " * erledigte Aufgabe 4")
GUICtrlSetData ($Label4, $Userdone)
IniWrite($Dataini, 'GUI Update Box', '$Checkbox4', "1")
IniWrite($Dataini, 'GUI Update User', '$Checkbox4User', $Userdone)
sleep(2)
FileDelete (@ScriptDir & "\db.activity")
EndIf
[/autoit] [autoit][/autoit] [autoit]if BitAnd(GUICtrlRead($Checkbox4),$GUI_UNCHECKED) = $GUI_UNCHECKED then
[/autoit] [autoit][/autoit] [autoit]IniWrite (@ScriptDir & "\db.activity","active","1","1")
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetBkColor($Checkbox4, 0xFF0000)
_FileWriteLog ($logpath, " * " & $Userdone & " * hat Aufgabe 4 reaktiviert")
GUICtrlSetData ($Label4, "")
IniWrite($Dataini, 'GUI Update Box', '$Checkbox4', "1")
IniWrite($Dataini, 'GUI Update User', '$Checkbox4User', $Userdone)
sleep(2)
FileDelete (@ScriptDir & "\db.activity")
EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit]