PureBoard
http://forums.purebasic.com/german/

Basiscode für einen Schiebeschalter Ein Aus
http://forums.purebasic.com/german/viewtopic.php?f=8&t=31768
Seite 1 von 1

Autor:  hjbremer [ 13.12.2019 11:41 ]
Betreff des Beitrags:  Basiscode für einen Schiebeschalter Ein Aus

Hallo

unter Windows 10 sieht man ab und zu einen Ein-Aus Schalter wo man einen Knopf hin und her schiebt

ich habe hier mal einen Startcode für so einen Button. sozusagen Beta 0.1

es fehlt :
senkrechte Ausführung
schöneres Design wie abgerundete Ecken, bessere Farben, ev. Beschriftung usw.
intelligente State Abfrage, momentan über GetGadgetData().
Schiebegeschwindigkeit bei schnellen und langsamen Rechnern. Delay() ?
bessere Eventverarbeitung
etc.

da Vectordrawing ab PB 5.42 sinnvoll

Ideen und Vorschläge willkommen !

Code:
Global colorback
Global colorback_on = $ff000000+#Red
Global colorback_off = $ff000000+#Gray

Global colorknop = $fffedcba

Global abstand = 3

Global knopdelay = 2

Procedure moveknop_Draw(pbnr, x)
   
   br = GadgetWidth(pbnr)
   hh = GadgetHeight(pbnr) 
   r  = (hh - 8) / 2 
   y  = r + 4   
   
   StartVectorDrawing(CanvasVectorOutput(pbnr))
      AddPathBox(0, 0, br, hh): VectorSourceColor(colorback): FillPath()         
      AddPathCircle(x, y, r): VectorSourceColor(colorknop): FillPath()         
   StopVectorDrawing()
   Delay(knopdelay)
   
EndProcedure

Procedure moveknop_Press(pbnr)
   
   state = GetGadgetData(pbnr)
   
   If state = 0
      state = 1
   Else
      state = 0
   EndIf   
   
   br = GadgetWidth(pbnr)
   hh = GadgetHeight(pbnr) 
   r  = (hh - 8) / 2 
   y  = r + 4   
     
   von = abstand
   bis = br-r-r-abstand
   
   If state = 1
      x = r + abstand -1
      f = 1
   Else     
      x = br - r - abstand +1
      f = -1
   EndIf
   
   For j = von To bis
      oldback = colorback
      If j = bis And state = 1
         colorback = colorback_on
      EndIf
      x + f
      moveknop_Draw(pbnr, x)
      colorback = oldback
   Next
   
   SetGadgetData(pbnr, state)
   
EndProcedure

Procedure moveknop_Create(pbnr, x, y, br, hh, state)
   
   CanvasGadget(pbnr, x, y, br, hh)
   
   SetGadgetAttribute(pbnr, #PB_Canvas_Cursor, #PB_Cursor_Hand)
   
    r = (hh - 8) / 2

   If state = 0
      x = r + abstand
      colorback = colorback_off
   Else
      x = br - r - abstand
      colorback = colorback_on
   EndIf   
   
    moveknop_Draw(pbnr, x)   
   
    SetGadgetData(pbnr, state)
   
EndProcedure




If OpenWindow(0, 0, 0, 220, 220, "Canvas example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   
   moveknop_Create(1, 11, 11, 50, 30, 0)
   moveknop_Create(2, 11, 55, 30, 22, 1)
   
   moveknop_Create(3, 11, 90, 90, 50, 1)
   moveknop_Create(4, 11, 150, 90, 50, 0)
   
   
    Repeat
      Event = WaitWindowEvent()
   
      If Event = #PB_Event_Gadget
         
         Select EventGadget()
               
          Case 1
             
             If EventType() = #PB_EventType_LeftButtonDown                 
                moveknop_Press(1)
             EndIf
     
          Case 2
             
             If EventType() = #PB_EventType_LeftButtonDown                 
                moveknop_Press(2)
             EndIf
     
         Case 3
             
             If EventType() = #PB_EventType_LeftButtonDown                 
                moveknop_Press(3)
             EndIf
     
         Case 4
             
             If EventType() = #PB_EventType_LeftButtonDown                 
                moveknop_Press(4)
             EndIf
     
        EndSelect
      EndIf
   
    Until Event = #PB_Event_CloseWindow
  EndIf

Autor:  Thorsten1867 [ 14.12.2019 14:24 ]
Betreff des Beitrags:  Re: Basiscode für einen Schiebeschalter Ein Aus

Die Idee hat mir so gut gefallen, dass ich sie für meine Gadget-Sammlung übernommen habe:
https://www.purebasic.fr/english/viewtopic.php?f=27&t=74210

Autor:  hjbremer [ 22.12.2019 23:27 ]
Betreff des Beitrags:  Re: Basiscode für einen Schiebeschalter Ein Aus - nun V.1.03

aus dem Basiscode ist mehr geworden, viel mehr wie immer

Code:
;- Ein-Ausschalter ab PB 5.42 (x86) (x64) für Windows. Linux und MacOs sollte auch gehen.

   ;HJBremer - 12.2019 V.1.03, geschrieben unter Windows 10 mit PB 5.70 LTS (x64) oder (x86)

   ;
   
;Moveknop(pbnr, x, y, width, height, state=0, pbcolor=$f0f0f0)
;     x, y, width, height: Gadgetposition und Größe
;     state: Schalterstellung bei Start, 0 = aus, 1 = ein
;     pbcolor: ParentBackColor ist bei Windows 10 Fenster + Container oft $f0f0f0, Panel = #white

;     wenn mit SetWindowColor() + SetGadgetColor() geändert, muß pbcolor angegeben werden.
;     PB hat keinen Befehl der dies erledigt. GetColor liefert erst wenn SetColor benutzt wurde.

;Moveknop_Value(pbnr, typ, wert)    Aussehen des Knop: Style oder Speed oder Farben einstellen
;     pbnr: Nummer um das Gadget zu identifizieren oder #PB_Default
;     typ:  #knopstyle
;     wert: 0=normal, 1=Gradientfarbe mit einem Grauwert, 2=GradientColor mit 2 Grauwerten
;                       Gradientfarbe ist grau bis \colorknop
;
;     typ:  #speedloop + #speeddelay dient der Verzögerung um Bewegung zu simulieren
;     wert: für loop ca 10-50, für delay ca 0-10

;     typ:  #colorframe für Rahmen, wenn kein Rahmen gewünscht auf parentbackcolor setzen z.B. $F0F0F0
;     wert: RGB Farbwert

;     typ:  #colorring ist der äussere Rand des Knops
;     typ:  #colorback_on + #colorback_off ist Gadgetfarbe je für on/off
;     typ:  #colorknop_on + #colorknop_off ist Knopfarbe je für on/off
;     typ:  #colortext_on + #colortext_off ist Textfarbe je für on/off

;     typ:  #showinfo zeigt Textrahmen + pbnr + state, aber nur wenn Text mit SetText zugewiesen wurde.

;Moveknop_Free(pbnr) gibt Structure-Memory frei, wichtig für temporäre Gadgets

;Moveknop_GetState(pbnr) Schalterstellung abfragen ergibt 0 oder 1

;Moveknop_SetState(pbnr, wert) Schalterstellung setzen wert ist 0 oder 1

;Moveknop_SetText(pbnr, text$, texthh, textpos=0) Text  + Textgröße setzen, Text im Knopf oder
;     text$:   Text für Schalterstellung z.B. "0,1", "on,off"
;     texthh:  Schriftgröße siehe auch Hilfe VectorFont()
;     textpos: Textposition, 0 ist ausserhalb vom Knop, 1 ist im Knop

;Allgemein
;  #PB_Any ist bei Moveknop_Value() erlaubt. Ändert die Voreinstellung
;  #PB_Any ist bei Moveknop() erlaubt. Rückgabewert ist dann die PB Nr.

;  In der MainEventschleife muß immer EventType() abgefragt werden !!!

;  alle Farben sind RGB Werte in HEX, also BGR Reihenfolge. Alpha wird intern in Draw addiert.

DeclareModule MoveButton
   
   Declare.i Moveknop(pbnr, x, y, width, height, state=0, pbcolor=$f0f0f0)
   
   Declare.i Moveknop_Value(pbnr, typ, wert)
   Declare.i Moveknop_Free (pbnr)
   Declare.i Moveknop_GetState(pbnr)
   Declare.i Moveknop_SetState(pbnr, state)
   Declare.i Moveknop_SetText (pbnr, text$, texthh, textpos=0)
   
   Enumeration
      #showinfo
      #knopstyle
      #speedloop
      #speeddelay
      #colorframe
      #colorring
      #colorback_on
      #colorback_off
      #colorknop_on
      #colorknop_off
      #colortext_on
      #colortext_off
     
   EndEnumeration
   
EndDeclareModule

Module MoveButton
   
   EnableExplicit
   
   ;- Structure
   
   Structure moveknop
     
      pbnr.i
      width.d           ;Gadget breite/höhe
      height.d
     
      xknop.d           ;x+y = posi vom knop
      yknop.d
     
      knopgap.d         ;Abstand Knopf von der Gadgetseite
      framegap.d        ;Abstand Rahmen vom Gadget   
     
      knopsize.d        ;Knopf Durchmesser = 2 x Radius
      knopradius.d      ;vom Knopf
      frameradius.d     ;vom GadgetRahmen
     
      parentbackcolor.i ;ParentFenster Backcolor
     
      colorback.i       ;intern GadgetBackColor
      colorknop.i       ;intern KnopfColor innen
      colortext.i       ;intern Textcolor
     
      colorframe.i      ;Rahmenfarbe     
      colorring.i       ;KnopfColor aussen
      colorback_on.i    ;wenn eingeschaltet
      colorback_off.i   ;wenn aus   
      colorknop_on.i    ;wenn eingeschaltet
      colorknop_off.i   ;wenn aus     
      colortext_on.i    ;wenn eingeschaltet
      colortext_off.i   ;wenn aus
     
      style.i        ;wenn 1, dann #colorknop_on _off definieren, wobei off dunkler sein muß. $FFDD00 $FF6600
      loop.i         ;anzahl Aufrufe zum Zeichnen für Bewegung vom Knop
      delay.i        ;zusätzliche Verzögerung beim zeichnen
      align.i        ;Ausrichtung vertikal / horizontal
      state.i        ;off / on = 0 oder 1
      push.i
     
      info.i         ;zeigt Textrahmen etc
      texthh.i       ;Texthöhe siehe Moveknop_Text(pbnr, text$, texthh)
      textpos.i
      text.s         ;intern
      text_on.s      ;text$ für Moveknop_Text() = "on,off"
      text_off.s

   EndStructure
   
   ;- Default Color
   Global default_info = 0
   Global default_loop = 50
   Global default_delay = 2
   Global default_style = 0                  ;
   Global default_colorframe = #Gray
   Global default_colorring  = #Yellow       ;knop aussen
   Global default_colorback_on  = $bababa    ;hellgrau
   Global default_colorback_off = $999999    ;dunkelgrau
   Global default_colorknop_on  = $11B5FF    ;orange
   Global default_colorknop_off = $666666    ;grau
   Global default_colortext_on  = #Red
   Global default_colortext_off = #Black
   
   Global default_font = LoadFont(#PB_Any, "Consolas", 10, #PB_Font_Bold)
   
   ;- intern   
   
   Procedure.i moveknop_DrawText(*mb.moveknop)
      Protected.d x, y, textboxbr, textboxhh
         
      With *mb         
         VectorFont(FontID(default_font), \texthh)
 
         If \state
            \text = \text_on: \colortext = \colortext_on
         Else
            \text = \text_off: \colortext = \colortext_off
         EndIf
 
         If \align ;Gadget senkrecht           
            textboxbr = \height - (\knopgap*2)
            textboxhh = VectorParagraphHeight(\text, textboxbr, \height)
           
            RotateCoordinates(\xknop, \yknop, 90)  ;Text um Knop-Mittelpunkt drehen
           
            If \textpos ;im Knop
               x = \xknop - textboxbr/2
               y = \yknop - textboxhh/2
               
            Else        ;ausserhalb vom Knop
               x = \xknop - \knopradius
               If \state
                  y = \yknop + \knopradius + \knopgap    ;Text unter dem Knop
               Else
                  y = \yknop - \knopradius - textboxhh - \knopgap    ;Text über dem Knop
               EndIf
            EndIf
   
         Else     ;Gadget waagerecht           
            textboxbr = \width - \knopsize - (\knopgap*3) 
            textboxhh = VectorParagraphHeight(\text, textboxbr, \height)
           
            y = \yknop - textboxhh/2
            If \textpos ;im Knop
               x = \xknop - textboxbr/2
            Else        ;ausserhalb vom Knop
               If \state
                  x = \xknop - \knopradius - \knopgap - textboxbr
               Else
                  x = \xknop + \knopradius + \knopgap
               EndIf
            EndIf
         EndIf
         
         VectorSourceColor($FF000000 | \colortext)
         
         MovePathCursor(x, y) ;DrawVectorParagraph bietet oft bessere Schrift
         DrawVectorParagraph(\text, textboxbr, textboxhh, #PB_VectorParagraph_Center)

         ;Test
         If \info
            VectorSourceColor($FF000000 | #Blue)
            AddPathBox(x, y, textboxbr, textboxhh) : StrokePath(1)           
            ResetCoordinates()
            MovePathCursor(6, 0)
            DrawVectorParagraph(Str(\pbnr) + "-" + Str(\state), textboxbr+5, textboxhh)
         EndIf
         
      EndWith
     
   EndProcedure
 
   Procedure.i moveknop_DrawButton(*mb.moveknop)
     
      Protected j, a = $FF000000   ;Alphawert wird Bitweise OR Color
     
      With *mb
         
         StartVectorDrawing(CanvasVectorOutput(\pbnr))
           
            If \align   ;Senkrecht
               TranslateCoordinates(0, \width): RotateCoordinates(0, 0, 270)     
            EndIf
           
            ;Canvas komplett füllen bzw löschen mit \parentbackcolor
            AddPathBox(0, 0, \width, \height) : VectorSourceColor(a | \parentbackcolor): FillPath()
           
            ;knop Background malen mit Rahmen + runden Ecken
            Protected g = \framegap            ;abstand Rahmen vom CanvasGadget
            Protected h = \height-g-g
            Protected w = \width-g-g
            Protected r = \frameradius
           
            MovePathCursor(g+r, g)     
           
            ;Hilfe + Beispiel für AddPathArc() ist Grrrr...
            AddPathArc(w-r , 0   , w-r  , r   , r, #PB_Path_Relative)    ;oben
            AddPathArc(0   , h-r , -r   , h-r , r, #PB_Path_Relative)    ;rechts
            AddPathArc(-w+r, 0   , -w+r , -r  , r, #PB_Path_Relative)    ;unten
            AddPathArc(0   , -h+r, r    , -h+r, r, #PB_Path_Relative)    ;links
           
            VectorSourceColor(a | \colorframe)   ;Rahmenfarbe
            StrokePath(3, #PB_Path_Preserve)     ;Dicke 3 oder so, Path bleibt offen für FillPath()
           
            VectorSourceColor(a | \colorback)
            FillPath()
           
            ;knop malen
            AddPathCircle(\xknop, \yknop, \knopradius):   VectorSourceColor(a | \colorring): FillPath()
           
            If \style = 0
               AddPathCircle(\xknop, \yknop, \knopradius-2): VectorSourceColor(a | #Gray): FillPath()
               AddPathCircle(\xknop, \yknop, \knopradius-3): VectorSourceColor(a | \colorknop): FillPath()
            Else               
               VectorSourceCircularGradient(\xknop, \yknop, \knopradius-2)               
               VectorSourceGradientColor($FFe6e6e6, 0.0)
               If \style = 2
                  VectorSourceGradientColor($FF888888, 0.8)
               EndIf
               VectorSourceGradientColor(a | \colorknop, 1.0)               
               FillVectorOutput()               
               ;damit es schöner aussieht
               AddPathCircle(\xknop, \yknop, \knopradius-2): VectorSourceColor(a | \colorknop): StrokePath(1)               
            EndIf
           
            ;Text
            If \texthh : moveknop_DrawText(*mb) : EndIf
           
         StopVectorDrawing()
         Delay(\delay)
         
      EndWith
     
   EndProcedure
   
   Procedure.i moveknop_Press(*mb.moveknop)     
      Protected j, add.d
     
      With *mb
         
         If \state = 0
            \state = 1
            \xknop = \knopradius + \knopgap         
         Else
            \state = 0
            \xknop = \width - \knopradius - \knopgap         
         EndIf   
         
         add = ( \width - \xknop - \xknop) / \loop
         
         ;zeichnet knop mehrmals um Bewegung zu simulieren
         For j = 1 To \loop
            If \state = 1
               If j > \loop/2
                  \colorback = \colorback_on
                  \colorknop = \colorknop_on
                  \colortext = \colortext_on
               EndIf
            Else
               \colorback = \colorback_off
               \colorknop = \colorknop_off
               \colortext = \colortext_off
            EndIf
            \xknop + add   
            moveknop_DrawButton(*mb) ;: Debug \xknop
         Next
         
      EndWith
     
   EndProcedure
   
   Procedure.i moveknop_Event()     
     
      Protected *mb.moveknop = GetGadgetData(EventGadget())
     
      If EventType() = #PB_EventType_LeftButtonDown   ;Schalter
         moveknop_Press(*mb)
         
      ElseIf EventType() = #PB_EventType_LeftButtonUp ;Taster = normaler Button
         
         If *mb\push = 1 And *mb\state = 1
            moveknop_Press(*mb)           
         EndIf
         
      EndIf
     
   EndProcedure
   
   Procedure.i moveknop_Check(pbnr)     
      Protected error, text$
     
      If IsGadget(pbnr) = 0
         error = 1: text$ = "unbekannte Gadgetnr: " + pbnr
         
      ElseIf GadgetType(pbnr) <> #PB_GadgetType_Canvas
         error = 2: text$ = "kein CanvasGadget: " + pbnr
         
      ElseIf GetGadgetData(pbnr) = 0
         error = 3: text$ = "kein MoveButton: " + pbnr
      EndIf
     
      If error: MessageRequester("Fehler", text$) : End : EndIf

      ProcedureReturn GetGadgetData(pbnr)     
   EndProcedure
   
   ;- extern
   
   Procedure.i Moveknop_Value(pbnr, typ, wert)
     
      If pbnr = #PB_Default
         Select typ
            Case #showinfo: default_info = wert
            Case #knopstyle: default_style = wert
            Case #speedloop: default_loop  = wert
            Case #speeddelay: default_delay = wert               
            Case #colorframe: default_colorframe = wert
            Case #colorring : default_colorring  = wert                 
            Case #colorback_on : default_colorback_on  = wert                 
            Case #colorback_off: default_colorback_off = wert
            Case #colorknop_on : default_colorknop_on  = wert
            Case #colorknop_off: default_colorknop_off = wert
            Case #colortext_on : default_colortext_on  = wert
            Case #colortext_off: default_colortext_off = wert     
         EndSelect
         
      Else
         
         Protected *mb.moveknop = moveknop_Check(pbnr)
         
         With *mb           
            Select typ
                 
               Case #showinfo: \info = wert
                 
               Case #speedloop : \loop  = wert
               Case #speeddelay: \delay = wert
                 
               Case #knopstyle : \style = wert
               Case #colorframe: \colorframe = wert
               Case #colorring : \colorring  = wert
                 
               Case #colorback_on
                  \colorback_on = wert :  If \state = 1 : \colorback = wert : EndIf  ;nur wenn on
                 
               Case #colorback_off
                  \colorback_off = wert : If \state = 0 : \colorback = wert : EndIf  ;nur wenn off
                 
               Case #colorknop_on
                  \colorknop_on = wert :  If \state = 1 : \colorknop = wert : EndIf
                 
               Case #colorknop_off
                  \colorknop_off = wert : If \state = 0 : \colorknop = wert : EndIf
                 
               Case #colortext_on
                  \colortext_on = wert :  If \state = 1 : \colortext = wert : EndIf
                 
               Case #colortext_off
                  \colortext_off = wert : If \state = 0 : \colortext = wert : EndIf
                 
            EndSelect
           
            moveknop_DrawButton(*mb)
           
         EndWith
      EndIf   
     
   EndProcedure
   
   Procedure.i Moveknop_Free(pbnr)
      Protected *mb.moveknop = moveknop_Check(pbnr)
      FreeStructure(*mb)
      FreeGadget(pbnr)
   EndProcedure
   
   Procedure.i Moveknop_GetState(pbnr)
      Protected *mb.moveknop = moveknop_Check(pbnr)
      ProcedureReturn *mb\state
   EndProcedure
   
   Procedure.i Moveknop_SetState(pbnr, state)
      Protected *mb.moveknop = moveknop_Check(pbnr)
      If *mb\state <> state
         PostEvent(#PB_Event_Gadget, EventWindow(), pbnr, #PB_EventType_LeftButtonDown)
      EndIf
   EndProcedure
   
   Procedure.i Moveknop_SetText(pbnr, text$, texthh, textpos=0)
      Protected *mb.moveknop = moveknop_Check(pbnr)
      *mb\texthh = texthh
      *mb\textpos = textpos
      *mb\text_on = StringField(text$, 1, ",")
      *mb\text_off = StringField(text$, 2, ",")
      moveknop_DrawButton(*mb) 
   EndProcedure
   
   Procedure.i Moveknop(pbnr, x, y, width, height, state=0, pbcolor=$f0f0f0)
     
      Protected id, *mb.moveknop = AllocateStructure(moveknop)
     
      id = CanvasGadget(pbnr, x, y, width, height)   
      If pbnr = #PB_Any : pbnr = id : EndIf       
     
      With *mb
         
         If width > height
            \align = 0        ;knop waagerecht     
            \width = width
            \height = height
         Else
            \align = 1        ;knop senkrecht
            \width = height     
            \height = width     
         EndIf
         
         \pbnr = pbnr     
         \state = state                ;on/off = 0 oder 1
         If state = 2
            \state = 0 : \push = 1
         EndIf
         
         \parentbackcolor = pbcolor    ;Windows 10 + Container = f0f0f0, Panel = #white
         
         \info       = default_info             ;Textrahmen + pbnr + state anzeigen
         \colorframe = default_colorframe       ;Rahmen
         \colorring  = default_colorring        ;knop aussen
         \colorknop_on  = default_colorknop_on  ;Farben
         \colorknop_off = default_colorknop_off         
         \colorback_on  = default_colorback_on
         \colorback_off = default_colorback_off
         \colortext_on  = default_colortext_on
         \colortext_off = default_colortext_off
         
         \loop = default_loop    ;Anzahl Aufrufe von StartDawing() für Bewegung vom Knop
         \delay = default_delay  ;zusätzliche Verzögerung, für loop ab 10, delay ca 2
         \style = default_style  ;
         
         \framegap = 2           ; Abstand Rahmen vom CanvasGadget
         \frameradius = 10       ; Rundung Rahmen
         
         \knopgap = 6                  ; Abstand Knop vonn CanvasGadgetrand
         \knopsize = \height - 12      ; Knopdurchmesser = minus 2 x Gap
         \knopradius = \knopsize / 2   ; KnopRadius
         \yknop = \height /2           ; Mittelpunkt des Kreises     
         
         If \state = 0 ;Aus
            \xknop = \knopradius + \knopgap
            \colorback = \colorback_off
            \colorknop = \colorknop_off
         Else
            \xknop = \width - \knopradius - \knopgap
            \colorback = \colorback_on
            \colorknop = \colorknop_on 
         EndIf   
         
      EndWith
     
      SetGadgetData(pbnr, *mb)     
      SetGadgetAttribute(pbnr, #PB_Canvas_Cursor, #PB_Cursor_Hand)   
      BindGadgetEvent(pbnr, @moveknop_Event(), #PB_EventType_LeftButtonDown)
      BindGadgetEvent(pbnr, @moveknop_Event(), #PB_EventType_LeftButtonUp)
     
      moveknop_DrawButton(*mb) 
     
      ProcedureReturn id     
   EndProcedure
   
EndModule

UseModule MoveButton

CompilerIf #PB_Compiler_IsMainFile   
   
   Enumeration     
      #moveknop1 = 1
      #moveknop2
      #moveknop3
      #moveknop4
      #moveknop10 = 10
      #moveknop11
      #moveknop12
      #moveknop13
      #moveknop20 = 20
      #moveknop21
     
      #container
      #panel
      #text
     
   EndEnumeration
   
   ;- Main   
   
   Define event, nr, winflags = #PB_Window_Invisible|#PB_Window_SystemMenu|#PB_Window_ScreenCentered
   
   If OpenWindow(0, 0, 0, 520, 480, "Moveknop example", winflags)
     
      Moveknop_Value(#PB_Default, #showinfo, 0)
     
      Moveknop_Value(#PB_Default, #colorframe, #Black)
     
      Moveknop(#moveknop1, 11, 11, 60, 32)   
      Moveknop(#moveknop2, 11, 75, 60, 100, 1)   
      Moveknop(#moveknop3, 88, 75, 170, 70, 1)
      Moveknop(#moveknop4, 300, 80, 50, 50, 2)
     
      Moveknop_Value(#moveknop2, #knopstyle, 1)
      Moveknop_Value(#moveknop3, #knopstyle, 1)
      Moveknop_Value(#moveknop4, #knopstyle, 2)
   
      Moveknop_Value(#moveknop4, #colorring, $5C5C5C)
      Moveknop_Value(#moveknop4, #colorknop_on, #Red)
      Moveknop_Value(#moveknop4, #colorknop_off, #Gray)
     
      Moveknop_SetText(#moveknop1, "on,off", 12)
      Moveknop_SetText(#moveknop2, "on,off", 18, 1)
      Moveknop_SetText(#moveknop3, "Heizung ein,Ofen aus", 18)
     
     
      ContainerGadget(#container, 10, 222, 222, 222, #PB_Container_Flat)     
         Moveknop(#moveknop10, 10, 15, 100, 60)   
         Moveknop_Value(#moveknop10, #knopstyle, 2)
         Moveknop_Value(#moveknop10, #colorring, $5C5C5C)
         Moveknop_Value(#moveknop10, #colorknop_on, #Green)
         Moveknop_Value(#moveknop10, #colorknop_off, #Red)
         
         Moveknop_SetText(#moveknop10, "on,off", 14, 1)
         
         Moveknop(#moveknop11, 120, 15, 60, 100, 1)   
         Moveknop_SetText(#moveknop11, "on,off", 14, 1)
         
         Moveknop(#moveknop12, 10, 90, 60, 100, 1)   
         Moveknop_SetText(#moveknop12, "ein,aus", 14, 0)
         
         Moveknop(#moveknop13, 80, 130, 110, 60, 1)   
         Moveknop_SetText(#moveknop13, "Open,Close", 15, 0)
         
      CloseGadgetList()
     
      PanelGadget(#panel, 240, 222, 222, 222)     
         AddGadgetItem (#panel, -1, "Panel 1")
         Moveknop(#moveknop20, 10, 15, 36, 60, 1, #White)
         Moveknop_SetText(#moveknop20, "on,off", 12)
         
         AddGadgetItem (#panel, -1, "Panel 2")
         TextGadget(#text, 2, 2, 230, 192, "")
         SetGadgetColor(#text, #PB_Gadget_BackColor, #Green)     
         Moveknop(#moveknop21, 10, 15, 48, 100, 0, #Green)
      CloseGadgetList()
     
      HideWindow(0, 0)
     
      ;- Repeat
     
      Repeat
         Event = WaitWindowEvent()
         
         If Event = #PB_Event_Gadget
           
            Select EventGadget()
                 
               Case #moveknop1               
                  If EventType() = #PB_EventType_LeftButtonDown
                     ;diese EventType() Abfrage muß sein !!!!
                     
                     If Moveknop_GetState(#moveknop1)
                        Moveknop_Value(#moveknop3, #colorframe, #Black)
                        Moveknop_Value(#moveknop3, #colorback_on, #Green)
                        Moveknop_Value(#moveknop3, #colorback_off, #Magenta)
                        Moveknop_Value(#moveknop3, #colortext_off, #Black)
                        Moveknop_Value(#moveknop3, #colortext_on, #Blue)
                       
                        Moveknop_Value(#moveknop3, #speedloop, 25)
                       
                        Moveknop_Value(#moveknop10, #colorring, $654321)
                        Moveknop_Value(#moveknop10, #colorknop_on, #Yellow)
                        Moveknop_Value(#moveknop10, #colorknop_off, #Red)
                        Moveknop_Value(#moveknop10, #colorback_on, $11B5FF)
                        Moveknop_Value(#moveknop10, #colorframe, $444444)
                       

                     EndIf
                     
                  EndIf
                 
               Case #moveknop2               
                  If EventType() = #PB_EventType_LeftButtonDown                 
                     Moveknop_SetText(#moveknop3, "Heizung läuft,Heizung aus", 18)
                  EndIf
                 
               Case #moveknop4               
                  If EventType() = #PB_EventType_LeftButtonDown                 
                     Moveknop_SetText(#moveknop3, "Wasser läuft,Ofen aus", 18)
                     Moveknop_SetState(#moveknop3, 0)
                  EndIf
                 

                 
            EndSelect
         EndIf
         
      Until Event = #PB_Event_CloseWindow
   EndIf
   
CompilerEndIf

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/