hey all,
ich wollte euch mal fragen ob man
bei der progressbar irgendwie den style ändern kann
von windows xp auf ka win98 von mir aus, sodass man
die farbe etc. verändern kann..
ist das irgendwie möglich?
danke
progressbar xp style
-
- [ gelöst ]
-
Frayzer -
18. Oktober 2010 um 11:46 -
Geschlossen -
Erledigt
-
-
am einfachsten gehts mit nem gefärbten label:
[autoit]#include <GuiConstantsEx.au3>
[/autoit]
GuiCreate("Sample GUI", 300, 200)
$zahl = 0
$g1 = GuiCtrlCreatelabel("",80, 80, $zahl, 20)
GUICtrlSetBkColor(-1, 0xff0000)
$g2 = GuiCtrlCreateLabel("Progress: " & $zahl, 5, 82, 70, 16)
GuiSetState()
for $i = 1 to 10
sleep(700)
$zahl += 10
GUICtrlSetPos ( $g1, 80, 80, $zahl, 20)
GUICtrlSetData($g2, "Progress: " & $zahl)
next
exit -
hm da hast du eigentlich recht, könnte man auch machen
-
- Offizieller Beitrag
Ein DLL-Call schaltet aber auch auf den klassischen Stil um.
Ich hatte dazu mal ein Beispiel erstellt:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <SliderConstants.au3>
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>Global $hGui = GUICreate('Klassische Progressbar', 420, 280, -1, -1)
[/autoit] [autoit][/autoit] [autoit]DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 0) ; auf den klassischen Style umschalten
[/autoit] [autoit][/autoit] [autoit]
Global $hProgress1 = GUICtrlCreateProgress(15, 20, 384, 20, $PBS_SMOOTH) ; obere Progressbar erstellen
GUICtrlSetColor(-1, 0x22FF22)
GUICtrlSetBkColor(-1, 0xEEEEEE)
GUICtrlCreateLabel('|', 18, 40, 20, 16) ; Anzeige von 0%
GUICtrlCreateLabel('0%', 11, 56, 25, 16, $SS_CENTER)
GUICtrlCreateLabel('|', 396, 40, 20, 16) ; Anzeige von 100%
GUICtrlCreateLabel('100%', 389, 56, 25, 16, $SS_CENTER)Global $hLabel1 = GUICtrlCreateLabel('0%', 190, 23, 30, 14, $SS_CENTER) ; Prozentanzeige innerhalb der Progressbar
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ; Transparenter Hintergrund für das LabelGlobal $hProgress2 = GUICtrlCreateProgress(15, 160, 384, 20, $PBS_SMOOTH) ; untere Progressbar erstellen
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetColor(-1, 0xC83131)
GUICtrlSetBkColor(-1, 0xEEEEEE)
DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 7) ; zurück zum Standard-WindowsstyleFor $i = 0 To 100 Step 10 ; die Anzeige für die Prozentwerte der unteren Progressbar erstellen
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateLabel('|', 16 + $i * 3.8, 180, 20, 16)
GUICtrlCreateLabel($i & '%', 9 + $i * 3.8, 196, 25, 16, $SS_CENTER)
NextGlobal $hSlider = GUICtrlCreateSlider(5, 130, 404, 28, BitOR($TBS_TOOLTIPS, $TBS_AUTOTICKS))
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData(-1, 33) ; Sliderwert auf 33% setzen (als Beispiel)Global $hClose = GUICtrlCreateButton('Close', 180, 240, 60, 24)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)Global $iAddend = 1 ; globale Variable (dient als Summand für _SetProgress)
[/autoit] [autoit][/autoit] [autoit]
AdlibRegister('_SetProgress', 50)While True
[/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $hClose
AdlibUnRegister()
Exit
EndSwitch
WEndFunc _SetProgress()
[/autoit]
Local $iPercent = GUICtrlRead($hProgress1) ; Prozentwert der oberen Progressbar auslesen
If $iPercent = 100 Or $iPercent = 0 Then $iAddend = -$iAddend ; wenn 100 oder Null, dann den Summand negieren
GUICtrlSetData($hProgress1, $iPercent + $iAddend) ; neuen Wert der oberen Progressbar schreiben
GUICtrlSetData($hLabel1, $iPercent + $iAddend & '%') ; neuen Wert für das Label schreiben
GUICtrlSetData($hProgress2, GUICtrlRead($hSlider)) ; und den Wert vom Slider in die untere Progressbar schreiben
EndFunc ;==>_SetProgress -
das ist natürlich noch besser, vielen dank