Einzelnen Beitrag anzeigen

Benutzerbild von pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#1

Event Prozedur zwischenspeichern und aufrufen

  Alt 17. Dez 2012, 12:02
Delphi-Version: XE2
Hallo,

ich möchte die Prozedur, die einem Event zuegwiesen wurde zwischenspeichern, selbst neu zuweisen und in meiner Eventprozedur die zwischengespeicherte Prozedur aufrufen.

Ich habe also folgendes gemacht(Szenario TPaintBox und OnMouseDown Event):

Beim zuweisen der PaintBox in einer eigenen Klasse wird überprüft, ob der PaintBox bereits eine Prozedur zugewisen wurde.

Delphi-Quellcode:
  TOnMouseDown = procedure (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: integer);

...

private
    FInitialOnMouseDown: TOnMouseDown;

...

    if Assigned(FPaintBox.OnMouseDown) then
      FInitialOnMouseDown := @FPaintBox.OnMouseDown;
    FPaintBox.OnMouseDown := OnPaintBoxMouseDown;

...

procedure TOwnClass.OnPaintBoxMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X,Y: integer);
begin
  if Assigned(FInitialOnMouseDown) then
    FInitialOnMouseDown(Sender, Button, Shift, X,Y);
end;
Dies scheint auch gut zu klappen, bis auf das teilweise die Parameter die übergeben werden beim Aufruf nicht mehr übereinstimmen.

Setzte ich also nen Breakpoint in der Zeile in der die alte Event Prozedur aufgerufen wird, werden die richtigen Werte angezeigt. Springt man dann jedoch in diese Prozedur rein, so sind andere Werte für Button und Shift vorhanden! Sender,X und Y stimmen überein.

in Button wird mbLeft(0) übergeben und es kommt eine 8 an.

Wieso ist es so?

Gruß
pustekuchen
Delphi programming is awesome.
  Mit Zitat antworten Zitat