![]() |
Parent oder Nicht Parent
Hallo,
ich hoffe ich poste im richtigen Forum. Ich habe eine kleine Anwendung erstellt mit einem Panel. Dieses Panel ist Parent von einem Formular. Wenn ich jetzt auf einen anderen Menüpunkt klicke, möchte ich, dass ermittelt wird ob mein Panel bereits Parent von einem Formular ist. Wenn ja, dann möchte ich dieses Formular schließen. Ist soetwas möglich?? Also nochmal....
Delphi-Quellcode:
Dann ermitteln ob Formular geöffnet wurde, und geöffnetes Formular schließen....
ModulForm := TfrmSTG.Create(frmMain);
ModulForm.Parent := frmMain.pnlMainModul; ModulForm.Height := frmMain.pnlMainModul.Height; ModulForm.Width := frmMain.pnlMainModul.Width; ModulForm.Show; |
Re: Parent oder Nicht Parent
Ich denke so in etwa (ungetestet)!
Delphi-Quellcode:
var i : Integer;
begin for i := 0 to frmMain.ComponentCount -1 do if (frmMain.Components[i] is TForm) and ((frmMain.Components[i] as TForm).Parent = pnlMainModul)) then TForm(frmMain.Components[i]).Close; end; Besser wäre es aber eine Klasse von TPanel abzuleiten, die eine Property ClientForm hat ! |
Re: Parent oder Nicht Parent
Zitat:
Zum einen wird ModulForm.Parent auf frmMain gesetzt, und gleichzeitig wird ModulForm in die Liste der Controls ein gefuegt, die Kinder von frmMain sind. Diese Liste ist mit Controls zugaenglich. D.h. wenn du wissen willst, ob ein Formular Kind eines anderen ist, so guckst du in der Liste des Wahrscheinlichen Vaters nach, ob das Formular in seiner Sammlung von Kindern steckt. Auf Delphisch:
Delphi-Quellcode:
greetz
for i := 0 to frmMain.ControlCount - 1 do
if frmMain.Controls[i] is TForm then //Dieser Fall trifft ein, wenn ein Kind vom frmMain ein Formular ist, sprich von TForm abgeleitet ist (frmMain.Controls[i] as TForm).Close(); Mike |
Re: Parent oder Nicht Parent
Danke, genau das habe ich gesucht ....
lg Mike |
Re: Parent oder Nicht Parent
Hallo Mike,
solange immer nur ein ChildForm existiert, würde ich mir dieses in einer Form-Variable der MainForm merken.
Delphi-Quellcode:
Bei jeder neuerlichen Zuweisung wird das vorhergehende ChildForm zerstört, mit NIL kannst du das letzte ChildForm dann auch noch zerstören.
type
TMainForm = class(TForm) private FChildForm: TForm; procedure SetChildForm(childForm: TForm); published ChildForm: TForm read FChildForm write SetChildForm; end; procedure TMainForm.SetChildForm(childForm: TForm); begin FChildForm.Free; FChildForm := childForm; end; Vielleicht interessiert dich auch dieser thread: ![]() Grüße vom marabu |
Re: Parent oder Nicht Parent
Hallo,
ich danke dir marabu. Diese Lösung gefällt mir sogar sehr gut. So kann ich sicherstellen, dass ich mir immer das aktuelle Formular merke. Ich habe das jetzt so eingebaut und es funktioniert wunderbar. lg Mike |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz