Seite 1 von 3
ComboBoxGadget()
Verfasst: 17.02.2023 14:43
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
Re: ComboBoxGadget()
Verfasst: 17.02.2023 17:10
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()
Re: ComboBoxGadget()
Verfasst: 17.02.2023 18:42
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
Re: ComboBoxGadget()
Verfasst: 17.02.2023 18:56
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
Re: ComboBoxGadget()
Verfasst: 17.02.2023 19:03
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
Re: ComboBoxGadget()
Verfasst: 20.02.2023 23:25
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.
Re: ComboBoxGadget()
Verfasst: 22.02.2023 09:07
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
Re: ComboBoxGadget()
Verfasst: 22.02.2023 22:57
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.
Re: ComboBoxGadget()
Verfasst: 22.02.2023 23:25
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)
Re: ComboBoxGadget()
Verfasst: 23.02.2023 10:01
von RAaBe