Hochzählen mit autoit^^ Wieder ein Problem für mich-.-

07/05/2010 23:40 WiiZocker#1
Hi^^ Habe mir überlegt einen Countdown mit autoit zu basteln.
Ich bin gerade dabei es so zu programmieren das ich die zeit per Button selber einstellen kann.

Also bei 1 mal draufklicken soll der timer unter dem wort "Stunde" also den beiden 00 immer eine zahl dazurechnen. Bei mir tut sich dort garnichts-.- habe es mit Guictrlsetdata versucht und ohne xD aber es geht nicht.

Im skript habe ich an der entsprechenden stelle meine misslungenden versuche hingeschrieben und was dabei rauskam...

Hier der gesammte code:

Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

;Das Hauptfenster
#Region ### START Koda GUI section ### Form=c:\users\jan\desktop\autoit\shutdown timer\shutdown hauptfenster.kxf
$Hauptfenster = GUICreate("Shutdown By Jan25051", 269, 214, 337, 426)
$Start = GUICtrlCreateButton("Start", 80, 144, 187, 65, 0)
$Stop = GUICtrlCreateButton("Stop", 0, 144, 83, 41, 0)
$StopPasswort = GUICtrlCreateInput("Passwort", 0, 184, 81, 21)
$StundenSchrift = GUICtrlCreateLabel("Stunden", 16, 80, 64, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Reference Sans Serif")
$Stunden = GUICtrlCreateLabel("00", 32, 104, 26, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Reference Sans Serif")
$MinutenSchrift = GUICtrlCreateLabel("Minuten", 96, 80, 62, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Reference Sans Serif")
$SekundenSchrift = GUICtrlCreateLabel("Sekunden", 176, 80, 75, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Reference Sans Serif")
$Minuten = GUICtrlCreateLabel("00", 112, 104, 26, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Reference Sans Serif")
$Sekunden = GUICtrlCreateLabel("00", 200, 104, 26, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Reference Sans Serif")
$ZeitButton = GUICtrlCreateButton("Zeit Ändern", 16, 16, 235, 41, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###






;Das Nebenfenster "Zeit Ändern"
#Region ### START Koda GUI section ### Form=C:\Users\Jan\Desktop\AutoIt\Shutdown Timer\Zeit Ändern Nebenfenster.kxf
$Zeitfenster = GUICreate("Zeit Ändern", 316, 124, 354, 237)
$StdPlus = GUICtrlCreateButton("Std.+1", 0, 40, 43, 41, 0)
$StdMinus = GUICtrlCreateButton("Std.-1", 48, 40, 43, 41, 0)
$MinPlus = GUICtrlCreateButton("Min.+1", 112, 40, 43, 41, 0)
$MinMinus = GUICtrlCreateButton("Min.-1", 160, 40, 43, 41, 0)
$SekPlus = GUICtrlCreateButton("Sek.+1", 224, 40, 43, 41, 0)
$SekMinus = GUICtrlCreateButton("Sek.-1", 272, 40, 43, 41, 0)
$Schliessen = GUICtrlCreateButton("Schließen", 120, 88, 75, 33, 0)

GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $ZeitButton
		If GUICtrlRead($StopPasswort) = "Passwort" Then
		GUISetState(@SW_SHOW, $Zeitfenster)
	EndIf
	
Case $Schliessen
	GUISetState(@SW_HIDE, $Zeitfenster)
	
Case $StdPlus
	;Was kommt hier hin? Ich habe es so versucht:
	
	;GUICtrlSetData($Stunden, $Stunden +1)
	
	;Doch da kommt bei mir eine 8 raus o.O?
	
	
	
	;Und nochmal so ähnlich:
	
	;GUICtrlSetData($Stunden, +1)
	
	;Aber der wert ändert sich nur auf 1 und geht nicht höher...

	EndSwitch
WEnd
Bitte helft mir
07/05/2010 23:42 Kazaaa#2
Das ist doch bloß n GUI bis jetzt, kein Wunder das sich da nichts tut..
07/06/2010 00:12 WiiZocker#3
Scroll das mal runter zu Case $StdPlus, da muss ich die funktion einbauen aber das problem ist ja, WELCHER code dort reingehört^^
2 beispiele von den sachen die ich versucht habe stehen dort auch.

OK im grunde haste recht, im mom ist das nur ne GUI
07/06/2010 00:33 WieMeinen#4
Quote:
GuictrlsetData($stunden, GuiCtrlRead($Stunden) + 1)
Sonst bekommst du nur das Attribut von $Stunden und nicht den Inhalt...
07/06/2010 00:39 WiiZocker#5
OH Super, kann es zwar gerade ned testen aber es sieht vielversprechend aus, DANKE(=

-Edit: Es hat geklappt danke(= Wenn ich noch fragen habe schreibe ich sie hier als Edit rein, weil ich kein Doppelpost machen möchte.

So wie ich mir schon dachte muss ich wieder eine Frage stellen, ich hoffe es antwortet mir noch wer ^^

Ich habe alles soweit fertig, doch jetzt möchte ich eine Pause funktion einbauen, da ich aber noch eine while schleife brauchte, sind alle felder während die Zeit abläuft deaktiviert.

Ich poste hier mal den gesammten code:
Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>




;Das Hauptfenster
#Region ### START Koda GUI section ### Form=c:\users\jan\desktop\autoit\shutdown timer\shutdown hauptfenster.kxf
$Hauptfenster = GUICreate("Shutdown By Jan25051", 269, 214, 337, 426)
$Start = GUICtrlCreateButton("Start", 80, 144, 187, 65, 0)
$Stop = GUICtrlCreateButton("Stop", 0, 144, 83, 41, 0)
$StopPasswort = GUICtrlCreateInput("Passwort", 0, 184, 81, 21) ;Das passwort muss ich ändern.
$StundenSchrift = GUICtrlCreateLabel("Stunden", 16, 80, 64, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Reference Sans Serif")
$Stunden = GUICtrlCreateLabel("00", 32, 104, 26, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Reference Sans Serif")
$MinutenSchrift = GUICtrlCreateLabel("Minuten", 96, 80, 62, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Reference Sans Serif")
$SekundenSchrift = GUICtrlCreateLabel("Sekunden", 176, 80, 75, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Reference Sans Serif")
$Minuten = GUICtrlCreateLabel("00", 112, 104, 26, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Reference Sans Serif")
$Sekunden = GUICtrlCreateLabel("00", 200, 104, 26, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Reference Sans Serif")
$ZeitButton = GUICtrlCreateButton("Zeit Ändern", 16, 16, 235, 41, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###






;Das Nebenfenster "Zeit Ändern"
#Region ### START Koda GUI section ### Form=C:\Users\Jan\Desktop\AutoIt\Shutdown Timer\Zeit Ändern Nebenfenster.kxf
$Zeitfenster = GUICreate("Zeit Ändern", 316, 124, 354, 237)
$StdPlus = GUICtrlCreateButton("Std.+1", 0, 40, 43, 41, 0)
$StdMinus = GUICtrlCreateButton("Std.-1", 48, 40, 43, 41, 0)
$MinPlus = GUICtrlCreateButton("Min.+1", 112, 40, 43, 41, 0)
$MinMinus = GUICtrlCreateButton("Min.-1", 160, 40, 43, 41, 0)
$SekPlus = GUICtrlCreateButton("Sek.+1", 224, 40, 43, 41, 0)
$SekMinus = GUICtrlCreateButton("Sek.-1", 272, 40, 43, 41, 0)
$Schliessen = GUICtrlCreateButton("Schließen", 120, 88, 75, 33, 0)

GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###



While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $ZeitButton
		If GUICtrlRead($StopPasswort) = "Passwort" Then
		GUISetState(@SW_SHOW, $Zeitfenster)
	EndIf
	
Case $Schliessen
	GUISetState(@SW_HIDE, $Zeitfenster)
	
	;Zeit einstellen START
Case $StdPlus
	GUICtrlSetData($Stunden, GUICtrlRead($Stunden) +1)

Case $StdMinus
	GUICtrlSetData($Stunden, GUICtrlRead($Stunden) -1)
	

	
	
Case $MinPlus
	GUICtrlSetData($Minuten, GUICtrlRead($Minuten) +1)
	;Überprüfen ob die Zahl der Minuten 60 ist.
 If GUICtrlRead($Minuten) = 60 Then
	GUICtrlSetData($Stunden, Guictrlread($Stunden) +1)
	GUICtrlSetData($Minuten,"00")
 EndIf

Case $MinMinus
	GUICtrlSetData($Minuten, GUICtrlRead($Minuten) -1)
	;Überprüfen ob die Zahl der Minuten -60 ist.
	If GUICtrlRead($Minuten) = -60 Then
	GUICtrlSetData($Stunden, Guictrlread($Stunden) -1)
	GUICtrlSetData($Minuten,"00")
EndIf

Case $SekPlus
	GUICtrlSetData($Sekunden, GUICtrlRead($Sekunden) +1)
	;Überprüfen ob die Zahl der Sekunden 60 ist.
	If GUICtrlRead($Sekunden) = 60 Then
	GUICtrlSetData($Minuten, Guictrlread($Minuten) +1)
	GUICtrlSetData($Sekunden,"00")
	EndIf
	
	
Case $SekMinus
	GUICtrlSetData($Sekunden, GUICtrlRead($Sekunden) -1)
	;Überprüfen ob die Zahl der Sekunden -60 ist.
	If GUICtrlRead($Sekunden) = -60 Then
	GUICtrlSetData($Minuten, Guictrlread($Minuten) -1)
	GUICtrlSetData($Sekunden,"00")
	EndIf
	;Zeit einstellen ENDE
	

Case $Stop
	 If GUICtrlRead($StopPasswort) = "Passwort" Then
		 
		 ;HIER kommt die pause funktion rein^^
  
	EndIf


Case $Start
	;Countdown START
		While 1
			
 
			
			
			
			
			
			
		Sekunden_runterzaehlen()
		
	If Guictrlread($Sekunden) = "0" Then ;Überprüft ob die Sekunden auf 0 stehen.
		If GUICtrlRead($Minuten) >= "0" Then ;Weil die Sekunden auf 0 stehen, wird überprüft ob die Minuten 1 oder höher als 1 ist.
			GUICtrlSetData($Sekunden,"60") ;Weil die Minuten 1 oder höher als 1 waren,werden die Sekunden wieder auf 60 gestellt.
			GUICtrlSetData($Minuten, Guictrlread($Minuten) -1) ;Die Minuten werden hier um eine reduziert.
		
		
			
		If GUICtrlRead($Minuten) = "0" Then
		If GUICtrlRead($Stunden) >= "1" Then
			GUICtrlSetData($Minuten,"60")
			GUICtrlSetData($Stunden, Guictrlread($Stunden) -1)

        Else
		
		GUICtrlSetData($Stunden,"00") ;Weil der Countdown abgelaufen ist, stellt sich die zeit auf 00 statt auf 0 ;D nur um es ansehnlicher zu machen.
		
		GUICtrlSetData($Minuten,"00") ;Weil der Countdown abgelaufen ist, stellt sich die zeit auf 00 statt auf 0 ;D nur um es ansehnlicher zu machen.
		
		GUICtrlSetData($Sekunden,"00") ;Weil der Countdown abgelaufen ist, stellt sich die zeit auf 00 statt auf 0 ;D nur um es ansehnlicher zu machen.
		

		ExitLoop
		EndIf
	EndIf
EndIf
EndIf

	WEnd
	
;Countdown ENDE
	
	
	
	
	
	
	EndSwitch
WEnd

Func Sekunden_runterzaehlen()
	
	For $i = Guictrlread($Sekunden) To 0 Step -1
			GUICtrlSetData($Sekunden,$i)
			Sleep(1000)
	Next
		
	EndFunc
Und wehe ich muss deshalb nen neuen Thread aufmachen, ich mag das nicht^^
Habs jezt doch getan, pls closen