Siehe git master c7c6d34dc15238b1b61886efa7f33d976764ff3b.fliegermichl hat geschrieben: und noch eine kleine Bitte: Wenn man im Designer ein Menuitem anklickt, passiert nichts. Kannst du es so einstellen, daß dann das Menuitem im Objectinspektor den Focus bekommt?
erzeugte und angedockte forms speichern?
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: erzeugte und angedockte forms speichern?
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: erzeugte und angedockte forms speichern?
Cool! Danke
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: erzeugte und angedockte forms speichern?
Wie kann ich denn erreichen, daß auch die Childcontrols der zur Laufzeit erzeugten Formulare mit im statfile gespeichert werden?
Ideal wäre eigentlich, wenn ich so etwas wie einen vereinfachten Laufzeit GUI Designer hätte.
Ideal wäre eigentlich, wenn ich so etwas wie einen vereinfachten Laufzeit GUI Designer hätte.
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: erzeugte und angedockte forms speichern?
Du meinst zur Laufzeit erzeugte variable Komponenten? Da müsste man vermutlich component streaming verwenden, dieselbe Methode welche auch MSEide verwendet, siehe TReader und TWriter.fliegermichl hat geschrieben:Wie kann ich denn erreichen, daß auch die Childcontrols der zur Laufzeit erzeugten Formulare mit im statfile gespeichert werden?
https://www.freepascal.org/docs-html/cu ... eader.html
https://www.freepascal.org/docs-html/cu ... riter.html
Im statfile werden die Werte der Childcontrols durch Setzen der "statfile" properties gespeichert.
Was ist der Einsatzzweck?Ideal wäre eigentlich, wenn ich so etwas wie einen vereinfachten Laufzeit GUI Designer hätte.
Edit:
Falls es um verstellbare widget Grössen geht, dafür ist TSplitter vorgesehen, der hat eine "statfile" Property um die Position zu speichern.
Beispiele sind
https://gitlab.com/mseide-msegui/mseuni ... rms/panels
und MSEgit.
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: erzeugte und angedockte forms speichern?
Genau das hatte ich versucht. Ich habe ein ttabwidget erzeugt und in dem ein ttabpage. statfile von dem tabwidget auf mainmo.mainstat gesetzt. Die options des Formulars enthalten auch fo_autoreadstat und fo_autowritestat aber von dem ttabwidget oder dem ttabpage erscheint nichts im statfile.mse hat geschrieben: Im statfile werden die Werte der Childcontrols durch Setzen der "statfile" properties gespeichert.
fliegermichl hat geschrieben: Ideal wäre eigentlich, wenn ich so etwas wie einen vereinfachten Laufzeit GUI Designer hätte.
Ich habe tonnenweise anwendungsspezifische Aktionen die in Gruppen organisiert sind. Der Anwender soll die GUI selbst anpassen können und z.B. durch Toolbars, Menüs, Shortcuts, Commandline etc. diese Aktionen mit Parametern versehen ud ausführen können. Diese Controls zur Laufzeit zu erzeugen klappt problemlos nur bekomme ich das nicht persistiert.Was ist der Einsatzzweck?
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: erzeugte und angedockte forms speichern?
ttabwidget speichert die lediglich die aktuelle page im statfile. Das Setzen von fo_autoreadstat und fo_autowritestat dient dazu, dass tstatfile.readstat()/writestat() beim Erstellen und Schliessen des Fomulares automatisch ausgeführt wird. Da mainmo.mainstat viele Formulare bedient, sollten die flags nicht gesetzt sein.fliegermichl hat geschrieben:Genau das hatte ich versucht. Ich habe ein ttabwidget erzeugt und in dem ein ttabpage. statfile von dem tabwidget auf mainmo.mainstat gesetzt. Die options des Formulars enthalten auch fo_autoreadstat und fo_autowritestat aber von dem ttabwidget oder dem ttabpage erscheint nichts im statfile.mse hat geschrieben: Im statfile werden die Werte der Childcontrols durch Setzen der "statfile" properties gespeichert.
Es gibt auch 'File'-'New'-'Form'-'Tabform', das sind Formulare welche zur Laufzeit in ttabwidget eine tabpage bilden können.
Das geht nicht automatisch, wenn es nicht über TDockController läuft. Die Struktur kann z.B. in tstatfile.onstatwrite gespeichert und in tstatfile.onstatread rekonstruiert werden.Ich habe tonnenweise anwendungsspezifische Aktionen die in Gruppen organisiert sind. Der Anwender soll die GUI selbst anpassen können und z.B. durch Toolbars, Menüs, Shortcuts, Commandline etc. diese Aktionen mit Parametern versehen ud ausführen können. Diese Controls zur Laufzeit zu erzeugen klappt problemlos nur bekomme ich das nicht persistiert.
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: erzeugte und angedockte forms speichern?
Ich bekomme das einfach nicht hin.
Wenn ich mit stream.writecomponent eine Komponente speichere, dann bekomme ich später beim laden - die Exception unknown property "". Kann ich die Funktionen der ide zum speichern und laden von Formularen in den .mfm Dateien dafür nutzen?
In Lazarus gibt es lreseources.pas
Damit kann man problemlos Formulare in Dateien speichern und wieder laden.
Wenn ich mit stream.writecomponent eine Komponente speichere, dann bekomme ich später beim laden - die Exception unknown property "". Kann ich die Funktionen der ide zum speichern und laden von Formularen in den .mfm Dateien dafür nutzen?
In Lazarus gibt es lreseources.pas
Code: Alles auswählen
procedure WriteComponentAsTextToStream(AStream: TStream;
AComponent: TComponent);
procedure ReadComponentFromTextStream(AStream: TStream;
var RootComponent: TComponent;
OnFindComponentClass: TFindComponentClassEvent;
TheOwner: TComponent = nil;
Parent: TComponent = nil);
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: erzeugte und angedockte forms speichern?
Ich würde glaube ich nicht component-streaming via TReader/TWriter sondern TStatFile benutzen, da die anderen Layout- und Status-Daten ja auch in der statfile Datei stehen.
Zur Fehlermeldung, falls "RootComponent" keine published Eigenschaften der zu ladenden Komponenten hat, müssen die verwendeten Komponentenklassen vor dem Laden via "RegisterClass" bekannt gemacht werden. Komponenten-Streaming ist eine komplizierte Angelegenheit.
Bitte mache ein vereinfachtes Beispiel, welches das Problem zeigt.
Zur Fehlermeldung, falls "RootComponent" keine published Eigenschaften der zu ladenden Komponenten hat, müssen die verwendeten Komponentenklassen vor dem Laden via "RegisterClass" bekannt gemacht werden. Komponenten-Streaming ist eine komplizierte Angelegenheit.
Bitte mache ein vereinfachtes Beispiel, welches das Problem zeigt.
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: erzeugte und angedockte forms speichern?
Merkwürdig, ich habe eben das vereinfachte Beispiel gemacht und da hat es problemlos funktioniert. Ich denke, daß da tatsächlich eine property nicht published wurde. Aber jetzt habe ich einen Anhaltspunkt wo ich vergleichen kann.