DynamicDialogs - komplexe dynamische GUIs einfach erstellen.

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

DynamicDialogs - komplexe dynamische GUIs einfach erstellen.

Beitrag von PureLust »

Aktueller Download => HIER

[Update - 02 Jan 2018 00:36:12] - Unterstützung von Menüs und Status-Bars (LINK)

[Update - 07 Mär 2016 09:59:20] - direkte Unterstützung der ImageID sowie neues Beispiel für Fonts & Images (LINK)

[Update - 06 Mär 2016 14:39:36] - Font()-Funktionen hinzugefügt (LINK)

[Update - 04 Mär 2016 03:24:40] - Aufsplittung in Haupt-Modul + 4 AddOn-Varianten (LINK)

[Update - 03 Mär 2016 02:12:57] - Suffixed- sowie ..._IDonly- und ..._NameOnly-Varianten hinzugefügt. Ermöglichen autom. Einrücken in der IDE (LINK)

---

Hi zusammen, auf Grund der frühen Stunde nur ganz kurz ein paar Infos zu dem Include-Modul: 'DynamicDialogs'.
(Weitere Infos - wie z.B. eine Auflistung aller Funktionen etc. - schiebe ich evtl. noch morgen oder am WE nach.)

Über meinen DialogWrapper haben einige von Euch ja evtl. schon was im englischen Forum gelesen und ihn u.U. ja auch schon mal ausprobiert.

Der 'Wrapper' ist inzwischen fertig (bis auf einige Kleinigkeiten) und somit wollte ich ihn euch nun unter dem neuen Namen 'DynamicDialogs' zur Verfügung stellen.

Was macht 'DynamicDialogs'?

Mit Hilfe von 'DynamicDialogs' könnt Ihr kinderleicht dynamische GUIs erstellen.
Hierfür wird von 'DynamicDialogs' ein syntax-korrekter XML-Code erzeugt, aus dem dann über die Dialog-Library von PureBasic 'Dialoge' erstellt werden.
Im Gegensatz zum simplen Wrapper sind in 'DynamicDialogs' nun auch Funktionen enthalten, mit denen man auf einfache Weise den XML-Code überprüfen und auch Dialoge erstellen bzw. öffnen kann.
(Schaut hierzu einfach mal in das kleine Beispiel am Ende der 'DynamicDialogs.pbi' Include-Datei.)

In der Zip sind momentan zwar schon einige Demos dabei, aber da werde ich nochmal Hand anlegen.

Was ist noch neu - im Vergleich zum 'alten' Wrapper'?

- Die 'suffixed' Variante der Funktionen:

Mich hatte es etwas gestört, dass die IDE nicht automatisch die Modul-Funktionen im Code so einrückt, wie man es ja auch gerne beim XML-Code hat.
Um eigene Schlüsselwörter automatisch einrücken zu lassen, bietet die IDE ja die Möglichkeit, diese in die "Einrücken'-Liste in den PB-Einstellungen einzutragen. Das habe ich dann probeweise mit den Funktionen von 'DynamicDialogs' gemacht.
Da die Funktionsnamen sich aber zum Teil mit anderweitig verwendeten Variablen überschnitten und die IDE beim Einrücken keinen Unterschied macht, ob man sich im NameSpace des Moduls befindet oder nicht, wurden Zeilen eingerückt, die so nicht beabsichtigt waren.

Somit habe ich noch eine weitere Modul-Variante hinzugefügt, in der die Dialog-Befehle den Suffix "__" bekommen haben.
Es gibt nun also das Modul 'DynamicDialogs', bei dem die Funktionen wie beim Wrapper Window(), hBox(), etc. lauten
und ein Modul 'DynamicDialog_suffixed' bei dem die Dialog-Befehle den Zusatz "__" haben - also Window__(), hBox__(), etc.

Für diese Funktionen mit dem Suffix "__" konnte ich dann also in den IDE-Einstellungen die Schlüsselwörter zum Einrücken eintragen, ohne Überschneidungen mit anderen Variablen, etc. befürchten zu müssen.

