[gelöst] AddGadgetItem funktioniert nicht ab PB 6.03 unter Debian 12
Verfasst: 05.08.2024 23:15
Mit AddGadgetItem eine Zeile in einem EditorGadget hinzuzufügen, klappt seit PureBasic 6.03 64-bit unter Debian 12 Bookworm nicht mehr, unter Ubuntu möglicherweise auch nicht. Genauer gesagt, geht es zwar innerhalb Procedure Open_Main_Window(), aber nicht, wenn man das per ButtonGadget bewerkstelligen will. Das Programm bleibt einfach hängen.
Noch verrückter ist es, dass es dann klappt, wenn man zusätzlich einen MessageRequester einsetzt. Nur kann das ja nicht die Lösung sein. Bis PureBasic 6.02 läuft derselbe Code einwandfrei.
Unter Windows 10 übrigens wird die gewünschte Zeile zwar eingefügt – allerdings gleich drei Mal, manchmal vier Mal. In einem sehr abgespeckten Programm kann man das testen:
Ist jemand anderem dieses Verhalten auch schon mal aufgefallen? Und gibt es irgendeine Erklärung dafür?
Noch verrückter ist es, dass es dann klappt, wenn man zusätzlich einen MessageRequester einsetzt. Nur kann das ja nicht die Lösung sein. Bis PureBasic 6.02 läuft derselbe Code einwandfrei.
Unter Windows 10 übrigens wird die gewünschte Zeile zwar eingefügt – allerdings gleich drei Mal, manchmal vier Mal. In einem sehr abgespeckten Programm kann man das testen:
Code: Alles auswählen
EnableExplicit
;================
;– Programmbeginn
;================
Enumeration
#Window_Haupt
#btnText
#edtAusgabe
#cntContainer
EndEnumeration
;– Definitions
Global EventID
;– Declarations of procedures
Declare Open_Main_Window()
;– Constants
#version = "0.1"
Procedure Open_Main_Window()
If OpenWindow(#Window_Haupt, #PB_Ignore, #PB_Ignore, 480, 540, "AGI " + #version, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
;– Create GadgetList
ContainerGadget(#cntContainer, 0, 0, 480, 515, #PB_Container_Raised)
ButtonGadget(#btnText, 10, 470, 95, 20, "Text hinzufügen")
EditorGadget(#edtAusgabe, 10, 165, 458, 295, #PB_Editor_WordWrap)
CloseGadgetList()
AddGadgetItem(#edtAusgabe, -1, "PureBasic soll sehr gut sein, habe ich mir sagen lassen.")
EndIf ;OpenWindow
EndProcedure
;===========
;- Hauptteil
;===========
Open_Main_Window()
Repeat
;– Ereignisse
EventID = WindowEvent()
;– Fenster
If EventID = #PB_Event_CloseWindow
If WindowID(#Window_Haupt)
CloseWindow(#Window_Haupt)
End
EndIf
Else
Delay(1) ;Verhindert unnötige CPU-Auslastung
EndIf
If EventGadget() = #btnText
AddGadgetItem(#edtAusgabe, -1, "PureBasic ist sehr gut, wie ich aus eigener Erfahrung weiß.")
; If AddGadgetItem(#edtAusgabe, -1, "PureBasic ist sehr gut, wie ich aus eigener Erfahrung weiß.")
; MessageRequester("Information", "Das hat geklappt!", #PB_MessageRequester_Info)
; Else
; MessageRequester("Information", "Das war nichts!", #PB_MessageRequester_Info)
; EndIf
EndIf
Until EventID = #PB_Event_CloseWindow
;==============
;- Programmende
;==============
End