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 Erstellte Form onClose zu weisen ??? (https://www.delphipraxis.net/89078-erstellte-form-onclose-zu-weisen.html)

Piro 25. Mär 2007 21:09


Erstellte Form onClose zu weisen ???
 
Guten Abend,

ich versuche gerade, einer zur Laufzeit erstellten Form das onClose Event zu zuweisen. Es kommt aber immer ein Fehler mit dem ich nichts anfangen kann.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure Button2Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 Form: TForm;
begin
 Form:=TForm.Create(Self);
 with Form do
 begin
   Left:=100;
   Top:=100;
   OnClose:=Button2Click;
   ShowModal;
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 ShowMessage('Die neue Form wird geschlossen.');
end;

end.
Fehler
Zitat:

[Pascal Fehler] Unit1.pas(36): E2009 Inkompatible Typen: 'Liste der Parameter ist unterschiedlich'
Weiß einer warum?

SirThornberry 25. Mär 2007 21:11

Re: Erstellte Form onClose zu weisen ???
 
Die Meldung sag es doch schon. Die OnClose-Methode muss andere Parameter als deine OnClick-Methode haben.

Piro 25. Mär 2007 21:18

Re: Erstellte Form onClose zu weisen ???
 
Das war mir bewußt aber welche brauche ich?

inherited 25. Mär 2007 21:38

Re: Erstellte Form onClose zu weisen ???
 
Schau dir doch einfach die Parameter im Prozedur-Kopf deiner Hauptform an, dann weißt du es.

Piro 25. Mär 2007 22:43

Re: Erstellte Form onClose zu weisen ???
 
habe habe jetz mit "caFree" herumprobiert. Ich schaffe es nicht. Es wäre nett wenn mir einer mal ein Beispiel geben kann. Wäre nett.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 Form: TForm;
begin
 Form:=TForm.Create(Self);
 with Form do
 begin
   Left:=100;
   Top:=100;
   OnClose:=CloseForm(caFree);
   ShowModal;
 end;
end;

procedure TForm1.CloseForm(Sender: TObject);
begin
 ShowMessage('Die neue Form wird geschlossen.');
end;
Gruß, Sven

Hawkeye219 25. Mär 2007 22:53

Re: Erstellte Form onClose zu weisen ???
 
Hallo Sven,

der Prototyp der Behandlungsroutine für das OnClose-Ereignis wird von Borland fest vorgegeben, den kannst du nicht ändern:

Delphi-Quellcode:
procedure (Sender: TObject; var Action: TCloseAction) of object;
Deine Methode CloseForm muß die gleiche Signatur besitzen:

Delphi-Quellcode:
procedure TForm1.CloseForm (Sender: TObject; var Action: TCloseAction);
begin
  ShowMessage('Die neue Form wird geschlossen.');
end;
Die Zuweisung sieht dann so aus:

Delphi-Quellcode:
with Form do
begin
  ...
  OnClose := CloseForm;
  ...
end;
Gruß Hawkeye

Piro 25. Mär 2007 23:07

Re: Erstellte Form onClose zu weisen ???
 
danke, war mir alles nicht bewußt.

Nochmals Danke.


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