Gadget erst bei überfahren mit Maus sichtbar

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1118
Registriert: 10.05.2005 22:48

Gadget erst bei überfahren mit Maus sichtbar

Beitrag von Delle »

Hallo,

ich habe auf einer GUI diverse Buttons, Text usw.

Alles wird soweit anzeigt, außer z.B. dieses Combo nicht:

Code: Alles auswählen

    
  ComboBoxGadget(#Monat, 85, 165, 60, 21)
AddGadgetItem(#Monat, -1, "alle")
    For k = 1 To 12:AddGadgetItem(#Monat, -1, RSet(Str(k),2,"0")):Next
    SetGadgetState(#Monat, 0)
Das taucht erst auf der GUI, wenn man an dessen Position mit der Maus drüberfährt.

Ein While WindowEvent():Wend habe ich vor der eigentlichen Programmschleife hingemacht, bringt aber auch nichts.

Wo liegt der Fehler?

Dankeee!
PB 6.02 LTS + Win 11
Axolotl
Beiträge: 146
Registriert: 31.12.2008 16:34

Re: Gadget erst bei überfahren mit Maus sichtbar

Beitrag von Axolotl »

Hi Delle,

an den Zeilen kann ich keinen Fehler erkennen.
Die Fehler-Beschreibung deutet darauf hin, dass das Control von einem anderen teilweise übermalt wird.

Kannst Du bitte den (ganzen) funktionierenden Code zeigen?
Mostly running PureBasic <latest stable version and current alpha/beta> (x64) on Windows 11 Home
Benutzeravatar
Delle
Beiträge: 1118
Registriert: 10.05.2005 22:48

Re: Gadget erst bei überfahren mit Maus sichtbar

Beitrag von Delle »

Axolotl hat geschrieben:Hi Delle,

an den Zeilen kann ich keinen Fehler erkennen.
Die Fehler-Beschreibung deutet darauf hin, dass das Control von einem anderen teilweise übermalt wird.

Kannst Du bitte den (ganzen) funktionierenden Code zeigen?
Gerne:

Code: Alles auswählen

Enumeration
  
  #Monat
  #Jahr
  
 
  #Button_Buchung
  #Button_OffenePosten
  #Button_LaufenderMonat
 
  
EndEnumeration



OpenWindow(0,0,0,980,850,"", #PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered)
      
If LoadFont(0, "Verdana", 10):SetGadgetFont(#PB_Default, FontID(0)):EndIf

ButtonGadget(#Button_Buchung,15,15,150,30,"Neue Buchung")
ButtonGadget(#Button_OffenePosten,15,55,150,30,"Offene Posten")
ButtonGadget(#Button_LaufenderMonat,15,95,150,30,"Laufender Monat")

FrameGadget(#PB_Any,15,135,150,155," Detailsuche ")

  TextGadget(#PB_Any,30,165,150,30,"Monat")

  ComboBoxGadget(#Monat, 85, 165, 60, 21)
    AddGadgetItem(#Monat, -1, "alle")
    For k = 1 To 12:AddGadgetItem(#Monat, -1, RSet(Str(k),2,"0")):Next
    SetGadgetState(#Monat, 0)
    
    TextGadget(#PB_Any,30,195,150,30,"Jahr")
    ComboBoxGadget(#Jahr, 85, 195, 60, 21)
    
    
    For j = Val(FormatDate("%yyyy", Date())) To 2015 Step -1:AddGadgetItem(#Jahr, -1, Str(j)):Next
    SetGadgetState(#Jahr, 0)
    
    
    While WindowEvent():Wend
  
  

 
  
Repeat

  EventID=WaitWindowEvent()
  
  If EventID=#PB_Event_Gadget And EventType()=#PB_EventType_Change
    
    Select EventGadget()
    EndSelect
    
  EndIf
  

Until EventID=#PB_Event_CloseWindow
PB 6.02 LTS + Win 11
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: Gadget erst bei überfahren mit Maus sichtbar

Beitrag von Bisonte »

Axolotl hat recht. Die Textgadgets überlappen die anderen Gadgets....
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
Delle
Beiträge: 1118
Registriert: 10.05.2005 22:48

Re: Gadget erst bei überfahren mit Maus sichtbar

Beitrag von Delle »

Bisonte hat geschrieben:Axolotl hat recht. Die Textgadgets überlappen die anderen Gadgets....
Stimmt, aber die TextGadgets werden doch *vorher* platziert? Und die anderen Gadgets wenn dann doch eher "draufgesetzt"?

Also "früher" ging sowas auch...

Oder hat evtl. #PB_Any einfach eine zu hohe ID bekommen und "liegt" daher ÜBER den Enum-Combos?
PB 6.02 LTS + Win 11
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Gadget erst bei überfahren mit Maus sichtbar

Beitrag von STARGÅTE »

Die Gadgets in PB haben keine fest definierte z-Sortierung, egal welches Gadget welche Nummer hat oder wann erstellt wurde. Daher ist eine Überlappung stets zu vermeiden.
Zum anderen werden Gadgets früher oder später eh neu gezeichnet und spätestens dann wird die Reihenfolge durch das Überzeichnen wieder zunichte gemacht.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten