Hallo,
vom Design wäre mir die Progressbar lieber, von den Funktionen benötige ich jedoch das Trackbar Gadget. (Ich muss die Position per Maulklick anpassen können).
Kann der Style des Trackbar-Gadgets (Crossplattform tauglich) angepasst werden ?
Trackbar Style ?
- NicTheQuick
- Ein Admin
- Beiträge: 8808
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Trackbar Style ?
Um es etwas einfacher zu machen, könntest du dir auch was mit dem 'CanvasGadget()' basteln. Also in der Größe der Progressbar und mit dessen Farben, aber dass man es eben per Klick ändern kann.
Re: Trackbar Style ?
Das Fenster hat unter Windows leider kein #PB_EventType_LeftClick.
Vielleicht hilft dir mein Code trotzdem bei der Umsetzung per CanvasGadget:
Vielleicht hilft dir mein Code trotzdem bei der Umsetzung per CanvasGadget:
Code: Alles auswählen
Procedure MouseOverGadget(Window, Gadget)
Protected.i MouseX, MouseY, GadgetX, GadgetY, GadgetWidth, GadgetHeight
MouseX = WindowMouseX(Window)
MouseY = WindowMouseY(Window)
GadgetX = GadgetX(Gadget, #PB_Gadget_WindowCoordinate)
GadgetY = GadgetY(Gadget, #PB_Gadget_WindowCoordinate)
GadgetWidth = GadgetWidth(Gadget)
GadgetHeight = GadgetHeight(Gadget)
If MouseX >= GadgetX And MouseX <= (GadgetX + GadgetWidth) And MouseY >= GadgetY And MouseY <= (GadgetY + GadgetHeight)
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure.f GetProgressBarStepWidth(ProgressBarGadget)
Protected.i ProgressBarValueRange
ProgressBarValueRange = GetGadgetAttribute(ProgressBarGadget, #PB_ProgressBar_Maximum)
ProgressBarValueRange - GetGadgetAttribute(ProgressBarGadget, #PB_ProgressBar_Minimum)
ProcedureReturn GadgetWidth(ProgressBarGadget) / ProgressBarValueRange
EndProcedure
Define Event.i, Value.f
If OpenWindow(0, #PB_Ignore, #PB_Ignore, 500, 100, "test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ProgressBarGadget(0, 10, 30, 480, 30, 0, 100, #PB_ProgressBar_Smooth)
; #PB_ProgressBar_Smooth - Auf Windows XP mit eingeschalteten Skins und auf OS X hat dieses Flag keinen Effekt.
; PB_ProgressBar_Smooth-Workaround für Windows
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
If IsAppThemed_()
SetWindowTheme_(GadgetID(0), @" ", @" ") ; Theme beim Gadget deaktivieren
EndIf
CompilerEndIf
Repeat
Event = WaitWindowEvent()
If MouseOverGadget(0, 0) ;And EventType() = #PB_EventType_LeftClick ; Linux
Value = WindowMouseX(0) - GadgetX(0, #PB_Gadget_WindowCoordinate)
Value / GetProgressBarStepWidth(0)
SetGadgetState(0, Value)
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
Zuletzt geändert von Sicro am 25.03.2015 23:16, insgesamt 3-mal geändert.

Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Re: Trackbar Style ?
Vielen Dank für Tip und Beispiel.
mal sehen wie weit ich komme
mal sehen wie weit ich komme
Re: Trackbar Style ?
Minimalbeispiel:
Code: Alles auswählen
Procedure RepaintCanvas(x)
If StartDrawing( CanvasOutput(0) )
Box(0,0,OutputWidth(),OutputHeight(),RGB($FF,$FF,$FF))
DrawingMode(#PB_2DDrawing_Gradient)
BackColor(RGB($40,$40,$40))
FrontColor(RGB($DD,$DD,$DD))
LinearGradient(0, 0, OutputWidth(), OutputHeight())
Box(0,0,OutputWidth(),OutputHeight())
DrawingMode(#PB_2DDrawing_Default)
Box(x,0,OutputWidth()-x,OutputHeight(),RGB($FF,$FF,$FF))
Box(x-3,0,5,OutputHeight(),RGB($00,$00,$00))
StopDrawing()
EndIf
Debug x
EndProcedure
Procedure OnLeftClick()
RepaintCanvas( GetGadgetAttribute(0,#PB_Canvas_MouseX) )
EndProcedure
Procedure OnMouseMove()
If GetGadgetAttribute(0,#PB_Canvas_Buttons) & #PB_Canvas_LeftButton
x = GetGadgetAttribute(0,#PB_Canvas_MouseX)
If x < 0 : x = 0 : EndIf
If x > GadgetWidth(0) : x = GadgetWidth(0) : EndIf
RepaintCanvas( x )
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 220, 120, "CanvasGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0, 10, 10, 200, 20)
RepaintCanvas(50)
BindGadgetEvent(0, @OnLeftClick(),#PB_EventType_LeftClick)
BindGadgetEvent(0, @OnMouseMove(),#PB_EventType_MouseMove)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Re: Trackbar Style ?
Na so minimal ist das nichtDanilo hat geschrieben:Minimalbeispiel:

Vielen Dank
Re: Trackbar Style ?
Hey, nur 33 Zeilen (ohne Leerzeilen), und 9 Zeilen davon sind schon das schöne Zeichnen mit Farbverlauf usw.Simon74 hat geschrieben:Na so minimal ist das nicht

cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Re: Trackbar Style ?
So meinte ich das nicht, ich meinte:
--> Minimaler Code, mit maximaler Wirkung
--> Minimaler Code, mit maximaler Wirkung
