Seite 1 von 1
StatusBar wird im/als Dialog nicht angezeigt
Verfasst: 12.06.2021 15:39
von Pelagio
Ich habe mich langsam in die Möglichkeiten des Dialogs eingearbeitet und fertige auch schon kleiner Fenster, für Info und Abfragen, jetzt wollte ich auch langsam etwas größere Dialoge fertigen und z.Bsp. eine Statusbar mit einbauen. Ich sitze jetzt schon seid einiger Zeit daran und versuche es auch über den 'DialogDesignOR v1.69' in dessen Anzeige es auch klappt. Leider funktioniert es nicht über PureBasic. Hier ein Beispiel Code:
Code: Alles auswählen
#Dialog = 0
#Xml = 0
XML$ = " <window name='test' flags='#PB_Window_SystemMenu|#PB_Window_ScreenCentered'>"
XML$ + " <statusbar id='0'>"
XML$ + " <field/>"
XML$ + " <field/>"
XML$ + " <field/>"
XML$ + " </statusbar>"
XML$ + " <editor name='editor_1' height='100'/>"
XML$ + " </window>"
If ParseXML(#Xml, XML$) And XMLStatus(#Xml) = #PB_XML_Success
If CreateDialog(#Dialog) And OpenXMLDialog(#Dialog, #Xml, "test")
Repeat
Event = WaitWindowEvent()
Until (Event=#PB_Event_CloseWindow)
Else
Debug "Dialog error: " + DialogError(#Dialog)
EndIf
Else
Debug "XML error: " + XMLError(#Xml) + " (Line: " + XMLErrorLine(#Xml) + ")"
EndIf
Ich habe keine Idee mehr und hoffe auf Eure Hilfe

Re: StatusBar wird im/als Dialog nicht angezeigt
Verfasst: 12.06.2021 15:51
von HeX0R
Die PB Dialog Lib unterstützt keine StatusBars, Menüs oder Toolbars, das hatte ich selbst hinzugefügt.
Siehe:
https://www.purebasic.fr/english/viewtopic.php?p=561576
Oder auch die DD_AddStuff.pbi, falls Du den Source Code von DD nutzt.
Die musst Du dann noch in Deinen Code reinbasteln.
Also einfach inkludieren und einen zusätzl. Befehl aufrufen.
Kein großes Ding
Re: StatusBar wird im/als Dialog nicht angezeigt
Verfasst: 12.06.2021 22:33
von Pelagio
Danke HeXor,
für die schnelle Information.
Ich hätte mir gewünscht das sie anders ausgefallen wäre.
Jedenfalls habe ich mir etwas einfallen lassen was sich zwar wie eine Krücke anfühlt aber jedenfalls funktioniert:
Code: Alles auswählen
#Dialog = 0
#Xml = 0
XML$ = " <window id='0' name='test' flags='#PB_Window_SystemMenu|#PB_Window_ScreenCentered'>"
XML$ + " <editor name='editor_1' height='100'/>"
XML$ + " </window>"
If ParseXML(#Xml, XML$) And XMLStatus(#Xml) = #PB_XML_Success
If CreateDialog(#Dialog) And OpenXMLDialog(#Dialog, #Xml, "test")
If CreateStatusBar(0, WindowID(0))
AddStatusBarField(#PB_Ignore)
AddStatusBarField(80)
AddStatusBarField(60)
StatusBarText(0, 0, "Status")
StatusBarText(0, 1, "D.a.tum", #PB_StatusBar_Center)
StatusBarText(0, 2, "Ze:it", #PB_StatusBar_Center)
EndIf
ResizeWindow(0, #PB_Ignore, #PB_Ignore, 420, 200)
RefreshDialog(#Dialog)
Repeat
Event = WaitWindowEvent()
Until (Event=#PB_Event_CloseWindow)
Else
Debug "Dialog error: " + DialogError(#Dialog)
EndIf
Else
Debug "XML error: " + XMLError(#Xml) + " (Line: " + XMLErrorLine(#Xml) + ")"
EndIf

Re: StatusBar wird im/als Dialog nicht angezeigt
Verfasst: 13.06.2021 01:22
von HeX0R
Ähm... ja klar, so umständlich geht's natürlich auch.
Keine Ahnung, wieso Du meinen "Hack" nicht nutzen möchtest, aber is ja am Ende Deine Entscheidung.
Re: StatusBar wird im/als Dialog nicht angezeigt
Verfasst: 13.06.2021 06:49
von Pelagio
Guten Morgen HeXOR,
ich habe den 'Hack' mir angeschaut und muss gestehen das ich ihn nicht verstanden habe.
Wenn ich etwas mehr Zeit habe werde ich sicherlich mich damit beschäftigen, jedenfalls im Augenblick sehe ich nur ein ähnliches Fenster wie beim 'DialogDesignOR v1.70' aber in ein Fenster unter PB eingebaut wird die StatusBar nicht angezeigt.
Re: StatusBar wird im/als Dialog nicht angezeigt
Verfasst: 13.06.2021 09:41
von HeX0R
Moin,
Du musst nur besagte Include einbinden, und einen einzigen Befehl austauschen.
Hier mal dein obiges Beispiel:
Code: Alles auswählen
XIncludeFile "DD_AddStuff.pbi"
#Dialog = 0
#Xml = 0
XML$ = " <window name='test' flags='#PB_Window_SystemMenu|#PB_Window_ScreenCentered'>"
XML$ + " <statusbar id='0'>"
XML$ + " <field/>"
XML$ + " <field/>"
XML$ + " <field/>"
XML$ + " </statusbar>"
XML$ + " <editor name='editor_1' height='100'/>"
XML$ + " </window>"
If ParseXML(#Xml, XML$) And XMLStatus(#Xml) = #PB_XML_Success
If CreateDialog(#Dialog) And DEX::InitDialog(#Dialog, #Xml, "test", #True)
StatusBarText(0, 0, "BLA")
Repeat
Event = WaitWindowEvent()
Until (Event=#PB_Event_CloseWindow)
Else
Debug "Dialog error: " + DialogError(#Dialog)
EndIf
Else
Debug "XML error: " + XMLError(#Xml) + " (Line: " + XMLErrorLine(#Xml) + ")"
EndIf
Wobei man als "ID" eher (Runtime) Konstanten nehmen sollte.
Also eher so:
Code: Alles auswählen
XIncludeFile "DD_AddStuff.pbi"
#Dialog = 0
#Xml = 0
Runtime Enumeration
#StatusBar_None
#StatusBar_Main
EndEnumeration
XML$ = " <window name='test' flags='#PB_Window_SystemMenu|#PB_Window_ScreenCentered'>"
XML$ + " <statusbar id='#StatusBar_Main'>"
XML$ + " <field/>"
XML$ + " <field/>"
XML$ + " <field/>"
XML$ + " </statusbar>"
XML$ + " <editor name='editor_1' height='100'/>"
XML$ + " </window>"
If ParseXML(#Xml, XML$) And XMLStatus(#Xml) = #PB_XML_Success
If CreateDialog(#Dialog) And DEX::InitDialog(#Dialog, #Xml, "test", #True)
StatusBarText(#StatusBar_Main, 0, "BLA")
Repeat
Event = WaitWindowEvent()
Until (Event=#PB_Event_CloseWindow)
Else
Debug "Dialog error: " + DialogError(#Dialog)
EndIf
Else
Debug "XML error: " + XMLError(#Xml) + " (Line: " + XMLErrorLine(#Xml) + ")"
EndIf
Re: StatusBar wird im/als Dialog nicht angezeigt
Verfasst: 13.06.2021 22:29
von Pelagio
Danke HeXOR

,
Dein Beispiel hat mir geholfen und es war so einfach,
leider habe ich dies nicht aus deinem vorherigen Post herauslesen können.
DANKE!

Re: StatusBar wird im/als Dialog nicht angezeigt
Verfasst: 21.07.2021 15:42
von MenschMarkus
Hallo HeXOR,
mein Anliegen passt hier hinein. Ich hatte ebenfalls das problem, dass ich weder Menü noch Statusbar hatte. Das konnte ich dank des o.g. Links erst einmal beseitigen.
Seit heute habe ich aber ein Problem mit der DD_MenuStatusbar.pbi.
Ich compiliere das Programm im Debug Modus, läuft.
Das Programm startet soweit. Es erscheint ein Splash Screen (normales Fenster), läuft auch.
Nur dann wird der Splash Screen geschlossen und das eigentliche Programmfenster sollte geöffnet werden und hier erhalte ich reproduzierbar folgende Fehlersequenz:
Code: Alles auswählen
[ERROR] DD_MENUStatusbar.pbi (Zeile 518)
[ERROR] Ungültiger Speicherzugriff. (Lesefehler an der Adresse 91)
ich wüsste jetzt nicht was ich falsch gemacht haben sollte.
Eine Idee?
By the way...
Ich habe im Dialog beide Fenster in einer XML erzeugt. Bei jedem Speichern setzt er die Fenster Attribute auf #PB_Window_Invisible und #PB_Window_NoActivate. Im Splash Fenster setzt er immer automatisch die Attribute #PB_Window_SystemMenu, #PB_Window_MinimizeGadget, #PB_Window_MaximizeGadget und #PB_Window_SizeGadget obwohl ich die weggeklickt habe.
Soll das so sein?
LG
menschmarkus
Re: StatusBar wird im/als Dialog nicht angezeigt
Verfasst: 21.07.2021 21:54
von HeX0R
Sorry, ich kann Dir nicht wirklich folgen.
Was ist "DD_MENUStatusbar.pbi"?
Und wo genau werden die Attribute gesetzt? Sprichst Du jetzt irgendwie plötzlich vom Dialog Design0r?
Die Attribute werden tatsächlich (intern) gesetzt, sollten aber im Endprodukt nicht mehr aktiv sein.
Sorry aber ich denke Du musst das etwas genauer erklären.
[Edit]
O.k., nach dreimal durchlesen denke ich hab's verstanden, Du sprichst die ganze Zeit vom Dialog Design0r, und DD_MENUStatusbar.pbi sollte eigentlich DD_AddStuff.pbi heissen?
Dann bitte ins passende
Forum
Vermutlich hängt das mit Deinem zuletzt benutzten Dialog zusammen, den lädt er ja am Anfang, möglicherweise hast Du da nen Fehler gefunden.
Den Dialog brauche ich dann natürlich auch.
Re: StatusBar wird im/als Dialog nicht angezeigt
Verfasst: 22.07.2021 09:47
von MenschMarkus
Sorry, ich kann Dir nicht wirklich folgen.
Was ist "DD_MENUStatusbar.pbi"?
OK, mein Fehler. Im englischen Formum ist lediglich der Source angegeben, den habe ich ein DD_MenuStatusbar.pbi benannt. Hätte es AddStuff.pbi genannt, wenn ich es gewusst hätte
Sorry aber ich denke Du musst das etwas genauer erklären.
Ahem, das ist bei mir manchmal so. Schneller gedacht als geschrieben, dann wird es manchmal verwirrend.
ab hier weiter im richtigen
Forum