Seite 1 von 1

Togglebares ButtonImageGadget

Verfasst: 12.02.2005 18:08
von Franky
Hi Leute, ich hab ein Problem

wie ihr es ja kennt, hab ich bei Pure GraphicShop links die ganzen Buttons mit den Zeichenfunktionen, welche eingerastet bleiben.
Mal davon abgesehen, dass es bei Sunny nicht läuft, habe ich bei Optimierungsversuchen entdeckt, dass die funktion, die alles nötige beim Ändern der zeichenart ändert zweimal aufgerufen wird.

Ich konnte das mit einer kleinen änderung der Abfrage reparieren, aber jetzt rasten die Buttons nicht mehr vernünftig ein.
Mal rasten sie normal ein und werden normal los gelassen, mal bleiben sie gedrückt, wenn man auf einen anderen klickt oder sie werden nicht gedrückt, wenn man drauf drückt.


Kann mir wer sagen, was ich falsch mache?

Code: Alles auswählen

Dim punkt.l(9,9)
Dim bild.l(9,9)
Procedure ToggleGadget(GadgetNr.l);Macht ein Buttonimagegadget Tooglebar
    If IsGadget(GadgetNr)
          style = GetWindowLong_(GadgetID(GadgetNr), #GWL_STYLE) 
          toggleStyle = style |#BS_PUSHBUTTON
          SetWindowLong_(GadgetID(GadgetNr), #GWL_STYLE, toggleStyle) 
    EndIf
EndProcedure

Procedure UpdateToggle(gadgetid.l)
                  For a=0 To 9
                        For b=0 To 9
                                        SendMessage_(GadgetID(punkt(a,b)),#BM_SETSTATE,0,0) 
                        Next 
                   Next 
                  SendMessage_(GadgetID(gadgetid),#BM_SETSTATE,1,0) 

EndProcedure
 

If OpenWindow(1,10,10,400,400,#PB_Window_SystemMenu,"Halttest")
           CreateGadgetList(WindowID())
                   For a=0 To 9
                        For b=0 To 9
                                 bild(a,b)=CreateImage(#PB_Any,30,30)
                                         StartDrawing(ImageOutput())
                                                  FrontColor(Random(255),Random(255),Random(255))
                                                       Circle(15,15,10)
                                         StopDrawing()
                                punkt(a,b)=ButtonImageGadget(#PB_Any,a*40,b*40,30,30,UseImage(bild(a,b)))
                                ToggleGadget(punkt(a,b))
                        Next 
                   Next 
                   
                   Repeat  
                          event=WaitWindowEvent()
                          If event=#PB_EventGadget
                                 UpdateToggle(EventGadgetID())
                          EndIf
                   Until event=#WM_CLOSE
EndIf                   
End 
[/code]

Verfasst: 12.02.2005 21:47
von Helmut
Auffallend ist, dass es gut funktioniert, wenn man beim Anklicken, die Maus etwas bewegt.

Verfasst: 12.02.2005 22:12
von Franky
Ich hab jetzt eine Abfrage in meine Schleife eingebaut und setze den button einfach immer wieder auf gedrückt.

Das geht zwar ganz gut, aber es ist doch nicht sehr optimiert, von daher bin ich für irgendwelche ideen offen

Verfasst: 12.02.2005 23:54
von Justy
geht bei mir sehr gut!

Das es nicht einrastet passiert vll 1 von 10 mal, aber das is mit dem standard -toggle-flag auch so

mfg. Justy

Verfasst: 13.02.2005 12:06
von Sven
@Franky

Ich verwende zum Setzen des Style auf Toggle:

SetWindowLong_(GadgetID(obj()\id1), #GWL_STYLE, #PB_Button_Toggle | GetWindowLong_(GadgetID(obj()\id1), #GWL_STYLE))

Ich weiß nicht, ob #PB_Button_Toggle = #BS_PUSHBUTTON* ist, vielleicht hilfts. Hatte zumindest bis jetzt keine Probleme, dass Tasten nicht "einrasten".

Sven

*) Der Debugger mein nein:

Debug #PB_Button_Toggle
Debug #BS_PUSHBUTTON

4099
0