Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit Procedure aus Unit (https://www.delphipraxis.net/24102-problem-mit-procedure-aus-unit.html)

citybreaker 15. Jun 2004 13:48


Problem mit Procedure aus Unit
 
Hallo,
ich hab neben der Unit1 (standart) noch eine weitere Unit
angelegt, inder ich eine procedure habe mit der ein MDIChild
erzeugt wird. Alerdings kann ich dem MdiChild keine OnClose
procedure geben. Habe folgenden Code.

Delphi-Quellcode:
unit unit2;

interface

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

  procedure NeueForm;
  procedure MDIChildClose(Sender: TObject; var Action: TCloseAction);

var
 Form: TForm;
 Nummer: Integer = 0;


implementation
uses unit1;

procedure NeueForm;
begin
  Inc(Nummer);

  Form := TForm.Create(MainFrm);
  with Form do begin
    Caption := 'Dokument' + IntToStr(Nummer);
    FormStyle := fsMDIChild;
    Height := 450;
    Left := 8;
    Name :='Dokument' + IntToStr(Nummer);
    Top := 8;
    Width := 450;
    OnClose := MDIChildClose;
  end;
end;
procedure MDIChildClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;
Nun kommt alerdings immer eine Fehlermeldung. :cry:
Zitat:

Inkompatible Typen: Methodenzeiger und reguläre procedure
Weiß net wie ich das andersmachen soll und was ich anders machen
soll.

Phoenix 15. Jun 2004 13:55

Re: Problem mit Procedure aus Unit
 
MDIChildClose muss eine Methode eines Objektes sein und keine 'objektlose' Prozedur.

Steve 15. Jun 2004 13:56

Re: Problem mit Procedure aus Unit
 
das is ne "procedure of object" sozusagen, d.h. du darfst keine "normale" proc. nehmen.. sprich TMDIForm1.MDICloseProcedure statt nur MDICloseProcedure...

kann mich nich besser ausdrücken sorry :stupid:
[edit]Phoenix kann sich da viel gewählter und präziser artikulieren :mrgreen: [/edit]

Gruß
Stephan

citybreaker 15. Jun 2004 14:03

Re: Problem mit Procedure aus Unit
 
Also geht das nicht einfach so in ner Unit ohne Form?!

Steve 15. Jun 2004 14:05

Re: Problem mit Procedure aus Unit
 
Delphi-Quellcode:
interface

{...}

type
  TMyForm = CLASS(TForm);
  PRIVATE
    procedure MDIChildClose(Sender: TObject; var Action: TCloseAction);
  END;

  procedure NeueForm;

var
 Nummer: Integer = 0;


implementation
uses unit1;

var
 Form: TMyForm;

procedure NeueForm;
begin
  Inc(Nummer);

  Form := TMyForm.Create(MainFrm);
  with Form do begin
    {...}
    OnClose := MDIChildClose;
  end;
end;

procedure TMyForm.MDIChildClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;
So sollte es hinhauen [nicht getestet]

Gruß
Stephan

[edit] Code bissl gekürzt[/edit]

citybreaker 15. Jun 2004 14:18

Re: Problem mit Procedure aus Unit
 
Ok, also soweit klappt das schonmal. Aber wenn ich ne neue Form machen will
(auf nen Button klicke). Stützt das programm ab und es wird folgende Zeile makiert.

Delphi-Quellcode:
Form := TMyForm.Create(MainFrm);
Zudem kommt auch noch nen Fehler.
Zitat:

Im Projekt Projekt1.exe ist eine Exception der Klasse ERest not found
aufgetreten. Meldung: 'Resource in TMyForm nicht gefunden'.
Prozeß wurde angehalten weiter mit ...

Steve 15. Jun 2004 14:24

Re: Problem mit Procedure aus Unit
 
Delphi-Quellcode:
type
  TMyForm = CLASS(TForm) // <<-- Da war fälschlicheriwese ein Seminkolon
  PRIVATE
    procedure MDIChildClose(Sender: TObject; var Action: TCloseAction);
  END;

  procedure NeueForm;

var
  Nummer: Integer = 0;

implementation
uses
  unit1;
var
  Form: TMyForm;

procedure NeueForm;
begin
  Inc(Nummer);
  Form := TMyForm.CreateNew(MainFrm); // <<-- CreteNew statt Create
  {..}
end;

procedure TMyForm.MDIChildClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;
end.
Bei mir funzt das so nu :)

Stephan

edit: gekürzt

citybreaker 15. Jun 2004 14:26

Re: Problem mit Procedure aus Unit
 
CreateNew gibts bei mir gar nicht.
Ich weiß net wiso, aber es klappt jetzt irgendwie mit "Create".
Hab die Codezeile neu hingeschrieben und jetzt klappt es. *lol*

Steve 15. Jun 2004 14:33

Re: Problem mit Procedure aus Unit
 
Das verwirrt mich nu :shock:
Hmz naja wenns nu geht :gruebel: dann ists ja gut :mrgreen:

Stephan


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