Fragen zu Fenster und HexORs DialogDesignor

Für allgemeine Fragen zur Programmierung mit PureBasic.
MenschMarkus
Beiträge: 220
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag von MenschMarkus »

Wie im Code zu erkennen sind Koordinaten als Variable hinterlegt. Bei Größenänderung wird eine Resize Prozedur aufgerufen und die Gadgets werden an die Größe des Fensters angeglichen. Das Erscheinungsbild bleibt also immer erhalten.
Diese Resize Prozedur wird aber nicht bei Fenster Verschiebung aufgerufen, da sie als BindEvent an Größenveränderung des Fensters gebunden ist (SizeWindow, MaximizeWindow, RestoreWindow). Ich denke nicht, dass eines dieser Events aufgerufen wird wenn ich nur das Fenster als solches verschiebe.
Wissen schadet nur dem, der es nicht hat !
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag von ccode_new »

War das Fensterverhalten schon immer so?
Oder hast du irgendetwas bestimmtes abgeändert und erst danach ist dieses Verhalten aufgetreten?

Mein Tip:
Versuche deinen Code so gut wie möglich zu reduzieren und kontrolliere so viel wie möglich mit den Debugger.

Ansonsten kann ich hier als Orakel nur mit Fragezeichen um mich werfen.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
MenschMarkus
Beiträge: 220
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag von MenschMarkus »

Ich kann nicht mehr genau sagen wann, aber das fing irgendwann mal an langsam zu werden. Ich weiß aber nicht mehr bei welcher Gadgetzahl das begann. Ich kann ja mal einzelne Container auskommentieren und die Reaktion testen.

EDIT:
Das scheint tatsächlich was mit der Anzahl der Gadgets zu tun zu haben. Wenn ich einzelne Container auskommentiere verkürzt sich die Verzögerung.

Die Frage die sich stellt, wie löse ich das Problem?
Wissen schadet nur dem, der es nicht hat !
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag von ccode_new »

Wie oft wird hier aktualisiert (beim Verschieben)?

Code: Alles auswählen

If evt = #PB_Event_Repaint
Debug count + 1
EndIf
Sind alle nicht angezeigten Gadgets wirklich "hide" (versteckt), oder nur überdeckt?
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
MenschMarkus
Beiträge: 220
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag von MenschMarkus »

Beim Fensteraufbau gibt es 8 Repaints (reproduzierbar). Beim mehrfachen Verschieben gibt es nur 12 repaints, jedoch nicht bei jedem Verschieben.

Außer 1 aktivem Container sind alle Container "hide = 1". Die Gadgets selber in den Containern sind alle auf "hide = 0". Dadurch, dass das Eltern Gadget (hier der Container) versteckt ist, sind alle Kind Gadgets ebenfalls automatisch nicht mehr sichtbar.
Wissen schadet nur dem, der es nicht hat !
Benutzeravatar
HeX0R
Beiträge: 2959
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: Fragen zu Fenster und HexORs DialogDesignor

Beitrag von HeX0R »

ccode_new hat geschrieben:Der DialogDesign0r von Hex0r ist cool, noch cooler wäre es wenn man das Teil auch unter Mac Os zum laufen brächte. (Ich habs mal versucht, es war mir dann aber zu nervig/stressig/unübersichtlich/was auch immer, und ich hab es sein gelassen.
Richtig cool wäre gewesen, wenn Du das auch jemandem gesagt hättest.
Der Source sollte eigentlich unter MacOS funktionieren, m.W. funktioniert nur das Drag&Drop nicht.
Ich habe aber kein MacOS, bin da eh auf andere angewiesen.

Um Deine Frage wegen der Doku zu beantworten (@MenschMarkus):
Ich habe dem DD sehr viele ToolTipps spendiert, und darauf geachtet, dass er sehr intuitiv zu bedienen ist.
Was natürlich schwierig ist, das liegt immer im Auge des Betrachters.
Selbst ohne Ahnung von PBs Dialogen, sollte man durch "rumspielen" aber m.E. dahinter kommen.

Ich wollte keine Hilfe machen, es war eigentlich einfach nur ein kleines nebenher Projekt, das dann allerdings etwas stark gewachsen ist.
MenschMarkus
Beiträge: 220
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag von MenschMarkus »

HeXOR hat geschrieben:Ich habe dem DD sehr viele ToolTipps spendiert, und darauf geachtet, dass er sehr intuitiv zu bedienen ist.
Ja das ist korrekt, Tool Tipps gibt es genug. Es ist auch korrekt das man durch herumspielen weiter kommt. Man kann ja nicht wirklich etwas "kaputt" machen. Es funktioniert halt lediglich nicht auf Anhieb so wie man das möchte.
Das Problem mit der VBox und dem 20:80 Verhältnis konnte ich zumindest ansatzweise lösen. Ich weiß zwar nicht warum es funktioniert, was mich perönlich etwas stört, aber es funktioniert.
Intuitiv zu bedienen ist das Tool auf alle Fälle.

Lediglich bei der Einbindung des XML in PB zur Fenstererzeugung bin ich noch nicht weiter gekommen. Deinen SourceCode (OpenWindow()) habe ich mal überflogen bin aber noch nicht wirklich schlau draus geworden.
Wie dem auch sei, die Try and Error Methode funktioniert, ist aber seeeehr zeitaufwändig.
Hier würde eine spezifische Antwort auf eine spezifische Frage schneller helfen Dein Tool nutzbringend zu verwenden.
Ich hoffe da mal auf etwas Unterstützung.

Und, nicht nur weil Du es gerne hörst, ein tolles Tool. :allright:
Wissen schadet nur dem, der es nicht hat !
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag von ccode_new »

MenschMarkus hat geschrieben:Richtig cool wäre gewesen, wenn Du das auch jemandem gesagt hättest.
Der Source sollte eigentlich unter MacOS funktionieren, m.W. funktioniert nur das Drag&Drop nicht.
Ich habe aber kein MacOS, bin da eh auf andere angewiesen.
Das stimmt schon, aber du hast ja sowieso kein MacOS zum testen.
Und so wichtig ist mir das jetzt auch nicht.
Es wäre nur ganz nett wenn es auch unter MacOS funktionieren würde.

Hier mal ein kleines Video:
https://workupload.com/file/cnkTuYxLJVB

Hauptsächlich kommt ständig dieser Fehler:
[ERROR] *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]
Dann wird sofort zu dieser Zeile gesprungen:
2692: Select WaitWindowEvent()
Und Eingaben mit der Tastatur sind in dafür vorgesehene Eingabefelder nicht möglich.

