Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Procedure in Procedure (https://www.delphipraxis.net/92411-procedure-procedure.html)

naudoc 19. Mai 2007 12:40


Procedure in Procedure
 
Hallo,

könnt ihr mir sagen, was hier
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then TForm1.Button1Click ;
end;
falsch ist?
Delphi-Quellcode:
[Fehler] Unit1.pas(713): Nicht genügend wirkliche Parameter
Danke!

alzaimar 19. Mai 2007 12:41

Re: Procedure in Procedure
 
Wie sieht denn die Parameterliste von Button1Click aus? Dein Aufruf muss genauso sein, d.h. für jeden formalen Parameter in der Deklaration musst Du einen entsprechenden Parameter beim Aufruf bereitstellen.

Jelly 19. Mai 2007 12:42

Re: Procedure in Procedure
 
Du kannst kein
Delphi-Quellcode:
TForm1.Button1Click ;
so aufrufen.

TForm1 ist die Klasse. Und um die Methoden daraus aufzurufen (und nichts anderes ist Button1Click), musst du über die Instanz gehen, die bei Dir wohl Form1 heisst.
Delphi-Quellcode:
Form1.Button1Click ;
Und weil Du dich wohl auf die aktuelle Instanz beziehst, ist das hier wohl die richtige Variante:
Delphi-Quellcode:
Button1Click (Button1) ;
Ansonsten müsste Button1Click als Class Function definiert sein, was aber keinen Sinn macht.

Verwechsle also nicht Klasse mit Instanz :wink:

EDIT: Und die richtigen Parameter beachten

naudoc 19. Mai 2007 12:44

Re: Procedure in Procedure
 
Da steht Sender: TObject, damit kann ich aber nicht wirklich was anfangen... Braucht man das, wenn ja, was ist denn das überhaupt?

Klasse...? Instanz...? :?: ...

Danke!

mfG

Edit: Es geht auf mit Form1... nicht und auch nur Button1CLick geht nicht...

Jelly 19. Mai 2007 12:50

Re: Procedure in Procedure
 
Zitat:

Zitat von naudoc
Da steht Sender: TObject, damit kann ich aber nicht wirklich was anfangen... Braucht man das, wenn ja, was ist denn das überhaupt?

Sender ist die auslösende Instanz deines Button Klicks. Du kannst theoretisch die gleiche Routine für ein OnClick eines anderen Buttons nutzen. Sender ist dann die Instanz des Buttons, der wirklich gedrückt wurde.

Zitat:

Zitat von naudoc
Klasse...? Instanz...? :?: ...

Das sind aber wirklich die Grundlagen von objektorientierter Programmierung. Vielleicht liest du dich mal bei unseren Kollegen von dsdt in die Grundlagen der Objektorientierung ein.

naudoc 20. Mai 2007 20:33

Re: Procedure in Procedure
 
Achso... Danke! Das mit Button1Click(Button1) war richtig...
Danke nochmal!

jfheins 21. Mai 2007 10:25

Re: Procedure in Procedure
 
Du kannst auch Button1.Click; verwenden, dann funktioniert es auch noch, wenn der Name des Eventhandlers geändert wird ;)

Luckie 21. Mai 2007 10:37

Re: Procedure in Procedure
 
Ist aber schlechter Programmierstil. Man sollte besser der Code, der in dem Klick-Ereignis der Schaltfläche ausgeführt wird, in eine eigene Routine auslagern.


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