AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Formular in Panel einbetten

Ein Thema von aschne1 · begonnen am 10. Aug 2004 · letzter Beitrag vom 2. Sep 2004
Antwort Antwort
Seite 1 von 2  1 2      
aschne1

Registriert seit: 18. Jul 2004
Ort: Davos
64 Beiträge
 
Delphi 2005 Professional
 
#1

Formular in Panel einbetten

  Alt 10. Aug 2004, 23:36
Hallo

In meinem MDI-Hauptformular befinden sich einige verschachtelte Panels. Nun möchte ich bei Bedarf in einem der Panel ein oder mehrere Kindfenster anzeigen. Mit folgendem Code wird das Kind-Formular angezeigt, jedoch nicht dem Panel zugeordnet, sondern dem Hauptformular.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
// Form2 - Variable der Formularunit des anzuzeigenden Formulars (Form2 : TForm2)
begin
  Form2 := TForm2.Create(Self);
  Form2.parent := Panel5;
end;
So ist dann das Formular im Panel
  Windows.SetParent(Form2.Handle, Panel5.Handle); Eigentlich müsste es aber auch mit der ersten Parent Anweisung gehen?
Der Beitrag Form an einen Panel im Hauptfenster koppeln hilft mir auch nicht weiter!

Was mache ich falsch?

Danke und Gruss
Armin
Armin
aschne1
  Mit Zitat antworten Zitat
Erichgue

Registriert seit: 24. Aug 2004
Ort: Gunzenhausen
15 Beiträge
 
Delphi XE6 Enterprise
 
#2

Re: Formular in Panel einbetten

  Alt 25. Aug 2004, 08:12
Hallo,

versuchs mal mit

Form2 := TForm2.Create(Panel5);

Gruß
Erich Günthner
  Mit Zitat antworten Zitat
aschne1

Registriert seit: 18. Jul 2004
Ort: Davos
64 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Formular in Panel einbetten

  Alt 25. Aug 2004, 22:04
Hallo Erichgue

Habe ich bereits erfolglos versucht. Das erzeugte Formular wir auf dem Hauptformular erstellt und das Panel befindet sich davor im Vordergrund.

Trotzdem danke

Gruss
Armin
aschne1
  Mit Zitat antworten Zitat
Benutzerbild von Fossibaer58809
Fossibaer58809

Registriert seit: 20. Aug 2004
Ort: Lüdenscheid
50 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Formular in Panel einbetten

  Alt 25. Aug 2004, 22:20
Habe das gerade mal ausprobiert.. und klappt.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2 := TForm2.Create(Panel1);
  Form2.Parent := Panel1;
  Form2.SetBounds(10,10,Form2.Width, Form2.Height);
  Form2.FormStyle := fsNormal; // Hatte diese Zeile vergessen
  Form2.Visible := true;
end;
Gruß
Michael

Sorry, hatte die markierte Zeile vergessen.
Michael Küper
  Mit Zitat antworten Zitat
aschne1

Registriert seit: 18. Jul 2004
Ort: Davos
64 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Formular in Panel einbetten

  Alt 31. Aug 2004, 21:20
Hallo Michael

Danke für Deine Lösung! Klappt prima

Gruss
Armin
Armin
aschne1
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Formular in Panel einbetten

  Alt 31. Aug 2004, 21:25
Moin Zusammen,

vielleicht noch eine kleine Info, warum das

Form2 := TForm2.Create(Panel1); nicht reicht, sondern

Form2.Parent := Panel1; noch erforderlich ist, damit es klappt.

Der Parameter beim Create gibt den Owner an. Dadurch wird das Erzeugte Objekt automatisch zerstört, wenn der Owner zerstört wird.
Der Parent gibt an, relativ zu welchem Objekt ein anderes angezeigt wird.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
aschne1

Registriert seit: 18. Jul 2004
Ort: Davos
64 Beiträge
 
Delphi 2005 Professional
 
#7

Re: Formular in Panel einbetten

  Alt 31. Aug 2004, 22:25
Hallo Chris

Besten Dank für Deine Ausführungen. Ich blicke jedoch nicht ganz durch was Du damit meinst.

Zitat:
Der Parameter beim Create gibt den Owner an.
In diesem Fall ist der Owner Panel1, oder?

Zitat:
Dadurch wird das Erzeugte Objekt automatisch zerstört, wenn der Owner zerstört wird.
Das erzeugte Objekt Form2 wird also automatisch zerstört, aber wann passiert das mit dem Owner Panel1? Dies müsste ja vorher geschehen ? Und durch welches Kommando?

Bitte kläre mich kurz auf. Danke im Voraus für Deine Bemühungen.

Tschau

Armin
Armin
aschne1
  Mit Zitat antworten Zitat
Benutzerbild von Fossibaer58809
Fossibaer58809

Registriert seit: 20. Aug 2004
Ort: Lüdenscheid
50 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Formular in Panel einbetten

  Alt 31. Aug 2004, 22:38
Hallo zusammen,

durch das TForm2.Create(Panel1) wird Panel1 automatisch Owner von Form2.
siehe OH: TForm.Create(AOwner : TComponent)
Wenn Panel1 zerstört wird, dann wird auch automatisch auch Form2 zerstört weil ja Panel1 Owner von Form2 ist.

Gruß
Michael
Michael Küper
  Mit Zitat antworten Zitat
aschne1

Registriert seit: 18. Jul 2004
Ort: Davos
64 Beiträge
 
Delphi 2005 Professional
 
#9

Re: Formular in Panel einbetten

  Alt 2. Sep 2004, 00:24
Hallo Michael

Du hast Recht mit der Funktion des Owners! Nur ich zerstöre das Panel1 nicht mit Deinem Code. Weshalb muss also explizit per Parent-Anweisung ein Owner angegeben werden? Ich tue das ja schon mit Create! Wenn ich als Parameter Self (Form1) übergebe muss ich das ja auch nicht.
Ich denke es liegt daran, das intern was passiert. Aber was? Hast Du eine Erklärung?

Danke und Gruss

Armin
Armin
aschne1
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#10

Re: Formular in Panel einbetten

  Alt 2. Sep 2004, 00:26
Hi Armin!

Die Owner-Eigenschaft gibt indirekt an, wann das Form zerstört wird. (wie bereits oben erklärt)
Die Parent-Eigenschaft hingegen gibt an, auf welchem Control das Form sitzen soll. Du könntest also als Owner Form1 angeben, als Parent aber Panel1, und dein Form würde immer noch auf Panel1 sein. Nur wird es erst zerstört, sobald Form1 zerstört wird.
Ich hoffe das bringt etwas Klarheit in die Sache.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:39 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