Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Form an Funktion übergeben (https://www.delphipraxis.net/6933-form-funktion-uebergeben.html)

cYaONE 27. Jul 2003 19:54


Form an Funktion übergeben
 
Servus!

Wisst ihr zufällig, wie man ein Form als Parameter an eine Prozedur weitergibt?

So gehts nicht:

Delphi-Quellcode:
procedure Test(Form: TForm);
begin

end;
weil wenn ich ein Form erstelle, wird es von TForm abgeleitet und ist somit nichtmehr von diesem Typ :(

Was kann man da machen?

Danke schonmal!

Christian Seehase 27. Jul 2003 21:47

Re: Form an Funktion übergeben
 
Moin cYaONE,

Zitat:

Zitat von cYaONE
weil wenn ich ein Form erstelle, wird es von TForm abgeleitet und ist somit nichtmehr von diesem Typ

Wenn TForm1 von TForm abgeleitet ist, enthält TForm1 alle Eigenschaften und Methoden von TForm, und genau deshalb, kannst Du es genau so machen, wie von Dir beschrieben.
Du kannst nur die in, z.B., TForm1 neu hinzugekommenen Eigenschaften und Methoden nicht direkt ansprechen. Dafür müsstest Du als Typ für den Parameter halt TForm1 angeben.

cYaONE 27. Jul 2003 22:53

Re: Form an Funktion übergeben
 
Das Problem ist, das ich zu dieser Zeit nicht weiß, von welchem Typ das Formular ist :(

Christian Seehase 27. Jul 2003 23:12

Re: Form an Funktion übergeben
 
Moin cYaONE,

welche Typen möglich sind ist Dir doch bekannt, oder?
Dann könntest Du in der Prozedur den Typ abfragen, falls Du die bestimmten Bestandteile eines abgeleiteten Forms brauchst, oder Du gibst Dich mit den Möglichkeiten der Basisklasse zufrieden.

Nur mal so als Beispiel und ungetestet.

Delphi-Quellcode:
var
  f1 : TForm1;
  f2 : TForm2;
//...

begin
  f1 := nil;
  f2 := nil;
  //...
  if Form is TForm1 then begin
    f1 := Form as TForm1;
  end;
  //...
  if f1 <> nil then begin
    f1.Button1.Enabled := true;
  end;
end;

Rumpi 26. Aug 2003 21:49

Re: Form an Funktion übergeben
 
Ich würds so machen

Delphi-Quellcode:

// TForm2 Unit

procedure TForm2.CallForm1;
begin
  if Assigned( Form1 ) ten
    Form1.Test( Self );
end;


// TForm1 Unit

procedure TForm1.Test(Sender: TObject);
begin
  if Assigned( Sender ) and ( Sender is TForm2 ) then
    with TForm2( Sender ) do
    begin
      ...

    end;
end;
mfg Rumpi

[edit=Daniel B]BB-Code eingeschaltet. Mfg, Daniel B[/edit]


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