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 Wie kann ich auf Proceduren eines MDIChild-Forms zugreifen? (https://www.delphipraxis.net/97738-wie-kann-ich-auf-proceduren-eines-mdichild-forms-zugreifen.html)

NetSonic 15. Aug 2007 10:27


Wie kann ich auf Proceduren eines MDIChild-Forms zugreifen?
 
Hallo zusammen.

Ich muss / will von einer MDI-Child-Form auf eine globale Procedure eines anderen MDI-Childs zugreifen. Wie mach ich das am besten.
Ein beliebiges MDI-Child schließe ich von der MDI-Form so...

Delphi-Quellcode:
procedure TfrmMain.CloseMDIChild(strChildName: String);
var
  i: Integer;
begin
     for i := 0 to frmMain.MDIChildCount - 1 do
     begin
          if (frmMain.MDIChildren[i].Name = strChildName) then
          begin
               frmMain.MDIChildren[i].Close;
               break;
          end;
     end;
end;
kann man das als Grundlage nehmen? Wenn ich es folgermaßen aufbaue...

Delphi-Quellcode:
procedure TfrmMain.MDIChildRunProcedure(strChildName: String);
var
  i: Integer;
begin
     for i := 0 to frmMain.MDIChildCount - 1 do
     begin
          if (frmMain.MDIChildren[i].Name = strChildName) then
          begin
               frmMain.MDIChildren[i].btnCancelProcedure(Self);
               break;
          end;
     end;
end;
kennt er natürlich diesen aufruf von "btnCancelProcedure" nicht, da das MDI-Child noch nicht erzeugt wurde...

wie kann man das am besten bewerkstelligen?

MfG
NetSonic

Cappuccino 15. Aug 2007 10:50

Re: Wie kann ich auf Proceduren eines MDIChild-Forms zugreif
 
Hi,
ob das Objekt existiert kannst du immer abfragen mit

if Assigned(frmMain.MDIChildren[i])
then ..
else exit ..

Wenn ein Objekt / Form gelöscht wird, musst du dann präventiv auch die Variable auf nil setzen,
also nach dem Close dann
frmMain.MDIChildren[i] := nil setzen, um die Abfrage von oben wieder verwenden zu können.

Gruß
Tom

NetSonic 15. Aug 2007 11:15

Re: Wie kann ich auf Proceduren eines MDIChild-Forms zugreif
 
Das ist ja soweit auch in ordnung...

aber im Quellcode kennt er frmMain.MDIChildren[i].btnCancelProcedure(Self); nicht, weil das Child-Formular nocht nicht existiert und erst zur Laufzeit erzeugt wird. Deswegen ich kann nicht compilieren. Ich möchte ja die dem MDI-Form nicht bekannte Procedure vom MDI-Child aufrufen...

bigg 15. Aug 2007 11:38

Re: Wie kann ich auf Proceduren eines MDIChild-Forms zugreif
 
Das was du suchst nennt sich TypeCasting. Um auf die Methoden zuzugreifen, musst du den Klassennamen voranstellen und einklammern.

Beispiel: TMDiChild(MainForm.MDiChildren[i]).Methode();

NetSonic 16. Aug 2007 07:02

Re: Wie kann ich auf Proceduren eines MDIChild-Forms zugreif
 
Wunderbar! Mit TypeCasting funktioniert das ganze so, wie ich es haben wollte.
Danke für den Tip... :thumb:


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