Najaaa ... und da das Eintragen von 28 Schlüsselwörtern natürlich recht mühsam ist und Programmierer im Allgemeinen ja 'seeeehr bequeme Menschen' sind, hab ich auch gleich noch das Tool dazu geschrieben, mit dem man auf Knopfdruck die entsprechenden Schlüsselwörter in die Konfigurationsdatei seiner PureBasic-IDE eintragen kann.
(Achtung: Damit das entsprechende Tool "DynamicDialogs_Suffix Indentation-Injector" korrekt in die Konfiguration von PB schreiben kann, muss die IDE zuvor beendet werden. Hiefür hab ich Euch dann auch schon mal als EXE beigelegt)

Den Unterschied in der Lesbarkeit des Codes könnt Ihr im folgenden Beispiel sehen (oben ohne, unten mit Suffix und automatischen Einrücken):

Code: Alles auswählen

; This code was auto-indented with (Ctrl)-I

; To inject the indentation-information for the 'DynamicDialogs_suffixed' functions, please use the 'DynamicDialogs_Suffix Indentation-Injector.pb'

UseModule	DynamicDialogs

Panel()
Tab("Tab 1")
Splitter(#PB_Ignore, "", 100,200,#PB_Splitter_Vertical,0,0,0,"0")
Button()
Editor()
EndSplitter()
EndTab()				
Tab("Tab 3","2")
Splitter(#PB_Ignore,"",200,100, #PB_Splitter_Vertical)
Button()
Editor()
EndSplitter()
EndTab()
EndPanel()

UnuseModule	DynamicDialogs

; The following code is also auto-indented with (Ctrl)-I, but it was indented right, because the indentation-Information has been injected

UseModule	DynamicDialogs_suffixed	

Panel__()
	Tab__("Tab 1")
		Splitter__(#PB_Ignore, "", 100,200,#PB_Splitter_Vertical,0,0,0,"0")
			Button__()
			Editor__()
		EndSplitter__()
	EndTab__()				
	Tab__("Tab 3","2")
		Splitter__(#PB_Ignore,"",200,100, #PB_Splitter_Vertical)
			Button__()
			Editor__()
		EndSplitter__()
	EndTab__()
EndPanel__()

UnuseModule	DynamicDialogs_suffixed

Wer den Wrapper schon kennt oder Lust hat mit den Möglichkeiten von 'DynamicDialogs' etwas herum zu spiele, kann es sich ja gerne mal HIER herunter laden.
Ein paar Demos sind wie gesagt schon dabei und die Anwendung des Moduls ist eigentlich denkbar einfach.
Meiner Meinung nach geht das Erstellen von dynamischen GUIs dank dieses Moduls erheblich einfacher als zuvor ... aber testet es am besten mal selber.

Feedback und auch konstruktive Kritik sind natürlich willkommen. :)

__________________________________________________
Thread verschoben
Feedback - Anwendungen>Code, Tipps und Tricks
23.03.2016
RSBasic
Zuletzt geändert von PureLust am 31.03.2018 07:41, insgesamt 7-mal geändert.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: DynamicDialogs - komplexe dynamische GUIs einfach erstel

Beitrag von PureLust »

(Platz reserviert für spätere Infos.)
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
matbal
Beiträge: 246
Registriert: 30.03.2011 20:53

Re: DynamicDialogs - komplexe dynamische GUIs einfach erstel

Beitrag von matbal »

Gefällt mir. Es vereinfacht den Umgang mit der DialogLib enorm, finde ich.

Beim Testen ist mir ein Fehler aufgefallen. Das Macro Text__() funktioniert nicht richtig. Hier bekomme ich einen Syntaxfehler.

Aus der Zeile

Code: Alles auswählen

Text__(#PB_Any, "", "Hallo")
wird

Code: Alles auswählen

"Hallo"(#PB_Any, "", "Hallo", 0, #PB_Default, #PB_Default, #PB_Default, "", #PB_Ignore, #PB_Ignore, "")
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1754
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Re: DynamicDialogs - komplexe dynamische GUIs einfach erstel

Beitrag von Andre »

Ganz große Klasse, PureLust! :mrgreen: :mrgreen:

Vor allem auch vielen Dank, dass du deine immense Vorarbeit der PB Community frei zugänglich machst! :D :praise:

Ich denke, dass dieses Include das Potential hat, vielen Anwendungsentwicklern (die ja i.d.R. auch immer ein GUI zu erstellen haben) die Arbeit wesentlich leichter zu machen. Es mag sein, dass mit manueller Fenster/Gadget-Programmierung oder einem FormDesigner auch schnell Ergebnisse zu erzielen sind. Aber sobald es um größenveränderbare bzw. sich automatisch in der Größe (an unterschiedliche Fonts, auf unterschiedlichen OS) anpassende GUI's geht, kommt man größeren Zusatzaufwand (manuelles Resizing) oder eben um Dialoge nicht drum rum. Und deren Erstellung ist durchaus komplex und ggf. auch fehleranfällig bzw. testaufwändig. Und genau hier kommt dein Include ins Spiel - mit allen erdenklichen Möglichkeiten ausgestattet (z.B. zur Ausrichtung von Gadgets) nimmt es dem PB-Programmierer verdammt viel Arbeit (und ggf. auch Frust, Zeitaufwand,... ) für das Erstellen des XML-Designs und Programmierung der Dialoge ab.
Also echt stark :allright:

Ich war ja schon in den letzten Wochen beim Testen des DialogWrappers dabei, habe nun auch die DynamicDialogs Include (fast) erfolgreich in meinem Projekt getestet.

Daher hier mal noch paar kleine Auffälligkeiten/Wünsche:

- Parameter-Beschreibung zu den wichtigsten (komplexeren, bzw. Auswirkungen/Rückgabewerte für das Hauptprogramm habenden) Funktionen wäre schön, z.B. OpenDialogWindow()

- direktes Einfügen eines Text$ als Parameter bei der Nutzung von Editor(), wie ich das z.B. bisher mittels

Code: Alles auswählen

          AddXML("<editor text='" + T2H(b$) + "' Height='" + Str(height) + "' Flags='#PB_Editor_ReadOnly|#PB_Editor_WordWrap' />")
konnte

- Innerhalb der Prozedur Align() habe ich die 10. Zeile wie folgt geändert

Code: Alles auswählen

			If Margin$ <> "" And Margin$ <> #XmlDefaultMargin$ And Not FindString(UCase(Margin$),"Default")
				Margin$ = " margin='"+Margin$+"'"
			Else
				Margin$ = " margin='0'"    ; <= changed by Andre, because without this there will be a standard margin for horizontal SingleBoxes...)
			EndIf
, um eine unerwünschten Abstände z.B. rings um ein ButtonImageGadget zu haben.

Soviel für den Moment & bis bald!
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: DynamicDialogs - komplexe dynamische GUIs einfach erstel

Beitrag von PureLust »

matbal schrieb: Gefällt mir.
Andre schrieb: Ganz große Klasse, PureLust! :mrgreen: :mrgreen:


Danke ... freut mich zu lesen. :D

matbal schrieb: Es vereinfacht den Umgang mit der DialogLib enorm, finde ich.
Andre schrieb: Ich denke, dass dieses Include das Potential hat, vielen Anwendungsentwicklern [...] die Arbeit wesentlich leichter zu machen.


Jo, so sehe ich das auch.
Als ich angefangen hab mich in die Dialog-Library einzuarbeiten ist mir erst mal klar geworden, um wieviel einfacher es damit sein könnte professionelle GUIs zu erstellen als mit den üblichen Gadget-Befehlen. Nur das Erstellen des XML-Codes war halt dann noch so eine Krux. Vor allem der fehlende Syntax-Check und die nicht erfolgende Autovervollständigung für innerhalb von Strings (z.B. Konstanten etc.) machte die Sache dann doch sehr mühsam und fehleranfällig.

Ich finde, mit dem neuen Modul macht das jetzt richtig Laune.
(Und dank der automatischen Einrückung bei der 'Suffixed-Variante' ist der Programm-Code nun auch sehr gut lesbar.)
matbal hat geschrieben:Beim Testen ist mir ein Fehler aufgefallen. Das Macro Text__() funktioniert nicht richtig. Hier bekomme ich einen Syntaxfehler.
Auh ... da hat sich eine Macro-Rekursion selber in den Schwanz gebissen. :mrgreen:
Ist behoben (neue Version ist online).

Andre schrieb: Vor allem auch vielen Dank, dass du deine immense Vorarbeit der PB Community frei zugänglich machst! :D :praise:

Kein Ding .... tolle Community => jederzeit gerne. ;)

Andre schrieb:... hier mal noch paar kleine Auffälligkeiten/Wünsche:

- Parameter-Beschreibung zu den wichtigsten (komplexeren, bzw. Auswirkungen/Rückgabewerte für das Hauptprogramm habenden) Funktionen wäre schön, z.B. OpenDialogWindow()


Für die Beschreibung hab ich mir oben im Thread ja extra noch etwas Platz frei gehalten ... die ausführliche Beschreibung dauert aber aus zeitlichen Gründen leider noch etwas.

OpenDialogWindow() kann ich aber kurz beschreiben:

Code: Alles auswählen

OpenDialogWindow(DialogNr, XML$, WindowNr=#PB_Ignore, WindowName$="", X=#PB_Ignore, Y=#PB_Ignore,
                 MinWidth=#PB_Ignore, MinHeight=#PB_Ignore, ParentWindowID=0, ErrorMessageType = #DialogError_Debug)

- DialogNr		- Die Nummer des Dialogs, der erstellt wird. Diese Nummer wird z.B. bei DialogGadget() benötigt,
					  wenn man mit Namen, statt IDs arbeitet. Im Falle von #PB_Any wird die Nummer der neu erstellten Dialogs zurückgegeben.

- XML$			- Der XML-String, aus dem der Dialog erstellt werden soll. Im Grunde also der XML-String, der zuvor
					  über die Modul-Funktionen erstellt wurde und dann per GetXML() ausgelesen wurde.

- WindowNr		- Wenn bei Window(...) eine ID verwndet wurde, so muss diese hier angegeben werden.
					  
- WindowName$	- Wenn bei Window(...) ein Name für das Fenster vergeben wurde, so kann/muss der Name hier angegeben werden.

					  Hinweis:  Wenn man sowohl WindowNr als auch WindowName$ angibt, so hat WindowName$ höhere Priorität.
									Wenn weder WindowNr noch WindowName$ angegeben werden, so wird das erste Fenster in der XML-Definition göffnet.
									
- X , Y			- Die optionale X/Y-Position, an der das Fenster geöffnet wird.
									
					  (Hinweis: Wird keine X/Y-Position angegeben und bei Window(...) auch kein #PB_Window_ScreenCentered-Flag gesetzt,
					   so wird das Fenster an der nächsten, vom System vorgegebenen Position geöffnet)
					  
- MinWidth		- Wenn die automatisch berechnete Größe des Dialogs kleiner als die hier angegebene Höhe/Breite ist
  MinHeight		  dann wird das Fenster mit diesen Werten geöffnen.

- ParentWindowID		- WindowID() eines optionalen Parent-Windows (vergleichbar mit der gleichnamigen Option in OpenWindow() )
  
- ErrorMessageType	- Sowohl für CheckDialog() als auch bei OpenDialogWindow() kann durch diesen Parameter angegeben werden,
							  ob und in welcher Form eine Fehlermeldung erzeugt werden soll, falls etwas mit dem XML-String nicht in
							  Ordnung sein sollte. Dies soll dem Programmierer die Erstellung einer eigenen Fehlermeldungsroutine ersparen.
							  
							  Sollte ein Fehler aufgetreten sein, gibt sowohl CheckDialog() als auch bei OpenDialogWindow() als auch OpenDialogWindow() den Wert #False zurück.
							  Somit kann sich die Abfrage auf "If CheckDialog()" oder "If OpenDialogWindow()" beschränken und einfach per
							  Parameter angegeben werden ob im Falle eines Fehlers eine Fehlermeldung ausgegeben werde soll oder nicht.
							  
							  Mögliche Werte für den Parameter 'ErrorMessageType':
							  #DialogError_No		- es wird keinerlei Fehlermeldung ausgegeben (Standard)
							  #DialogError_Debug		- es wird ein Fehlermeldung im Debug-Fenster ausgegeben.
							  								  (diese ist also im Grunde nur wärend der Entwicklungsphase zu sehen)
							  #DialogError_MsgBox	- es wird eine Fehlermeldung in einem MessageRequester() ausgegeben.
							  								  (diese Fehlermeldung wird also auch später in der kompilierten EXE zu sehen sein)
Ich hoffe das reicht Dir erst mal als Info. ;)

Andre schrieb: - direktes Einfügen eines Text$ als Parameter bei der Nutzung von Editor()

Guter Einwurf. Da es bei EditorGadget() keinen Parameter für den Text gibt, hatte ich garnicht erst probiert ob der hier funktionieren könnte. :allright:
(Eingebaut ... neue Version ist online.)

Bzgl. Alignment:

Das Alignment hatte noch 'ne Macke ... ebenfalls korrigiert. Sollte jetzt so funktionieren wie man es erwartet. ;)


Kleine Bitte: Wäre nett wenn Ihr's nochmal (auf Herz und Nieren) testen könntet um zu sehen ob noch irgendwo ein Bug drin ist oder ob noch was zu verbessern wäre.


Feature-Anfrage von mir:

Momentan muss man bei den Gadget-Funktionen ja immer sowohl die ID als auch den Namen$ angeben, also z.B. Editor(#gadEditor01,"", ...) bzw. Editor(#PB_Ignore, "myEditField", ....)
Da man ja vermutlich entweder mit IDs oder Namen$ arbeitet, bin ich am überlegen zwei weitere Modul-Varianten zu machen:
- DynamicDialogs_suffixed_IDonly
- DynamicDialogs_suffixed_NameOnly
bei denen es dann eben nur den Parameter ID oder eben Name$ gibt.

Was meint Ihr dazu ... wäre das noch sinnvoll?


Ach ja ... was demnächst noch kommen wird:
- UseDialog(Dialog#) - Benutzt für nachfolgende Befehle automatisch den hier gesetzten Dialog#
- SetDialogItemText(ItemName$, Text$) - ermöglich einfaches setzen von Texten eines Dialog-Elementes über dessen Namen
- SetDialogItemValue(ItemName$, Value) - ermöglich einfaches setzen des Wertes eines Dialog-Elementes über dessen Namen
- CatchXMLDialog(?MemoryPosition) - Ließt einen, in einer DataSection definierten XML-Dialog ein.
- GetXMLDataSectionData(LabelName$="", IncludeDataSection = #False) - gibt den Code als String zurück, der zum erzeugen einer DataSection
benötigt wird, aus der man später mit Hilfe von CatchXML-Dialog() den zuvor (durch den momentanen Programm-Code) erstellten Dialog einlesen kann.

Mit diesen Befehlen wäre es dann möglich, vordefinierte Dialoge (wie z.B. Input-Requester oder den About-Dialog von ts-soft) in einer DataSection abzulegen und den Inhalt zur Laufzeit über SetDialogItem...() anzupassen.

So ... genug getippt ... jetzt geht's raus in die Sonne. ;)
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
matbal
Beiträge: 246
Registriert: 30.03.2011 20:53

Re: DynamicDialogs - komplexe dynamische GUIs einfach erstel

Beitrag von matbal »

Ich habe noch einen Fehler in den Macros aufgespürt. In MultiBox__() ist ein '='-Zeichen zuviel.

Einen Wunsch fällt mir auch noch ein: Mir fehlt in window() bzw. window__() eine Entsprechung für minwidth='auto' und minheight='auto'. Damit wird die minimale Fenstergröße so festgelegt, daß immer alle Gadgets sichtbar bleiben.
Umsetzen könnte man das bestimmt am besten mit einer Konstante...
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: DynamicDialogs - komplexe dynamische GUIs einfach erstel

Beitrag von PureLust »

Gute Hinweise, danke. :)
Bin momentan unterwegs und kann's also leider nicht sofort ändern/hinzufügen.

Aber so als Tipp für den Fall der Fälle:
Sollte DynamicDialogs mal einen Parameter (noch) nicht unterstützten, kann man jeden Parameter hinten bei XML-Params$ im XML-Format selber einsetzten. Der wird dann so in den erzeugten XML-Code integriert.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1754
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Re: DynamicDialogs - komplexe dynamische GUIs einfach erstel

Beitrag von Andre »

@PureLust: danke, das neue Include funktioniert einwandfrei mit meinem Projekt :allright:

Habe dabei speziell auch die Neuerungen mit Unterstützung von Text$ als Parameter für Editor() als auch den BugFix bzgl. korrektes Alignment (mit Margin=0) erfolgreich getestet. Danke! :D

Danke auch für die OpenDialogWindow() Beschreibung.
Die geplanten Features klingen ebenfalls sehr interessant... :mrgreen:
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: DynamicDialogs - komplexe dynamische GUIs einfach erstel

Beitrag von PureLust »

matbal hat geschrieben:Ich habe noch einen Fehler in den Macros aufgespürt. In MultiBox__() ist ein '='-Zeichen zuviel.

Einen Wunsch fällt mir auch noch ein: Mir fehlt in window() bzw. window__() eine Entsprechung für minwidth='auto' und minheight='auto'.
Umsetzen könnte man das bestimmt am besten mit einer Konstante...
Beides erledigt .... Konstante lautet: #Dialog_AutoMinSize . . . funktioniert allerdings nur bei MinWidth / MinHeight in Window(...) bzw. Window__(...). Nicht bei den Parametern MinWidth & MinHeight in OpenDialogWindow()
(Neue Version unter gleichem Link online.)

@André: Danke für's testen. :allright:

Noch eine kleine Änderung:
Man muss - um die ID zu ignorieren - jetzt nicht mehr zwingend '#PB_Ignore' eingeben. Jeder Wert < 0 und <> #PB_Any wird nun ignoriert.
Da #PB_Any = -1 ist, hat also jeder Wert von -2 und niedriger die gleiche Wirkung wie ein #PB_Ignore.

Nochmals die kleine Frage: Was haltet Ihr von der oben angesprochenen Idee zwei weitere Modulvarianten hinzuzufügen, die dann nur einen der zwei Parameter ID oder Name$ besitzen?
- Modul: DynamicDialogs_suffixed_IDonly
- Modul: DynamicDialogs_suffixed_NameOnly

Würde nochmals etwas Tipparbeit ersparen.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
matbal
Beiträge: 246
Registriert: 30.03.2011 20:53

Re: DynamicDialogs - komplexe dynamische GUIs einfach erstel

Beitrag von matbal »

PureLust hat geschrieben:Konstante lautet: #Dialog_AutoMinSize . . . funktioniert allerdings nur bei MinWidth / MinHeight in Window(...) bzw. Window__(...). Nicht bei den Parametern MinWidth & MinHeight in OpenDialogWindow()
Danke für das schnelle Umsetzen. Die Konstante fehlt noch im zweiten Modul "DynamicDialogs_suffixed". Nachdem ich sie hier auch nachgetragen habe, funktioniert alles bei mir.
PureLust hat geschrieben:Nochmals die kleine Frage: Was haltet Ihr von der oben angesprochenen Idee zwei weitere Modulvarianten hinzuzufügen, die dann nur einen der zwei Parameter ID oder Name$ besitzen?
- Modul: DynamicDialogs_suffixed_IDonly
- Modul: DynamicDialogs_suffixed_NameOnly

Würde nochmals etwas Tipparbeit ersparen.
Die Idee finde ich gut. Das macht den Code auch noch etwas übersichtlicher.

Ich habe in meinen Tests bisher ausschließlich Konstanten verwendet, weil die nur mit der Autovervollständigung der IDE funktionieren.
Antworten