ComboBoxGadget()

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
RAaBe
Beiträge: 80
Registriert: 07.09.2004 12:52
Wohnort: Münsterland
Kontaktdaten:

ComboBoxGadget()

Beitrag von RAaBe »

Hallo zusammen.

Ich habe ein lauffähiges Programm welches unter der Version 5.72 (Windows 10+11) fehlerfrei arbeitet.

Erzeuge ich die gleiche EXE unter 5.73 oder 6.xx dann passiert folgendes: bei einem ausgeklappten ComboBoxGadget() verschwindet der Mauszeiger über dem Gadget. Fehler tritt bei allen ComboBoxGadget() auf. Auswählen geht, aber es sieht einfach unschön aus!

Die Compileroptionen sind bei allen Versionen gleich und alles 64 Bit.

Gibt es da eine Erkärung dafür, oder hat jemand schon mal so ein Verhalten gesehen?

Reinhard
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: ComboBoxGadget()

Beitrag von mk-soft »

Kann ich nicht bestätigen.
Vielleicht irgendwelche Windows API verwendet?

Code: Alles auswählen

;-TOP

#ProgramTitle = "Main Window"
#ProgramVersion = "v1.01.2"

Enumeration Windows
  #Main
EndEnumeration

Enumeration MenuBar
  #MainMenu
EndEnumeration

Enumeration MenuItems
  #MainMenuAbout
  #MainMenuExit
EndEnumeration

Enumeration Gadgets
  
EndEnumeration

Enumeration StatusBar
  #MainStatusBar
EndEnumeration

Procedure UpdateWindow()
  Protected dx, dy
  dx = WindowWidth(#Main)
  dy = WindowHeight(#Main) - StatusBarHeight(#MainStatusBar) - MenuHeight()
  ; Resize gadgets
EndProcedure

Procedure Main()
  Protected dx, dy
  
  #MainStyle = #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget
  
  If OpenWindow(#Main, #PB_Ignore, #PB_Ignore, 800, 600, #ProgramTitle , #MainStyle)
    ; Menu
    CreateMenu(#MainMenu, WindowID(#Main))
    MenuTitle("&File")
    CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
      MenuItem(#PB_Menu_About, "")
    CompilerElse
      MenuItem(#MainMenuAbout, "About")
      MenuBar()
      MenuItem(#MainMenuExit, "E&xit")
    CompilerEndIf
    
    
    ; StatusBar
    CreateStatusBar(#MainStatusBar, WindowID(#Main))
    AddStatusBarField(#PB_Ignore)
    
    ; Gadgets
    dx = WindowWidth(#Main)
    dy = WindowHeight(#Main) - StatusBarHeight(#MainStatusBar) - MenuHeight()
    ComboBoxGadget(0, 10, 10, 200, 25)
    For i = 1 To 10
      AddGadgetItem(0, -1, "Item " + i)
    Next
    
    ; Bind Events
    BindEvent(#PB_Event_SizeWindow, @UpdateWindow(), #Main)
    
    ; Event Loop
    Repeat
      Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
          Select EventWindow()
            Case #Main
              Break
              
          EndSelect
          
        Case #PB_Event_Menu
          Select EventMenu()
            CompilerIf #PB_Compiler_OS = #PB_OS_MacOS   
              Case #PB_Menu_About
                PostEvent(#PB_Event_Menu, #Main, #MainMenuAbout)
                
              Case #PB_Menu_Preferences
                
              Case #PB_Menu_Quit
                PostEvent(#PB_Event_CloseWindow, #Main, #Null)
                
            CompilerEndIf
            
          Case #MainMenuAbout
            MessageRequester("About", #ProgramTitle + #LF$ + #ProgramVersion, #PB_MessageRequester_Info)
              
          Case #MainMenuExit
            PostEvent(#PB_Event_CloseWindow, #Main, #Null)
            
          EndSelect
          
        Case #PB_Event_Gadget
          Select EventGadget()
              
          EndSelect
          
      EndSelect
    ForEver
    
  EndIf
  
EndProcedure : Main()
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
RAaBe
Beiträge: 80
Registriert: 07.09.2004 12:52
Wohnort: Münsterland
Kontaktdaten:

Re: ComboBoxGadget()

Beitrag von RAaBe »

Hi, danke für die Antwort.

API ist nur diese Zeile drin: SendMessage_(GadgetID(#ausgabe), #EM_SCROLL, #SB_LINEDOWN, 0)
Auskommentiert, gleiches Phänomen.

Mein Englisch ist zu schlecht, um die Änderungen der Version 5.73 und 6.xx zu verstehen.

Programm ist zu gross um neu zu Schreiben (>35000 Zeilen), im Notfall bleibe ich bei 5.72

Achja, dein Beispiel läuft bei mir auch fehlerfrei!

Reinhard
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: ComboBoxGadget()

Beitrag von Bisonte »

Wenn das Beispiel bei dir Fehlerfrei läuft, dann hast du irgendwo den wurm drin.... Aber wegen Codemangel kann man da schlecht ins dunkle schiessen... aber meist passieren solche fehler in der Eventabfrage
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
RAaBe
Beiträge: 80
Registriert: 07.09.2004 12:52
Wohnort: Münsterland
Kontaktdaten:

Re: ComboBoxGadget()

Beitrag von RAaBe »

Hi, da gebe ich dir Recht. Es wird schon mit meinem Code zu tun haben, aber
warum das zwischen den Versionen zu unterschiedlich ist, ist doch schon seltsam!

Der Code ist kein Geheimnis, nur ohne Daten von einem RS485 Bus bringt die Sache nicht viel.

Reinhard
Benutzeravatar
jacdelad
Beiträge: 404
Registriert: 03.02.2021 13:39
Wohnort: Riesa
Kontaktdaten:

Re: ComboBoxGadget()

Beitrag von jacdelad »

Die Daten an sich haben ja nichts mit der Darstellung zu tun. Du kannst ja ein paar Pseudodaten kreieren oder das Ganze Programm immer weiter reduzieren, bis es auf einmal geht (und dann hast du ja den Schuldigen gefunden) oder, falls nicht, das minimale Beispiel hier posten.
Guten Morgen, das ist ein schöner Tnetennba!

PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
Benutzeravatar
RAaBe
Beiträge: 80
Registriert: 07.09.2004 12:52
Wohnort: Münsterland
Kontaktdaten:

Re: ComboBoxGadget()

Beitrag von RAaBe »

Hallo, ich hatte die Sache natürlich auch schon versucht einzugrenzen.

Der Fehler tritt auch nur auf, wenn Daten ankommen und in einem Editor-Gadget angezeigt werden.
Wenn ich die Zeile: ' AddGadgetItem(#ausgabe, -1, text2.s)' auskommentiere ist ja auch alles in Ordnung.
Nur leider keine Daten mehr.

Bleibt trotzdem seltsam, warum ab Version 5.73 das vorkommt.
Ich sehe keine Möglichkeit das zu ändern, werde erstmal in diesem Projekt bei Version 5.72 bleiben.

Reinhard
Benutzeravatar
jacdelad
Beiträge: 404
Registriert: 03.02.2021 13:39
Wohnort: Riesa
Kontaktdaten:

Re: ComboBoxGadget()

Beitrag von jacdelad »

Tut mir leid, da kann ich dir aber nicht helfen. Ohne Code kann ich mir was zusammenbasteln, was bei mir funktioniert und bei dir sicher auch, aber in deinem Fall wird es nicht helfen. Ohne Code kommen wir hier sicher nicht weiter.
Guten Morgen, das ist ein schöner Tnetennba!

PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: ComboBoxGadget()

Beitrag von ccode_new »

RAaBe hat geschrieben: 17.02.2023 14:43 Erzeuge ich die gleiche EXE unter 5.73 oder 6.xx dann passiert folgendes: bei einem ausgeklappten ComboBoxGadget() verschwindet der Mauszeiger über dem Gadget. Fehler tritt bei allen ComboBoxGadget() auf. Auswählen geht, aber es sieht einfach unschön aus!
Kannst du davon ein kleines Bildschirmvideo machen?
(Also nur der relevante Ausschnitt)
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
RAaBe
Beiträge: 80
Registriert: 07.09.2004 12:52
Wohnort: Münsterland
Kontaktdaten:

Re: ComboBoxGadget()

Beitrag von RAaBe »

Hier mal eine Demo: http://aufenvenne.de/prog/PB60.gif

Reinhard
Antworten