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?
Dann könnte dich auch MSEspice interessieren. Dort werden ebenfalls von den Anwendern erzeugte verschiedene Forms verwendet:
https://gitlab.com/mseide-msegui/mseuni ... s/msespice
https://gitlab.com/mseide-msegui/mseuni ... s/msespice
- 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?
Werde ich mir bei Gelegenheit anschauen.
Ich habe verschiedene Formularklassen die alle auf tdockpanelform basieren. Jetzt habe ich in meinem mainmodul ein feld fnewpanelclass : panelfoclassty; deklariert.
in dem oncreatepanel Event des tdockpanelformcontroller (maindock) steht jetzt folgendes
Das funktioniert soweit auch. Ich konnte jedoch bislang nicht herausfinden, wie msegit den Namen des neuen Panels vergibt. Bei mir klappt das nur beim ersten. Wenn ich ein neues Panel erstellen will, bekomme ich die Exception "panel1" existiert bereits.
Könnte man das Handling mit der zu erstellenden dockpanel Klasse eleganter lösen?
Ich habe verschiedene Formularklassen die alle auf tdockpanelform basieren. Jetzt habe ich in meinem mainmodul ein feld fnewpanelclass : panelfoclassty; deklariert.
in dem oncreatepanel Event des tdockpanelformcontroller (maindock) steht jetzt folgendes
Code: Alles auswählen
procedure tmainmo.maindockcreatepanel(const sender: tdockpanelformcontroller;
var apanel: tdockpanelform);
begin
if fnewpanelclass = nil then
apanel := tdockpanelform.create(application)
else
apanel := fnewpanelclass.create(application);
with sender, apanel do
begin
createframe;
dragdock.optionsdock:= defaultdockpaneloptionsdock;
frame.grip_options:= defaultdockpanelgripoptions;
dragdock.optionsdock:= sender.optionsdock;
frame.grip_options:= sender.optionsgrip;
container.frame.framei:= nullframe;
statfile:= sender.statfileclient;
end;
fnewpanelclass := nil;
end;
Könnte man das Handling mit der zu erstellenden dockpanel Klasse eleganter lösen?
-
- 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?
In MSEgit kommt jede Formklasse nur einmal vor. In MSEspice können mehrere gleiche Formklassen vorkommen, dort werden die Komponentennamen zuerst:= '' gesetzt und danach konstruiert.fliegermichl hat geschrieben:Ich konnte jedoch bislang nicht herausfinden, wie msegit den Namen des neuen Panels vergibt. Bei mir klappt das nur beim ersten. Wenn ich ein neues Panel erstellen will, bekomme ich die Exception "panel1" existiert bereits.
Ich vermute, dass du die Dockpanels als dynamische Formulare "zweckentfremdest". Mit Dockpanel sind eigentlich die vom Anwender erstellten leeren Dockflächen gemeint, in MSEide z.B. die mit 'View'-'Panels'-'New Panel' erstellten Fenster.Könnte man das Handling mit der zu erstellenden dockpanel Klasse eleganter lösen?
Ich werde TDockPanelFormController mit Funktionen zur Verwaltung von dynamischen Formularen ausrüsten.
- 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 kann in msegit "View -> Panels -> new Panel" beliebig viele Panels anlegen. Die können dann auch angedockt werden und irgendwie werden die auch in der .sta Datei gespeichert und wiederhergestellt. Den Mechanismus hab ich aber noch nicht durchschaut.
Mit Dockpanels meine Ich von TDockPanelform abgeleitete Klassen (z.B. CADViewer, Layerliste, PropertyEditor oder auch nur einfach TDockPanelform um diese per Drag and Dock zu organisieren)
Mit Dockpanels meine Ich von TDockPanelform abgeleitete Klassen (z.B. CADViewer, Layerliste, PropertyEditor oder auch nur einfach TDockPanelform um diese per Drag and Dock zu organisieren)
-
- 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?
In MSEgit macht dies TDockPanelformController.fliegermichl hat geschrieben:Ich kann in msegit "View -> Panels -> new Panel" beliebig viele Panels anlegen. Die können dann auch angedockt werden und irgendwie werden die auch in der .sta Datei gespeichert und wiederhergestellt. Den Mechanismus hab ich aber noch nicht durchschaut.
Ich bin daran TDockPanelformController um Funktionen zur Verwaltung von dynamisch erzeugten Formularen zu erweitern. Ich denke sie sollten separat behandelt werden.Mit Dockpanels meine Ich von TDockPanelform abgeleitete Klassen (z.B. CADViewer, Layerliste, PropertyEditor oder auch nur einfach TDockPanelform um diese per Drag and Dock zu organisieren)
- 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 hab mir das eben im Debugger nochmal angeschaut. Die DockpanelForm wird auch bei mir von TDockformController.newpanel erzeugt aber dann nicht in dessen fpanellist eingetragen. Dadurch erzeugt er beim nächsten Aufruf wieder den namen "panel1".
- 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 hab den Fehler gefunden. Beim erzeugen von TDockPanelform darf nicht application als Owner angegeben werden sondern der tdockformcontroller. Dann klappt es.
- 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?
Also die .sta Datei enthält schon Informationen über die Panels. Die werden beim start vom Programm nur nicht verwendet. Wo genau muss ich mich einklinken, damit die gespeicherten Formulare wieder erzeugt und an ihren alten Positionen platziert/gedockt usw. werden?
Edit: Eben sehe ich, daß die Formulare erzeugt werden. Sie werden nur nicht angezeigt bzw. platziert.
Edit: Eben sehe ich, daß die Formulare erzeugt werden. Sie werden nur nicht angezeigt bzw. platziert.
- Dateianhänge
-
dc.zip
- (418 Bytes) 245-mal heruntergeladen
-
- 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?
Habe ein wenig Geduld, Ich arbeite an der Erweiterung von TDockPanelformController.fliegermichl hat geschrieben:Also die .sta Datei enthält schon Informationen über die Panels. Die werden beim start vom Programm nur nicht verwendet. Wo genau muss ich mich einklinken, damit die gespeicherten Formulare wieder erzeugt und an ihren alten Positionen platziert/gedockt usw. werden?
Edit: Eben sehe ich, daß die Formulare erzeugt werden. Sie werden nur nicht angezeigt bzw. platziert.
-
- 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?
git master b4eb5ce6b12e60fb548cba5579c28d0f61aef392 hat es (experimentell). Ein Beispiel ist hier:
https://gitlab.com/mseide-msegui/mseuni ... namicforms
https://gitlab.com/mseide-msegui/mseuni ... namicforms
- 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?
Das klappt jetzt schon fast perfekt. Bei mir stand tmainfo.statfile noch auf nil obwohl ich ein tstatfile in das Formular eingefügt hatte. Dadurch wurden (vermutlich durch die Verknüpfung zu dem mainmodule) die Formulare zwar in der .sta Datei gespeichert aber nicht geladen. Jetzt werden die per tdockpanelformcontroller.createdynamicwidget erzeugten Formulare zwar gespeichert und geladen, "vergessen" aber, daß sie dockbar sind und wo sie früher angedockt waren.
Der kleinste Fehler bei den tonnenweise einstellbaren Optionen hat hier schwerwiegende (und vor allem schwer aufzufindende) Ursachen.
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? Man klickt sich da den Wolf
tmainmenu -> menu -> submenu -> item4(view) -> submenu -> item2(panels) -> submenu....
Ausserdem würde ich das Layout gerne zur Laufzeit laden und speichern können (So wie loadwindowslayout/savewindowslayout). Ich bin mir sicher, daß das geht, finde es aber nicht
Der kleinste Fehler bei den tonnenweise einstellbaren Optionen hat hier schwerwiegende (und vor allem schwer aufzufindende) Ursachen.
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? Man klickt sich da den Wolf
tmainmenu -> menu -> submenu -> item4(view) -> submenu -> item2(panels) -> submenu....
Ausserdem würde ich das Layout gerne zur Laufzeit laden und speichern können (So wie loadwindowslayout/savewindowslayout). Ich bin mir sicher, daß das geht, finde es aber nicht

