AGB  ·  Datenschutz  ·  Impressum  







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

Parent oder Nicht Parent

Ein Thema von DerMike · begonnen am 16. Jan 2007 · letzter Beitrag vom 16. Jan 2007
Antwort Antwort
DerMike

Registriert seit: 4. Jan 2007
21 Beiträge
 
#1

Parent oder Nicht Parent

  Alt 16. Jan 2007, 13:17
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:
        ModulForm := TfrmSTG.Create(frmMain);
        ModulForm.Parent := frmMain.pnlMainModul;
        ModulForm.Height := frmMain.pnlMainModul.Height;
        ModulForm.Width := frmMain.pnlMainModul.Width;
        ModulForm.Show;
Dann ermitteln ob Formular geöffnet wurde, und geöffnetes Formular schließen....
----------
lg Mike
  Mit Zitat antworten Zitat
Benutzerbild von chrisw
chrisw

Registriert seit: 11. Jan 2005
Ort: Schleswig
193 Beiträge
 
Delphi XE8 Professional
 
#2

Re: Parent oder Nicht Parent

  Alt 16. Jan 2007, 13:22
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 !
Christian Wahl
me, myself and I, die lustigen Drei !!
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#3

Re: Parent oder Nicht Parent

  Alt 16. Jan 2007, 13:30
Zitat von DerMike:
ModulForm.Parent := frmMain.pnlMainModul;
Bei diesem Aufruf geschieht folgendes:
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:
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();
greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
DerMike

Registriert seit: 4. Jan 2007
21 Beiträge
 
#4

Re: Parent oder Nicht Parent

  Alt 16. Jan 2007, 13:42
Danke, genau das habe ich gesucht ....


lg
Mike
----------
lg Mike
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Parent oder Nicht Parent

  Alt 16. Jan 2007, 13:53
Hallo Mike,

solange immer nur ein ChildForm existiert, würde ich mir dieses in einer Form-Variable der MainForm merken.

Delphi-Quellcode:
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;
Bei jeder neuerlichen Zuweisung wird das vorhergehende ChildForm zerstört, mit NIL kannst du das letzte ChildForm dann auch noch zerstören.

Vielleicht interessiert dich auch dieser thread: klick

Grüße vom marabu
  Mit Zitat antworten Zitat
DerMike

Registriert seit: 4. Jan 2007
21 Beiträge
 
#6

Re: Parent oder Nicht Parent

  Alt 16. Jan 2007, 14:04
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
----------
lg Mike
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:07 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