Seite 1 von 1

Buttongadget wird nicht immer angezeigt

Verfasst: 09.04.2016 14:42
von gnaps
Hallo Forum,

habe hier mal wieder ein komisches Problem.

Manchmal werden die Buttongadgets nicht angezeigt.
Fahre ich mit der Maus über die Stelle an der das Gadget liegt, dann wird es angezeigt.
Das ist nicht immer so nur ab und zu.

Woran liegt das.

Re: Buttongadget wird nicht immer angezeigt

Verfasst: 09.04.2016 14:46
von RSBasic
Kannst du das auch mit folgendem Code nachstellen?:

Code: Alles auswählen

EnableExplicit

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ButtonGadget(1, 10, 10, 200, 20, "Ein Button nur für dich", 0)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
Wenn ja, mit welcher PB-Version und mit welchem Betriebssystem? Besteht das Problem vielleicht auch bei anderen Anwendungen bzw. Fenstern? Falls ja, vielleicht ein Grafikkartentreiberproblem?
Oder kannst du ein Beispielcode posten? Kann es vielleicht sein, dass deine Gadgets sich überschneiden?

Re: Buttongadget wird nicht immer angezeigt

Verfasst: 09.04.2016 15:04
von gnaps
Hi,

Sorry es handelt sich nicht um ButtonGadgets sondern um ButtonImageGadgets.

Es ist echt komisch ich habe eine Reihe von 10 ButtonImageGadgets die oft alle da sind und ab und zu
mal keine, dann mal einzelne aber nicht alle.

Beim Überfahren mit der Maus werden die überfahrene dann angezeigt.

Ich kann aber nicht nachvollziehen wann die kommen und wann nicht.

Re: Buttongadget wird nicht immer angezeigt

Verfasst: 09.04.2016 15:20
von RSBasic
Dann versuche mit dem folgenden Code zu testen:

Code: Alles auswählen

EnableExplicit

Define x
Define y

CreateImage(1, 50, 50, 32, RGB(0, 0, 255))

If OpenWindow(0, 0, 0, 500, 500, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  For y=0 To 9
    For x=0 To 9
      ButtonImageGadget(#PB_Any, x*50, y*50, 50, 50, ImageID(1), 0)
    Next x
  Next y
 
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
Ansonsten bezweifle ich, dass es an PB liegt. Entweder ein Treiberproblem oder es gibt in deinem Quellcode einen Fehler.
Kannst du deinen Code nochmal prüfen, ob alles korekt ist? Also keine Überschneidungen, keine Drawing-Befehle u.ä.
Falls das Problem irgendwann erneut auftreten sollte, kannst du gerne ein kurzes Video (z.B. mit CamStudio) erstellen, dieses hochladen und den Downloadlink hier posten.

Re: Buttongadget wird nicht immer angezeigt

Verfasst: 09.04.2016 15:26
von gnaps
Hi,

Ich hab das ganze hier mal nachgestellt.

Code: Alles auswählen

EnableExplicit

CreateImage(1,50,50,24,RGB(255,255,200))
CreateImage(2,50,50,24,RGB(255,240,200))
CreateImage(3,50,50,24,RGB(255,200,200))

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ContainerGadget(1,10,10,480,380)
  ButtonImageGadget(2, 10, 10, 50,50,ImageID(1))
  ButtonImageGadget(3, GadgetX(2)+GadgetWidth(2), 10, 50,50,ImageID(2) )
  ButtonImageGadget(4, GadgetX(3)+GadgetWidth(3), 10,50,50,ImageID(3))
  
  SetGadgetState(4,0)
  CloseGadgetList()
 
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
Hier habe ich bewußt SetGadgetState(4,0) eingesetzt um das nachzustellen.
In meinem Code arbeite ich jedoch nicht mit SetGadgetState().
Das dient hier nur als Demo.

Im Code oben wird das Gadget immer ausgeschalten und erst beim überfahren angezeigt.

Re: Buttongadget wird nicht immer angezeigt

Verfasst: 09.04.2016 19:23
von udg
@gnaps

habe deinen Code mal ohne SetGadgetState(4,0)
gestartet.
kann dein Problem zwar verstehen siehe SetGadgetState(4,0)

aber ist bei mir nicht reproduzierbar. läuft.

Clipping Probleme habe ich hin und wieder wenn ich nicht aufpasse und die Buttons sich überlagern. Das ist bei dir ja aber nicht der Fall.
Sollte also ein anderes Problem sein.

Mal so getestet?

Code: Alles auswählen

EnableExplicit

CreateImage(1,50,50,24,RGB(255,255,200))
CreateImage(2,50,50,24,RGB(255,240,200))
CreateImage(3,50,50,24,RGB(255,200,200))

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ContainerGadget(1,10,10,480,380)
  SetGadgetColor(1, #PB_Gadget_BackColor, RGB(40, 40, 40))
  
  ButtonImageGadget(2, 10, 10, 50, 50, ImageID(1))
  ButtonImageGadget(3, 62, 10, 50, 50, ImageID(2))
  ButtonImageGadget(4, 114, 10, 50, 50, ImageID(3))
  
  CloseGadgetList()
 
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf

Re: Buttongadget wird nicht immer angezeigt

Verfasst: 10.04.2016 12:16
von mk-soft
Kann das Problem unter Windows 10 bestätigen...

Mal nach einer Lösung suchen.

Code: Alles auswählen

EnableExplicit

CreateImage(1,50,50,24,RGB(255,255,200))
CreateImage(2,50,50,24,RGB(255,240,200))
CreateImage(3,50,50,24,RGB(255,200,200))

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  HideWindow(0, #True)
  ContainerGadget(1,10,10,480,380)
  ButtonImageGadget(2, 10, 10, 50,50,ImageID(1))
  ButtonImageGadget(3, GadgetX(2)+GadgetWidth(2), 10, 50,50,ImageID(2) )
  ButtonImageGadget(4, GadgetX(3)+GadgetWidth(3), 10,50,50,ImageID(3))
  
  SetGadgetState(4,0)
  CloseGadgetList()
  
  HideWindow(0, #False)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
P.S.
Ist wohl ein Bug. Diese Fehler tritt auch unter XP und PB v5.31 auf.