Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dynamisch erzeugter Frame, auf funktion zugreifen (https://www.delphipraxis.net/106626-dynamisch-erzeugter-frame-auf-funktion-zugreifen.html)

Salomon 14. Jan 2008 09:02


Dynamisch erzeugter Frame, auf funktion zugreifen
 
Hi,
wie kann ich Funktionen dynamisch generierter Frames aufrufen? So erstelle ich z.B. ein Frame auf der Main Form:

Delphi-Quellcode:
var
OverviewFrame : TOverviewFrame;
begin

OverviewFrame := TOverviewFrame.Create(FRM_Main);
OverviewFrame .Parent := FramePanel;
OverviewFrame .Align := alClient;
Wie kann ich nun z.B. von Form2 auf eine Funktion in "OverviewFrame" aufrufen?

Folgendes aus Form2 geht nicht, da FRM_Main den dynamisch erstellten OverviewFrame nicht kennt:
FRM_Main.OverviewFrame.MeineProcedure;

Thanx
Marcus

hoika 14. Jan 2008 09:25

Re: Dynamisch erzeugter Frame, auf funktion zugreifen
 
Hallo,

definiere die Frame-Variable nicht lokal,
sondern als public innerhalb des Forms (Form1)

Besser wäre allerdings eine private-Variable und
ein property oder zumindestens eine Funktion,
die die private-Variable zurückgibt.
Dort kannst du gleich eine Assert (FrameVar<>NIL) reinpacken.

Zurgiff erfolgt von Form2 über Form1.GetFrame (private) oder Form1.FrameVar.


Heiko
PS: Die Forms heissen hoffentlich nicht Form1 und Form2 ...

Salomon 14. Jan 2008 09:46

Re: Dynamisch erzeugter Frame, auf funktion zugreifen
 
Hallo Heiko,
die Formen heißen nicht Formxy ;) Ich dachte für das Beispiel ist es anschaulicher wenn ich die IDE Vorgaben verwende...

Dein Tipp hat super funktioniert. Das ganze public zu definieren macht natürlich Sinn :)

hoika 14. Jan 2008 12:10

Re: Dynamisch erzeugter Frame, auf funktion zugreifen
 
Hallo,

ich würde trotzdem eine private-Variable benutzen
und eine public-Methode schreiben,
die dann den Frame zurückgibt.
Somit findet man schneller NIL-Zugriffe (Frame noch nicht erzeugt)


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 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