erzeugte und angedockte forms speichern?

Forum für alles rund um die MSEide und MSEgui

Re: erzeugte und angedockte forms speichern?

Beitragvon mse » 1. Dez 2017, 15:01 Re: erzeugte und angedockte forms speichern?

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?

Siehe git master c7c6d34dc15238b1b61886efa7f33d976764ff3b.
mse
 
Beiträge: 1713
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.4.2,git master FPC 3.0,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon fliegermichl » 1. Dez 2017, 16:22 Re: erzeugte und angedockte forms speichern?

Cool! Danke
fliegermichl
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

Beitragvon fliegermichl » 5. Dez 2017, 15:30 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.
fliegermichl
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

Beitragvon mse » 5. Dez 2017, 16:52 Re: erzeugte und angedockte forms speichern?

fliegermichl hat geschrieben:Wie kann ich denn erreichen, daß auch die Childcontrols der zur Laufzeit erzeugten Formulare mit im statfile gespeichert werden?

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.
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.
Ideal wäre eigentlich, wenn ich so etwas wie einen vereinfachten Laufzeit GUI Designer hätte.

Was ist der Einsatzzweck?
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.
mse
 
Beiträge: 1713
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.4.2,git master FPC 3.0,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon fliegermichl » 6. Dez 2017, 09:19 Re: erzeugte und angedockte forms speichern?

mse hat geschrieben:Im statfile werden die Werte der Childcontrols durch Setzen der "statfile" properties gespeichert.


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.

fliegermichl hat geschrieben:Ideal wäre eigentlich, wenn ich so etwas wie einen vereinfachten Laufzeit GUI Designer hätte.

Was ist der Einsatzzweck?

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
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

Beitragvon mse » 6. Dez 2017, 10:48 Re: erzeugte und angedockte forms speichern?

fliegermichl hat geschrieben:
mse hat geschrieben:Im statfile werden die Werte der Childcontrols durch Setzen der "statfile" properties gespeichert.


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.

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.
Es gibt auch 'File'-'New'-'Form'-'Tabform', das sind Formulare welche zur Laufzeit in ttabwidget eine tabpage bilden können.
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.

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.
mse
 
Beiträge: 1713
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.4.2,git master FPC 3.0,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon fliegermichl » 11. Dez 2017, 14:29 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
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);
 


Damit kann man problemlos Formulare in Dateien speichern und wieder laden.
fliegermichl
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

Beitragvon mse » 11. Dez 2017, 17:17 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.
mse
 
Beiträge: 1713
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.4.2,git master FPC 3.0,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon fliegermichl » 12. Dez 2017, 10:28 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.
fliegermichl
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

• Themenende •
Vorherige

Zurück zu MSEide und MSEgui



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried