Seite 1 von 1
Trackbar Style ?
Verfasst: 25.03.2015 17:39
von Simon74
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 ?
Re: Trackbar Style ?
Verfasst: 25.03.2015 18:00
von NicTheQuick
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 ?
Verfasst: 25.03.2015 20:21
von Sicro
Das Fenster hat unter Windows leider kein #PB_EventType_LeftClick.
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
Re: Trackbar Style ?
Verfasst: 25.03.2015 22:20
von Simon74
Vielen Dank für Tip und Beispiel.
mal sehen wie weit ich komme
Re: Trackbar Style ?
Verfasst: 25.03.2015 22:49
von Danilo
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
Re: Trackbar Style ?
Verfasst: 25.03.2015 22:59
von Simon74
Danilo hat geschrieben:Minimalbeispiel:
Na so minimal ist das nicht
Vielen Dank
Re: Trackbar Style ?
Verfasst: 25.03.2015 23:07
von Danilo
Simon74 hat geschrieben:Na so minimal ist das nicht

Hey, nur 33 Zeilen (ohne Leerzeilen), und 9 Zeilen davon sind schon das schöne Zeichnen mit Farbverlauf usw.

Re: Trackbar Style ?
Verfasst: 25.03.2015 23:11
von Simon74
So meinte ich das nicht, ich meinte:
--> Minimaler Code, mit maximaler Wirkung
