Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Procedure als Event definieren? Wenn ja, wie? (https://www.delphipraxis.net/150151-procedure-als-event-definieren-wenn-ja-wie.html)

stho 8. Apr 2010 18:35


Procedure als Event definieren? Wenn ja, wie?
 
Hallo leute...

Ich möchte gerne eine einfache Procedure (enthalten in einer Unit) einem Event einer Komponente zuweisen...
Da mein projekt schon recht weit ist kann ich diese Procedure leider nicht einfach in irgend eine Klasse schmeißen und diese erzeugen...

Wie kann ich das machen?

Währe über Anregungen sehr dankbar
stho

mkinzler 8. Apr 2010 18:36

Re: Procedure als Event definieren? Wenn ja, wie?
 
Die Signatur der Methode muss passen. Welcher Klasse sie gehört ist egal

stho 8. Apr 2010 18:47

Re: Procedure als Event definieren? Wenn ja, wie?
 
Zitat:

Zitat von mkinzler
Die Signatur der Methode muss passen. Welcher Klasse sie gehört ist egal

die procedure gehört keiner klasse an :-(

SimonRap 8. Apr 2010 18:48

Re: Procedure als Event definieren? Wenn ja, wie?
 
@mkinzler:
Was genau meinst du mit Signatur?

omata 8. Apr 2010 18:49

Re: Procedure als Event definieren? Wenn ja, wie?
 
Delphi-Quellcode:
type
  TEvent1 = function(index:integer):boolean;
  TEvent2 = procedure(index:integer);

:
:

function EventHandler1(i:integer):boolean;
begin
end;

procedure EventHandler2(i:integer);
begin
end;

procedure StartEvent;
var Event1:TEvent1;
    Event2:TEvent2;
begin
  Event1:=EventHandler1;
  Event2:=EventHandler2;

  if Event1(1) then begin
  end;
  Event2(1);
end;

stho 8. Apr 2010 18:49

Re: Procedure als Event definieren? Wenn ja, wie?
 
Zitat:

Zitat von SimonRap
@mkinzler:
Was genau meinst du mit Signatur?

stimmt, das habe ich vergessen zu fragen...
Wie prüfe ich eine "Signatur" oder füge eine hinzu?


EDIT:
@omata
sorry, war net schnell genug. ist nett das du etwas hinzu bringst aber leider verstehe ich nicht wie mir das bei der zuweisung helfen soll :-(
Vielleicht bin ich eindach doof?

himitsu 8. Apr 2010 18:53

Re: Procedure als Event definieren? Wenn ja, wie?
 
Zitat:

Zitat von stho
die procedure gehört keiner klasse an :-(

Tja, entweder Prozedur/Funktion (außerhalb einer Klasse) oder Methode (innerhalb einer Klasse) ... es geht nur eines von Beidem.

Wenn das Ereignis einen Methodenzeiger will, dann mußt du auch eine Methode übergeben.

Signatur = Typen der Parameter und des Results und die Aufrufkonvention (ala stdcall)

Zitat:

Zitat von mkinzler
Welcher Klasse sie gehört ist egal

Man kann sogar noch weiter gehn...
Zu welchem Objekt sie gehört ist egal.


Code:
type
  // Deklaration eines Prozedur-Zeigers
  TEvent1 = [b]function[/b](index: [b]integer[/b]): [b]boolean[/b]; [b]stdcall[/b];

[b]function[/b] EventProc(i: [b]integer[/b]): [b]boolean[/b]; [b]stdcall[/b];
begin
end;



type
  // Deklaration eines Methoden-Zeigers
  TEvent1 = [b]procedure[/b](index: [b]integer[/b]) of [i]object[/i];

[b]procedure[/b] [i]TMyClass[/i].EventMethod(i: [b]integer[/b]);
begin
end;
Das Fette sind die Signaturen.

mkinzler 8. Apr 2010 18:54

Re: Procedure als Event definieren? Wenn ja, wie?
 
Unter Signatur versteht man den Typ der Rückgabe und die Anzahl und die Typen der Parameter

DeddyH 8. Apr 2010 18:55

Re: Procedure als Event definieren? Wenn ja, wie?
 
Mach doch einfach aus der Prozedur eine Methode des Formulars (ich gehe mal davon aus, dass Du ein Formular hast).

stho 8. Apr 2010 18:59

Re: Procedure als Event definieren? Wenn ja, wie?
 
häääääääääää??????
Der bahnhof in meinem kopf ist grad nochmal größer geworden... :wall:


Ich habe eine Procedure "Procedure BeforeInsert(Dataset : TDataset);"
Und ich habe das Objekt "Command" vom Typ "TASQLite3Query".

Ich möchte diese Procedure mit dem "Command.BeforeInsert" - event verbinden...


leider verstehe ich nichtmal ansatzweise was ihr mit methoden und dem ganzen zeug sagen wollt... :gruebel: sorry...

Nein, leider kein Formular... Das Objekt und die Procedure liegen einsam und alleine in einer eigenen Unit (Damit sie sich vielleicht mal näher kommen ^^)


EDIT:
So, jetzt muss ich erstmal lesen. hab zu lange mit dem schreiben gebraucht


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 Uhr.
Seite 1 von 4  1 23     Letzte »    

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