[Module] DynamicGUI

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
Thorsten1867
Beiträge: 1359
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

[Module] DynamicGUI

Beitrag von Thorsten1867 »

Ich habe das "DynamicDialogs"-Module von PureLust an meine Bedürfnisse angepasst und um eine Speicherfunktion für die letzte Fensterposition und -größe erweitert.

Download: DynamicGUI_Module.pbi

Code: Alles auswählen

; added:   Speichern, laden & wiederherstellen von Fensterpositionen & -größen
; added:   GetWinID(DialogID.i) & GetGadgetID(DialogID.i, Name.s) 
; changed: Anpassung der Befehlsnamen für den Aufruf mittels "DynGUI::"
; changed: Makros durch Proceduren ersetzt, da diese den compilerten Code unnötig "aufblähen"
; changed: T2H() -> TXT2XML(), da eine Maskierung der Strings für XML (anstatt HTML) logischer erscheint
; changed: CreateUUID() für fehlende Image-Namen
; changed: Bugfix Macro 'Auswertung_Parameter_URL' (URL$ => XML$)
; changed: Struktur 'Struct_XMLout' anstatt einzelner Variablen
; changed: Lesbarkeit des Codes verbessert & Ersetzen der "unsäglichen" Tabulatoren durch Leerzeichen
; changed: diverse Bugfixes
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
Thorsten1867
Beiträge: 1359
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

DynamicGUI

Beitrag von Thorsten1867 »

Dynamische GUI

- Automatische Größenanpassung von Gadget bei Änderung der Fenstergröße (basierend auf Dialog-Befehlsbibliothek)
- Speichern und wiederherstellen der letzten Fensterposition und/oder -größe
  • ===== DynamicGUI - Befehle =====

    DynGUI::ClearXML() - löschen bzw. zurücksetzen des bisher erzeugten XML-Codes
    DynGUI::ShowNodeErrors() - de-/aktivieren von Nachrichten, die bei Fehlern von Close-Nodes angezeigt werden
    DynGUI::ClearXML() - löschen bzw. zurücksetzen des bisher erzeugten XML-Codes
    DynGUI::GetXML() - abrufen des bisher erzeugten XML-Codes
    DynGUI::SetXML() - setzt den XML-Code & alle folgenden Befehle fügen ihren Code hier an
    DynGUI::AddXML() - zum Einfügen diverser eigener XML-Codes SetXMLOutputFormat()
    DynGUI::CloseNode() - statt immer den passenden Endxxx()-Befehl zu nehmen, kann auch einfach CloseNode() genommen werden.
    DynGUI::CheckDialog() - überprüfen, ob eine Dialog-Definition güötig ist
    DynGUI::Font()
    DynGUI::FontByID()
    DynGUI::GetWinID() - WindowID für PB-Befehle anhand der DialogID ermitteln (Thorsten1867)
    DynGUI::GetGadgetID() - GadgetID für PB-Befehle anhand der DialogID und des Namens ermitteln (Thorsten1867)

    DynGUI::SaveWindowsData() - Letzte Fensterpositionen & -größen in JSON-Datei speichern (Thorsten1867)
    DynGUI::LoadWindowsData() - Letzte Fensterpositionen & -größen aus JSON-Datei laden (Thorsten1867)
    DynGUI::RestoreWinPosition() - Letzte Fensterposition wiederherstellen (Thorsten1867)
    DynGUI::RestoreWinSize() - Letzte Fenstergröße wiederherstellen (Thorsten1867)
    DynGUI::RestoreWindow() - Letzte Fensterposition & -größe wiederherstellen (Thorsten1867)

    DynGUI::OpenWindowXML() & CloseWindowXML()
    DynGUI::DialogXML() & EndDialogXML()
    DynGUI::WindowXML() & EndWindowXML()
    DynGUI::vBoxXML() & EndVBoxXML()
    DynGUI::hBoxXML() & EndHBoxXML()
    DynGUI::GridBoxXML() & EndGridBoxXML()
    DynGUI::MultiBoxXML() & EndMultiBoxXML()
    DynGUI::SingleBoxXML() & EndSingleBoxXML()
    DynGUI::EmptyXML()

    DynGUI::ContainerXML() & EndContainerXML()
    DynGUI::FrameXML() & EndFrameXML()
    DynGUI::PanelXML() & EndPanelXML()
    DynGUI::TabXML() & EndTabXML()
    DynGUI::ScrollAreaXML() & EndScrollAreaXML()
    DynGUI::SplitterXML() & EndSplitterXML()

    DynGUI::ButtonXML()
    DynGUI::ButtonImageXML()
    DynGUI::CalendarXML()
    DynGUI::CanvasXML()
    DynGUI::CheckBoxXML()
    DynGUI::ComboBoxXML()
    DynGUI::DateTimeXML()
    DynGUI::EditorXML()
    DynGUI::ExplorerComboXML()
    DynGUI::ExplorerListXML()
    DynGUI::ExplorerTreeXML()
    DynGUI::HyperLinkXML()
    DynGUI::IPAddressXML()
    DynGUI::ImageXML()
    DynGUI::ListIconXML()
    DynGUI::ListViewXML()
    DynGUI::OptionXML()
    DynGUI::ScrollBarXML()
    DynGUI::SpinXML()
    DynGUI::StringXML()
    DynGUI::TextXML()
    DynGUI::TrackBarXML()
    DynGUI::TreeXML()
    DynGUI::WebXML()
    DynGUI::ScintillaXML()
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
oO0XX0Oo
Beiträge: 55
Registriert: 21.07.2017 22:36