-
- 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?
Wenn ich richtig verstehe, erzeugst du eine variable Anzahl von zum Teil gleichen Formularklassen mit unterschiedlichen Daten. Das ist natürlich nicht so einfach zu realisieren. 
Bitte mache ein vereinfachtes Beispiel damit wir am konkreten Code arbeiten können.
Die Tree-Items im Objektinspektor lassen sich auch mit der Tastatur auswählen, ArrowRight auf dem '+' Symbol öffnet den Zweig, ArrowLeft auf dem '-' Symbol schliesst den Zweig, 'Incremental search' auf den Eigenschaftsnamen wird ebenfalls unterstützt.

Bitte mache ein vereinfachtes Beispiel damit wir am konkreten Code arbeiten können.
Die Tree-Items im Objektinspektor lassen sich auch mit der Tastatur auswählen, ArrowRight auf dem '+' Symbol öffnet den Zweig, ArrowLeft auf dem '-' Symbol schliesst den Zweig, 'Incremental search' auf den Eigenschaftsnamen wird ebenfalls unterstützt.
- 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 vermute, daß irgendeine Option fehlt.
Wenn ich mir die .sta Datei anschaue, dann ist unter mainmo.maindock.panel1 gespeichert, wo panel1 gedockt war usw. für dcviewer1 fehlt diese Information. dcviewer1 vom typ tdcviewerfo wird zwar erzeugt aber mit den defaulteinstellungen.
Wenn ich mir die .sta Datei anschaue, dann ist unter mainmo.maindock.panel1 gespeichert, wo panel1 gedockt war usw. für dcviewer1 fehlt diese Information. dcviewer1 vom typ tdcviewerfo wird zwar erzeugt aber mit den defaulteinstellungen.
Code: Alles auswählen
[mainmo.maindock]
panels=1
panel1
dynamiccomps=1
tdcviewerfo,dcviewerfo
[mainmo.maindock.panel1]
splitdir=2
useroptions=805338607
stackedunder=mainfo
parent=
mdistate=0
nx=0
ny=0
ncx=0
ncy=0
x=910
y=470
cx=350
cy=200
rcx=0
rcy=0
children=0
focusedchild=0
wsize=0
active=0
visible=1
-
- 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?
In welchem TStatFile speichert sich tdcviewerfo?
- 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?
Das war der Fehler. Jetzt klappt es. Ich hab mal ein erstes Video von dem Programm gemacht. Das ist natürlich lange noch nicht fertig aber eben ein ganz guter Anfang.
Ich stelle einen Link in einen neuen Thread.
Ich stelle einen Link in einen neuen Thread.