->Hat sich erledigt!
Man muss auch auf den korrekten Pfad achten!
Zuletzt geändert von ccode_new am 19.12.2020 18:35, insgesamt 1-mal geändert.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
HeX0R
Beiträge: 2959
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: Fragen zu Fenster und HexORs DialogDesignor

Beitrag von HeX0R »

MenschMarkus hat geschrieben:Das Problem mit der VBox und dem 20:80 Verhältnis konnte ich zumindest ansatzweise lösen. Ich weiß zwar nicht warum es funktioniert, was mich perönlich etwas stört, aber es funktioniert.
Wenn ich wüsste, wie Du das gemacht hast, könnte ich evtl. helfen.
Ich habe mal eben was zusammengeklickt, und hat sofort wie gewünscht funktioniert:

Code: Alles auswählen

;/-------------------------
;|
;| Names, IDs, Procedures
;|
;| Example Template for Dialog Design0R
;|
;/-------------------------


#DD_WIN_window_1 = "window_1"



#DD_GADGET_container_1 = "container_1"
#DD_GADGET_container_2 = "container_2"



Procedure.s GetXMLString()
	Protected XML$

	XML$ + "<?xml version='1.0' encoding='UTF-16'?>"
	XML$ + ""
	XML$ + "<dialogs>"
	XML$ + "  <window flags='#PB_Window_SystemMenu | #PB_Window_SizeGadget' text='bla' minwidth='300' minheight='300' name='window_1'>"
	XML$ + "    <vbox>"
	XML$ + "      <container flags='#PB_Container_Raised' name='container_1'/>"
	XML$ + "      <container flags='#PB_Container_Raised' name='container_2'/>"
	XML$ + "    </vbox>"
	XML$ + "  </window>"
	XML$ + "</dialogs><!--DDesign0R Definition: PureBasic|1|1|0-->"
	XML$ + ""

	ProcedureReturn XML$
EndProcedure

;Test it
CompilerIf #PB_Compiler_IsMainFile
	a$ = GetXMLString()
	If CatchXML(0, @a$, StringByteLength(a$), 0, #PB_Unicode)
		Debug XMLStatus(0)
		Debug XMLError(0)
		CreateDialog(0)
		OpenXMLDialog(0, 0, "window_1")
		Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
	EndIf
CompilerEndIf
MenschMarkus hat geschrieben: Lediglich bei der Einbindung des XML in PB zur Fenstererzeugung bin ich noch nicht weiter gekommen.
[...]
Ich hoffe da mal auf etwas Unterstützung.
O.k., das mag etwas zu kurz gekommen sein.
DD erstellt (optional) noch eine *.pbi Datei, die Du direkt als Source einbinden kannst, oder aber Du lädst die erstellte xml Datei ganz einfach per LoadXML().
Danach musst Du nur noch nen Dialog Erstellen (CreateDialog()), und das ganze per OpenXMLDialog() öffnen.
Ab da geht alles wie gehabt, siehe auch Code oben, da habe ich die erstellte *.pbi Datei einfach noch um 3 Zeilen erweitert.

@ccode_new:
Das ist aber in der Tat übel!
Kommt diese Fehlermeldung eigentlich auch ausserhalb von DD, wenn Du einfach nur nen Dialog mit ner ComboBox erstellst?
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag von ccode_new »

Erledigt!
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Antworten