Re: [Module] DynamicGUI

Beitrag von oO0XX0Oo »

Hi,

danke sehr für dieses tolle Modul!

Es gibt einen kleinen bug bezüglich der Funktion ButtonXML().
Sie funktioniert nicht korrekt, zumindest nicht, wenn man die
ID als Referenz benutzen will.

Ab Zeile 1703 beginnt die Prozedur und ihr fehlt der Eintrag für die ID.

Momentan:

Code: Alles auswählen

  Procedure.s ButtonXML(ID=#PB_Ignore, Name$="", Text$="", Flags=0, Width=#PB_Default, Height=#PB_Default, Align=#PB_Default, Margin$="", ColSpan=#PB_Ignore, RowSpan=#PB_Ignore, XmlParam$="")
    Protected XML$ = "<button"
    
    SetParameterCurrentFont(ID, Name$)     ; Parameter: ID
    
    XML$ + GetParameterName(Name$)         ; Parameter: Name$
Ändert man es auf:

Code: Alles auswählen

  Procedure.s ButtonXML(ID=#PB_Ignore, Name$="", Text$="", Flags=0, Width=#PB_Default, Height=#PB_Default, Align=#PB_Default, Margin$="", ColSpan=#PB_Ignore, RowSpan=#PB_Ignore, XmlParam$="")
    Protected XML$ = "<button"
    
    SetParameterCurrentFont(ID, Name$)     ; Setze Gadget-Font, wenn ActFontID <> #PB_Default
    
    XML$ + GetParameterID(ID)              ; Parameter: ID
    XML$ + GetParameterName(Name$)         ; Parameter: Name$
Funktioniert es auch mit der ID einwandfrei...

Siehst du evtl. eine Möglichkeit, Menüs / Toolbars innerhalb DynamicGUI mit unterstützen zu können?
Ich weiß, DynamicDialogs unterstützt das im Original nicht, aber der Programmierer scheint
MIA (missing in action) zu sein, so dass es nicht sonderlich viel Sinn macht, in dessen
thread noch danach zu fragen...
Benutzeravatar
Thorsten1867
Beiträge: 1359
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: [Module] DynamicGUI

Beitrag von Thorsten1867 »

Die Dialog-Befehlsbibliothek unterstützt leider weder Menü- noch Toolbar.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
oO0XX0Oo
Beiträge: 55
Registriert: 21.07.2017 22:36

Re: [Module] DynamicGUI

Beitrag von oO0XX0Oo »

http://forums.purebasic.com/german/view ... db#p343882

Unterstützung für die Verwendung von Menüs und einer Statusbar wurde hinzugefügt...

Könntest du die Änderungen in deiner Version evtl. auch mit einbauen?

Danke sehr!
Antworten