Seite 2 von 3

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 14.12.2020 22:34
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.

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 14.12.2020 22:47
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.

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 14.12.2020 22:50
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?

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 14.12.2020 23:18
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?

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 14.12.2020 23:50
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.

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 16.12.2020 11:44
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.

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 16.12.2020 12:49
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:

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 16.12.2020 20:05
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!

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 17.12.2020 14:08
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?

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 17.12.2020 20:53
von ccode_new
Erledigt!