erzeugte und angedockte forms speichern?

Forum für alles rund um die MSEide und MSEgui

Re: erzeugte und angedockte forms speichern?

Beitragvon mse » 28. Nov 2017, 13:29 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
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 » 28. Nov 2017, 14:58 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
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;
 


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

Beitragvon mse » 28. Nov 2017, 17:25 Re: erzeugte und angedockte forms speichern?

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.

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.
Könnte man das Handling mit der zu erstellenden dockpanel Klasse eleganter lösen?

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.
Ich werde TDockPanelFormController mit Funktionen zur Verwaltung von dynamischen Formularen ausrüsten.
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 » 29. Nov 2017, 07:08 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)
fliegermichl
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

Beitragvon mse » 29. Nov 2017, 07:31 Re: erzeugte und angedockte forms speichern?

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.

In MSEgit macht dies TDockPanelformController.
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)

Ich bin daran TDockPanelformController um Funktionen zur Verwaltung von dynamisch erzeugten Formularen zu erweitern. Ich denke sie sollten separat behandelt 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 » 29. Nov 2017, 09:27 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
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

Beitragvon fliegermichl » 29. Nov 2017, 09:32 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
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

Beitragvon fliegermichl » 29. Nov 2017, 09:38 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.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
fliegermichl
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

Beitragvon mse » 29. Nov 2017, 09:57 Re: erzeugte und angedockte forms speichern?

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.

Habe ein wenig Geduld, Ich arbeite an der Erweiterung von TDockPanelformController.
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 mse » 29. Nov 2017, 10:36 Re: erzeugte und angedockte forms speichern?

git master b4eb5ce6b12e60fb548cba5579c28d0f61aef392 hat es (experimentell). Ein Beispiel ist hier:
https://gitlab.com/mseide-msegui/mseuni ... namicforms
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 » 30. Nov 2017, 09:40 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 :-)
fliegermichl
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

Beitragvon mse » 30. Nov 2017, 09:58 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.
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 » 30. Nov 2017, 10:55 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.
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
 
fliegermichl
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

Beitragvon mse » 30. Nov 2017, 12:05 Re: erzeugte und angedockte forms speichern?

In welchem TStatFile speichert sich tdcviewerfo?
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 » 30. Nov 2017, 16:19 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.
fliegermichl
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

» Weitere Beiträge siehe nächste Seite »
VorherigeNächste

Zurück zu MSEide und MSEgui



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried