TEmbeddedForm

Rund um die LCL und andere Komponenten
Antworten
schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

TEmbeddedForm

Beitrag von schnullerbacke »

Hat jemand hier sowas oder weiß jemand wo man sowas "for free" bekommt?

Hintergrund dürfte lar sein, anstatt Frames zu verwenden gleich ein echtes Formular in eine Listbox, Panel oder ähnlich einbetten. Ideal wäre, wenn man es dann noch per (Drag and Drop) auf einen anderen virtuellen Desktop verschieben könnte.

Sollte möglichst für Delphi und Kylix auch funzen.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Wie jetzt? Soll es ne MDI werden?

MDI gibts ja nur ein paar ansätze für Laz:
http://wiki.lazarus.freepascal.org/MultiDoc
und irgendwo gabs da auch noch eine.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

hä ?
versteht auch nicht was du suchst
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6209
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Hallo Schnullerbacke,

gehts in die Richtung ?

http://www.midnightbeach.com/jon/pubs/M ... rames.html
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

@af0815

Genau das war gemeint.

@monta

Genau MDI war nicht gemeint. Normalerweise kannst man ein Formular nicht in ein anderes visuelles Objekt (TListBox, TPanel, TScrollBox) einbetten, weil der Code für *.dfm (*.xfm, *.lfm) nicht unterhalb des Owner-Objektes in dem gerade verwendeten Formular eingetragen werden kann. Die Spezialität der Formulare verhindert das, weil die halt ihre eigene *.dfm (*.xfm, *.lfm) anlegen möchten.

Spätestens beim inherited Create(AOwner) geht das schief, weil TForm.Create seine eigen Instanz prüft und dabei TForm feststellt. Das wird dann abgelehnt weil eben die *.dfm (*.xfm, *.lfm) nicht angelegt werden kann, andereseits in der aktuellen *.dfm... der Code nicht eingetragen werden kann.

Früher gabs bei Delphi (1.0 ff) mal das Objekt TWindow, das verhielt sich ähnlich wie ein Formular, konnte aber in andere visuelle Objekte eingebettet werden und ließ sich mit einem einfachen Trick selbst zum Formular machen.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Das is noch richtig das würde ja Docking unmöglich machen.
probier doch einfach mal sowas

Code: Alles auswählen

Form1.Parent := Panel2;
Form1.Align := alClient;

Unter windows gibts diesbezüglich einen Focusbug den man aber umschiffen kann. Ansonsten funktionierts.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

@Christian

Danke für den Hinweis. Geht hauptsächlich darum, das man zu Einen damit das Formular in der IDE zusammenbauen kann und es dann halt einfach irgendwo einhängt wenn man das will, es aber eben auch komplett auf einen virtuellen Desktop auslagern kann. Dabei darf dann aber eben auch der Focus nicht auf das ausgelagerte Formular übergehen.

Nimm an du hast 4 Bildschirme a la Börsenbroker. Anstatt nun 4 Programme zu starten die für sich jedes die gleiche Datenbank abfragen und nur verschiedene Sichtweisen der gleichen Datenbank anbieten, brauchste halt nur eine Anwendung und etablierst einfach auf jedem Bildschirm eine Sichtweise. Wer nur einen Bildschirm hat, bekommt alle 4 Sichten in einer ScrollBox und kann jederzeit wechseln. Der Main-Thread bleibt immer der gleiche. Die 4 Sichten machen ihre Anfragen an die DB alle gesondert und sind damit fast Synchron, deswegen darf der Focus nicht verloren gehen, sonst läuft das Update nicht mehr.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Du hast noch nie n programm von mir gesehn oder ? Ich mach das schon seit 2 Jahren so das man jede Ansicht aushängen kann und auf nen anderen Bildschirm verschieben.

Dabei darf dann aber eben auch der Focus nicht auf das ausgelagerte Formular übergehen.

hä ? Bahnhof ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten