![]() |
procedure aufrufen!
Hi Leute, ich hab da nen problem,...
Ich hab mir ne eigene Funktion (Aufruf) erstellt und deklariert, nun will ich sie ganz einfach bei einem klick auf nen Button aufrufen! und es klappt net! bitte helft mir!
Delphi-Quellcode:
Danke
type
TForm1 = class(TForm) procedure Aufruf(Sender: TObject) private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ButtonClick(Sender: TObject); begin Aufruf; end; procedure TForm1.Aufruf(Sender: TObject); begin \\source end; end. |
Re: procedure aufrufen!
unter private oder public gehört noch:
Delphi-Quellcode:
[Edit]Sry, müsste anders (also ganz oben, wie du's hast) auch gehen. :oops: [/Edit]
procedure Aufruf(Sender: TObject);
|
Re: procedure aufrufen!
//vergiss es... war schmarrn...
|
Re: procedure aufrufen!
Moin Fredel,
sieht soweit richtig aus. Könntest Du vielleicht mal das "klappt net" näher spezifizieren? |
Re: procedure aufrufen!
Also bei mir ist die Reihenfolge egal... :gruebel:
|
Re: procedure aufrufen!
du musst schreiben:
Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
begin Aufruf(Sender); end; |
Re: procedure aufrufen!
1. Die Function/Procedure unter private oder public packen (Muss dann mit TForm1.Aufruf aufgerufen werden) (Sie "gehört" dann praktisch zu der Form1. So kannst du die Proceduren auch aus anderen Units aufrufen.
oder unter private public packen dann wird sie ohne "TForm1." aufgerufen. 2. Semikolon hinter Deklaration 3. Kommentare mit // nicht mit \\ 4. Deine Procedure verlangt Parameter. Sender ist die Komponenten die das ganze aufruft. Also z.b.
Delphi-Quellcode:
Muss aber nicht sein, du kannst das auch so schreiben:
Aufruf(Button1);
Delphi-Quellcode:
So klappt es:
function test;
.... function test; begin end;
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 declarations } public { Public declarations } procedure Aufruf(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Aufruf(Button1); end; procedure TForm1.Aufruf(Sender: TObject); begin ShowMessage('Klappt'); end; end. |
Re: procedure aufrufen!
hast recht matze.
@fredel007: poste immer deine fehlermeldun(en) dazu!! sonst ists rätselraten... gruss, ims |
Re: procedure aufrufen!
Delphi-Quellcode:
;) Gruß
procedure Aufruf(Sender: TObject)
private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ButtonClick(Sender: TObject); begin Aufruf(Sender); // <--- den Parameter mit übergeben ;) end; procedure TForm1.Aufruf(Sender: TObject); begin \\source end; end. Edit: Mist schon wieder zu langsam :mrgreen: |
Re: procedure aufrufen!
Also bei sowas braucht es eigentlich keine Fehlermeldung, das sollte man auch so erkennen
|
Re: procedure aufrufen!
ja, hier ist es so... aber das ist längst nicht immer so... am besten gleich angewöhnen.
gruss, ims |
Re: procedure aufrufen!
Verdammt. Wo ich angefangen hab meine erste Antwort zu tippen waren da noch keine anderen. Und nach dem abschicken waren schon 5 antworten da..bin echt zu langsam geworden
|
Re: procedure aufrufen!
Vielen Dank,....
jetzt klappts! schöne tage noch! |
Re: procedure aufrufen!
poste nochmal deinen source
haste es mal mit meinem probiert? |
Re: procedure aufrufen!
@General2003:
Tyrael Y. war noch langsamer :mrgreen: Du hast aber eine sehr gute Erläuterung dazugegeben. :thumb: |
Re: procedure aufrufen!
Hier mal ein beispiel, bei mir geht das:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Farbe(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Farbe(Sender); end; procedure TForm1.Farbe(Sender: TObject); begin Color:=clNavy; end; end. |
Re: procedure aufrufen!
Zitat:
|
Re: procedure aufrufen!
Zitat:
Delphi-Quellcode:
oder so:
private
{ Private-Deklarationen } procedure Zeichne;
Delphi-Quellcode:
und die Procedure so aussieht:
public
{ Public-Deklarationen } procedure Zeichne;
Delphi-Quellcode:
dann erfolgt der Aufruf mit:
procedure Zeichne;
begin end;
Delphi-Quellcode:
sieht die Procedure jedoch so aus:
TForm1.Zeichne;
Delphi-Quellcode:
dann erfolgt der Aufruf mit:
procedure TForm1.Zeichne;
begin end;
Delphi-Quellcode:
Äh, kappiert? :mrgreen:
Zeichne;
[Edit]Falls du das so gemeint hast, dann stimmt's ;) Der Rest müsste auch stimmen![/Edit] |
Re: procedure aufrufen!
Moin Sebastian,
Zitat:
Aus anderen Units heraus aufgerufen werden kann sie aber nicht, wenn sie unter private steht. Das geht nur innerhalb der Unit in der sie deklariert wurde. Die Angabe von TForm ist, unabhängig davon, wo die Deklaration steht, bei der Implementierung immer erforderlich, und die Angabe von Form1 immer ausserhalb der Methoden. |
Re: procedure aufrufen!
Wenn ich das so mache:
Delphi-Quellcode:
Dann sagt der
public
{ Public declarations } procedure Aufruf; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin TForm1.Aufruf; end; procedure Aufruf; begin ShowMessage('Klappt'); end;
Delphi-Quellcode:
Habs bis jetzt auch noch nie so gemacht. nur andersrum
[Fehler] Unit1.pas(33): Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt
[Fehler] Unit1.pas(20): Ungenügende Forward- oder External-Deklaration: 'TForm1.Aufruf'
Delphi-Quellcode:
und aufruf mit
procedure TForm1.Aufruf;
begin // Source end;
Delphi-Quellcode:
Ist das ein Fehler von dir oder von mir? Wenn von mir: Wo liegt der Fehler und der Unterschied zwischen den beiden Möglichkeiten?
begin
Aufruf; end; |
Re: procedure aufrufen!
Du hast Recht, es muss:
Delphi-Quellcode:
heißen.
procedure TForm1.Aufruf;
bei
Delphi-Quellcode:
"kennt" deine Procedure das Formular, anders nicht
procedure TForm1.Aufruf;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 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