StatusBar wird im/als Dialog nicht angezeigt

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Pelagio
Beiträge: 423
Registriert: 11.11.2004 17:52
Computerausstattung: Intel Core i3-4170 CPU 3,70 GHz
8,00 GB Arbeitsspeicher
WIN 10 Pro 64 Bit Betriebssystem
Wohnort: Bremen

StatusBar wird im/als Dialog nicht angezeigt

Beitrag 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 :praise:
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB6.03 LTS]. :allright:
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: StatusBar wird im/als Dialog nicht angezeigt

Beitrag 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
Benutzeravatar
Pelagio
Beiträge: 423
Registriert: 11.11.2004 17:52
Computerausstattung: Intel Core i3-4170 CPU 3,70 GHz
8,00 GB Arbeitsspeicher
WIN 10 Pro 64 Bit Betriebssystem
Wohnort: Bremen

Re: StatusBar wird im/als Dialog nicht angezeigt

Beitrag 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 
:allright:
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB6.03 LTS]. :allright:
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: StatusBar wird im/als Dialog nicht angezeigt

Beitrag 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.
Benutzeravatar
Pelagio
Beiträge: 423
Registriert: 11.11.2004 17:52
Computerausstattung: Intel Core i3-4170 CPU 3,70 GHz
8,00 GB Arbeitsspeicher
WIN 10 Pro 64 Bit Betriebssystem
Wohnort: Bremen

Re: StatusBar wird im/als Dialog nicht angezeigt

Beitrag 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.
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB6.03 LTS]. :allright:
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: StatusBar wird im/als Dialog nicht angezeigt

Beitrag 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
Benutzeravatar
Pelagio
Beiträge: 423
Registriert: 11.11.2004 17:52
Computerausstattung: Intel Core i3-4170 CPU 3,70 GHz
8,00 GB Arbeitsspeicher
WIN 10 Pro 64 Bit Betriebssystem
Wohnort: Bremen

Re: StatusBar wird im/als Dialog nicht angezeigt

Beitrag von Pelagio »

Danke HeXOR :allright: ,

Dein Beispiel hat mir geholfen und es war so einfach,
leider habe ich dies nicht aus deinem vorherigen Post herauslesen können.
DANKE! :praise:
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB6.03 LTS]. :allright:
MenschMarkus
Beiträge: 220
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Re: StatusBar wird im/als Dialog nicht angezeigt

Beitrag 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
Wissen schadet nur dem, der es nicht hat !
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: StatusBar wird im/als Dialog nicht angezeigt

Beitrag 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.
MenschMarkus
Beiträge: 220
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Re: StatusBar wird im/als Dialog nicht angezeigt

Beitrag 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. :oops:

ab hier weiter im richtigen Forum
Wissen schadet nur dem, der es nicht hat !
Antworten