Und wieder muss ich dir danken Bernd, genau so wie ich es mir vorgestellt habe. Vielen Danke
Neuling hat einige Fragen
-
- [ offen ]
-
MisterBill -
25. Februar 2008 um 22:52 -
Geschlossen -
Erledigt
-
-
Und wieder habe ich eine kleine Frage. Ich würde gerne abhängig vom ausgelesenen Wert den Titel des Fenster ändern. Soweit habe ich das auch mit
[autoit];...
[/autoit]
If GUICtrlRead($controlZeny) <> $varZeny_format Then GUICtrlSetData($controlZeny, $varZeny_format)
WinSetTitle($Gui, "", $varName_read)
Sleep(500)
WEnd
;...hinbekommen. Doch nun habe ich hier das Problem das es ja bei jedem Durchlauf neu geschrieben wird und so die Anzeige flackert. Ich habe schon verschiedenes versucht, aber ohne Erfolg. Habt ihr eine Idee wie ich das flackern minimieren kann, weil theoretisch muss er das nur neu schreiben, wenn sich auch der Wert varName_read bzw. der Prozess ändert. Irgendwo muss da bestimmt eine Abfrage rein, aber genau daran bin ich gescheitert.
Vielen Dank und Mfg
-
- Offizieller Beitrag
Hi!
Speicher (oder lies aus) den aktuellen Titel und setze ihn nur neu, wenn er sich auch wirklich geändert hat.
peethebee
-
- Offizieller Beitrag
Hallo,
[autoit]If WinGetTitle($Gui) <> $varName_read Then WinSetTitle($Gui, "", $varName_read)
[/autoit] -
Danke Bernd, wie zu erwarten war, genau das was ich gebraucht habe. Ich habe aber gleich noch ein Problem und zwar möchte ich mir einen Wert grafisch in einer Progressbar anzeigen lassen. Der Wert ändert sich relativ häufig und kann sowohl steigen als auch fallen.
[autoit]$Progress = GUICtrlCreateProgress(..., $PBS_SMOOTH)
[/autoit]Rein die Progressbar zu erstellen ist noch einfach, aber ich bekomme sie einfach nicht richtig gefüllt. Ich habe sowohl den aktuellen Wert, den Endwert und beginnen tut es immer bei 0.
[autoit]Func
[/autoit]
For ... = 0 To ...
GUICtrlSetData(...)
Next
EndFuncIn verschiedenen Beispielen habe ich sowas wie oben gesehen, bekomme es aber nicht zum laufen. Danke im voraus für eure Hilfe.
-
- Offizieller Beitrag
Hier mal ein Bsp. für Progressbar.
Die Variable $vor dient hier nur als Krücke um in die Case-Auswahl zu gelangen.
Beim Richtungswechsel wird mit ContinueCase ja ohne Wertprüfung in den folgende Case zur Abarbeitung gewechselt.Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
Global $vor = TrueGUICreate("My GUI Progressbar",220,100, 100,200)
[/autoit] [autoit][/autoit] [autoit]
$progressbar = GUICtrlCreateProgress (10,40,200,20,$PBS_SMOOTH)
$button = GUICtrlCreateButton ("Vorwärts",75,70,70,20)
GUISetState ()$wait = 20; wait 20ms for next progressstep
[/autoit]
$s = 0 ; progressbar-saveposition
Do
$msg = GUIGetMsg()
If $msg = $button Then
Select
Case $vor
GUICtrlSetData($button, 'Rückwärts')
For $i = $s To 100
$m = GUIGetMsg()
If $m = $button Then ContinueCase
GUICtrlSetData($progressbar, $i)
$s = $i
Sleep($wait)
Next
Case Not $vor
GUICtrlSetData($button, 'Stop')
For $i = $s To 0 Step -1
$m = GUIGetMsg()
If $m = $button Then ExitLoop
GUICtrlSetData($progressbar, $i)
$s = $i
Sleep($wait)
Next
EndSelect
GUICtrlSetData($button, 'Vorwärts')
EndIf
Until $msg = $GUI_EVENT_CLOSE -
Wochenende und etwas Zeit mich damit zu beschäftigen. Zuerst danke für das Beispielt mit der Progressbar aber ganz Schlau werde ich daraus nicht. Mir geht folgende Vorgehensweise im Kopf rum. Kann man nicht sagen Startpunkt ist X (immer Null), Endpunkt ist Y (fixer Wert, ändert sich nur wenn bei 100% bzw. die neue Runde beginnt) und aktueller Wert ist Z (aktueller Wert der sich natürlich auch ändert). Nun prüfe ich alle ... Sekunden wie der aktuelle Wert ist und schreibe den einfach in die Bar rein. Geht das bzw. funktioniert das Beispielt so und ich habe es einfach nicht verstanden!?
Danke vorab und genießt den sonnigen Samstag
-
Inzwischen habe ich es hinbekommen und musste auch feststellen, das ich einen total komplizierten Weg im Kopf hatte. Gestern ist es mir dann wie Schuppen von den Augen gefallen und es war eigentlich ganz einfach. Ich habe aber wieder 2-3 kleinere Fragen. Wie kann ich es bewerkstelligen, das das Programm nach dem Start erstmal pausiert und seinen Dienst erst nach dem Klick auf einen Knopf aufnimmt? Und wie kann ich die Anzeige der ausgelesenen Werte komplett leeren, also quasi auf den pausierenden Anfangszustand zurücksetzten? Muss ich die Variablen da irgendwie mit 0 auffüllen oder sowas?
Mfg und Danke
Bill -
Zu Frage 1
Spoiler anzeigen
[autoit]$button = ...
[/autoit]
While 1
$msg = GUIGetMsg()
Select
Case $msg = $button
;HIER dein Script rein
EndSelect
Wend
Zu zweitens:
Entweder nach beendigung deines vorgangs , deine variable wieder in den anfangszustand versetzen oder
mit guictrlsetdata.gruß
-