Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Form auf Panel -> TEdit funktioniert nicht (https://www.delphipraxis.net/161097-form-auf-panel-tedit-funktioniert-nicht.html)

Bbommel 16. Jun 2011 12:18


Form auf Panel -> TEdit funktioniert nicht
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,

ich habe eine Anwendung, bei der es in einem Form ein Panel gibt und auf diesem Panel soll wiederum ein Form angezeigt werden. Bevor die Sinnfrage gestellt wird, weil man in dem Zusammenhang auch oft liest, dass man doch dafür einfach ein Frame nehmen solle, weil das viel geeigneter ist: Ich möchte gerne, dass für dieses Form-im-Form auch eine Titelzeile angezeigt wird und außerdem soll der Benutzer es auch in der Größe ändern und innerhalb des Panel verschieben können.

Lief bisher auch alles ganz prima, jetzt kam ich aber auf die blöde Idde, auf dieses Form ein TEdit platzieren zu wollen. Und das verhält sich nun denkbar merkwürdig: Mit der linken Maustaste kann man gar nicht darein klicken, um es zu benutzen und einen Text einzugeben. Erst, wenn man mit der rechten Taste klickt, kann man das Edit benutzen und einen Text eingeben. Die normalen Funktionen der rechten Maustaste (Einfügen und so) sind nicht verfügbar.

Hat irgendwer eine Idee, woran das liegt und was man da tun kann?

Anbei ein Mini-Projekt, das das Problem demonstriert. Ein Klick auf den Button erzeugt das Form mit dem Edit, welches nicht so will, wie es soll.

Danke und bis denn
Bommel

Edit: Anhang korrigiert... da fehlte die Unit3...

mkinzler 16. Jun 2011 12:19

AW: Form auf Panel -> TEdit funktioniert nicht
 
Wer ist der Owner, Parent?

Bbommel 16. Jun 2011 12:20

AW: Form auf Panel -> TEdit funktioniert nicht
 
Das Panel:

Delphi-Quellcode:
 
  tempForm3:=Tform3.Create(Panel1);
  tempForm3.Parent:=Panel1;

bcvs 17. Jun 2011 11:58

AW: Form auf Panel -> TEdit funktioniert nicht
 
Mach mal folgendes:

tempForm3:=Tform3.Create(Panel1);
tempForm3.Parent:=Panel1;
tempForm3.Show;
SendMessage(tempForm3.Handle , WM_NCACTIVATE, 1, 0);

Damit ist dann der Titelbalken auch als aktiv dargestellt. Ich mache hier so etwas ähliches und plaziere mehrere Forms auf einem Panel. Wenn ein neues Form hinzukommt, muss dann eine
SendMessage(Handle , WM_NCACTIVATE, 0, 0) an die anderen Forms geschickt werden. Damit habe ich so eine Art MDI-Verwaltung nachgebaut.

Bbommel 17. Jun 2011 13:56

AW: Form auf Panel -> TEdit funktioniert nicht
 
Das scheint ganz hervorragend zu funktionieren - vielen Dank!

bcvs 20. Jun 2011 07:22

AW: Form auf Panel -> TEdit funktioniert nicht
 
Zitat:

Zitat von Bbommel (Beitrag 1107007)
Das scheint ganz hervorragend zu funktionieren - vielen Dank!

Das funktioniert auch ganz gut, aber es gibt ein paar Stolpersteine:

Bei einigen Komponenten müssen gewisse Eigenschaften nach dem Umsetzen des Form.Parent im Code nochmal neu gesetzt werden, da sie sonst nicht wirken.

Außerdem funktioniert die Eigenschaft ActiveControl des (in deinem Beispiel) TempForm3 nicht mehr korrekt, man muss das ActiveControl des MainForm abfragen.

Also: Sei darauf gefasst, dass bei diesem Design das eine oder andere zunächst nicht wie gewünscht funktioniert, es gibt aber für alles eine Lösung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz