Buttongadget wird nicht immer angezeigt

Anfängerfragen zum Programmieren mit PureBasic.
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Buttongadget wird nicht immer angezeigt

Beitrag 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.
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Buttongadget wird nicht immer angezeigt

Beitrag 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?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Re: Buttongadget wird nicht immer angezeigt

Beitrag 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.
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Buttongadget wird nicht immer angezeigt

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Re: Buttongadget wird nicht immer angezeigt

Beitrag 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.
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: Buttongadget wird nicht immer angezeigt

Beitrag 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
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Buttongadget wird nicht immer angezeigt

Beitrag 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.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten