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/)
-   -   Delphi Aus Frame heraus auf übergeordnete (haupt)Form zugreifen (https://www.delphipraxis.net/102605-aus-frame-heraus-auf-uebergeordnete-haupt-form-zugreifen.html)

TRBB 31. Okt 2007 21:14


Aus Frame heraus auf übergeordnete (haupt)Form zugreifen
 
Wunderschönen guten Abend,

gibt es eine Möglichkeit aus einem Frame heraus auf die übergeordnete Form zuzugreifen?

Wie zum Beispiel in Javascript über:
parent.


Vielen Dank im Voraus.
TRBB


EDIT (Lösung):
Delphi-Quellcode:
ValidParentForm(self).caption := 'Übergeordnete Form wurde neu beschriftet';

TonyR 31. Okt 2007 21:17

Re: Aus Frame heraus auf übergeordnete (haupt)Form zugreifen
 
:dp: Wilkommen in der DP!!!

Was GENAU möchtest du tun bzw. erreichen?

mkinzler 31. Okt 2007 21:21

Re: Aus Frame heraus auf übergeordnete (haupt)Form zugreifen
 
Interiere über .Parent bis Klasse = TForm ist.

TRBB 31. Okt 2007 21:27

Re: Aus Frame heraus auf übergeordnete (haupt)Form zugreifen
 
Zitat:

Zitat von TonyR
:dp: Wilkommen in der DP!!!

Was GENAU möchtest du tun bzw. erreichen?

Vielen Dank,
Ich habe TForm1. Darin befindet sich ein Frame.
Aus diesem Frame heraus möchte ich auf TForm1 zugreifen.


Zitat:

Zitat von mkinzler
Interiere über .Parent bis Klasse = TForm ist.

Tut mir leid wenn ich etwas beriffsstuzig bin.
Interieren habe ich weder bei Google noch bei Wikipedia gefunden und ich habs noch nie gehört^^
Kannst du mir vielleicht einen kurzen Beispiel Code geben?

Schonmal vielen Dank für die schnelle Antworten.

mkinzler 31. Okt 2007 22:46

Re: Aus Frame heraus auf übergeordnete (haupt)Form zugreifen
 
Delphi-Quellcode:
var
    Parent: TComponent;
...
    Parent := Frame.Parent;
    while not (Parent is TForm) do
        Parent := Parent.Parent;

TRBB 1. Nov 2007 08:47

Re: Aus Frame heraus auf übergeordnete (haupt)Form zugreifen
 
Vielen Dank schon mal.
Leider funktioniert es nicht ganz :(


Der Compiler gibt einige Fehler aus:
Delphi-Quellcode:
procedure TFrameForm.Button1Click(Sender: TObject);
var parentForm: TComponent;
begin
  parentForm := FrameForm.Parent;
  while not (parentForm is TMainForm) do
    parentForm := parentForm.Parent; //Fehler: Undeclared identifier: 'Parent'
  parentForm.caption := 'test erfolgreich'; //Fehler: Undeclared identifier: 'Caption'
end;
MainForm: Hauptform die beim PRGM-Start angeziegt wird und die Frames enthält
FrameForm: eines der frames (eigebettes Frame/iframe in HTML - weiss nicht obs hier verschiedene gibt ich schreibs lieber mal dazu)

Schöne Grüße
TRBB

mkinzler 1. Nov 2007 09:04

Re: Aus Frame heraus auf übergeordnete (haupt)Form zugreifen
 
Delphi-Quellcode:
procedure TFrameForm.Button1Click(Sender: TObject);
var parentForm: TControl;
begin
  parentForm := FrameForm.Parent;
  while not (parentForm is TForm) do
    parentForm := parentForm.Parent;
  (parentForm as TForm).Caption := 'test erfolgreich';
end;
[Edit: is TMainForm]

DP-Maintenance 1. Nov 2007 09:15

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Die Delphi-IDE" nach "VCL / WinForms / Controls" verschoben.
Es geht nicht um die IDE an sich.

Deep-Sea 1. Nov 2007 09:19

Re: Aus Frame heraus auf übergeordnete (haupt)Form zugreifen
 
Wie wäre es mit der Funktion "ValidParentForm" oder "GetParentForm"? :P

TRBB 1. Nov 2007 09:47

Re: Aus Frame heraus auf übergeordnete (haupt)Form zugreifen
 
Delphi-Quellcode:
var
  parentForm: TComponent;
begin
  parentForm := FrameForm.Parent;
  while not (parentForm is TMainForm) do
    parentForm := (parentForm as TForm).Parent;
  (parentForm as TForm).caption := 'test erfolgreich';
und auch
Delphi-Quellcode:
ValidParentForm(FrameForm).caption := 'test erfolgreich';
Funktionieren beide nicht.
Das Problem ist das VerleihForm durch Delphi beim erstellen eines Frames nicht automatisch erstellt wird.
Bei normalen Forms findet man oben im interface Teil
Delphi-Quellcode:
var
  MeinForm: TMeinForm;
Bei Frames aber nicht.
Ich habe nun einfach beim Frame
Delphi-Quellcode:
var
  FrameForm: TFrameForm;
eingefügt aber das scheint nicht ganz richtig zu sein.

Beide Versionen produzieren Fehler.

mkinzler 1. Nov 2007 09:50

Re: Aus Frame heraus auf übergeordnete (haupt)Form zugreifen
 
Was für Fehler?

Deep-Sea 1. Nov 2007 09:52

Re: Aus Frame heraus auf übergeordnete (haupt)Form zugreifen
 
Zitat:

Zitat von TRBB
Das Problem ist das VerleihForm durch Delphi beim erstellen eines Frames nicht automatisch erstellt wird.
Bei normalen Forms findet man oben im interface Teil
Delphi-Quellcode:
var
  MeinForm: TMeinForm;
Bei Frames aber nicht.
Ich habe nun einfach beim Frame
Delphi-Quellcode:
var
  FrameForm: TFrameForm;
eingefügt aber das scheint nicht ganz richtig zu sein.

Natürlich klappt das nicht. FrameForm ist einfach nur eine Variable, die keinen Wert hat, wenn du ihr keinen zuweißt.
Verwende, wenn du von einer Instanz eine Referenz brauchst, innerhalb der Instanz "Self" ...

mkinzler 1. Nov 2007 09:57

Re: Aus Frame heraus auf übergeordnete (haupt)Form zugreifen
 
Außerdem solltest du den Code, den man hier postet nicht eigenmächtig abändern:

Delphi-Quellcode:
is TMainform
ist was anderes wie
Delphi-Quellcode:
is TForm
( hab ich leider vorhin übersehen)
parentForm hatte ich zu TControl geändert
Zitat:

parentForm := (parentForm as TForm).Parent;
wird fehlschlagen wenn es sich nicht um eine Form handelt (was eigentlich immer der Fall ist, weil der Code ja nur ausgeführt wird, wenn das der Fall ist!)

TRBB 1. Nov 2007 10:05

Re: Aus Frame heraus auf übergeordnete (haupt)Form zugreifen
 
Tausend Dank an euch beide!!!

Beide Versionen Funktionieren nun!

Delphi-Quellcode:
  var
  parentForm: TControl;
begin
  parentForm := self.Parent;
  while not (parentForm is TForm) do
    parentForm := parentForm.Parent;
  (parentForm as TForm).caption := 'test erfolgreich';
end;
und

Delphi-Quellcode:
ValidParentForm(self).caption := 'test erfolgreich';

Also nochmal Danke für eure Hilfsbereitschaft!

Viele Grüße
TRBB


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