![]() |
Delphi-Version: XE2
Event Prozedur zwischenspeichern und aufrufen
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:
Dies scheint auch gut zu klappen, bis auf das teilweise die Parameter die übergeben werden beim Aufruf nicht mehr übereinstimmen.
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; 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 |
AW: Event Prozedur zwischenspeichern und aufrufen
Erstens gibt es schon einen Typ für den Event (man beachte in desse Deklaration das of object) und zweitens lässt du bei der Zuweisung dann besser das @ weg:
Delphi-Quellcode:
private
FInitialOnMouseDown: TMouseEvent; ... if Assigned(FPaintBox.OnMouseDown) then FInitialOnMouseDown := FPaintBox.OnMouseDown; FPaintBox.OnMouseDown := OnPaintBoxMouseDown; |
AW: Event Prozedur zwischenspeichern und aufrufen
Ah, Vielen Dank so klappt es natürlich.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 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 by Thomas Breitkreuz