Вам необходимо создать класс-наследник TDBGrid и перекрыть процедуру MouseDown. Вот код, который реально работает у меня:
TMyDBGrid = class(TDBGrid)procedure MouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: Integer); override;end; procedure TMyDBGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin inherited MouseDown(Button, Shift, X, Y); { Здесь делайте что хотите, можете погудеть в системный рожок }MessageBeep(mb_Ok);end; --------- покоцано -------------- unit MyDBGrid; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,Forms, Dialogs, Grids, DBGrids; type TMyDBGrid = class(TDBGrid)private{ Private declarations }protected{ Protected declarations }procedure MouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: Integer); override;public{ Public declarations }published{ Published declarations }property OnMouseDown;end; procedure Register; implementation procedure TMyDBGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);var FOnMouseDown: TMouseEvent;begin inherited MouseDown(Button, Shift, X, Y);FOnMouseDown := OnMouseDown;if Assigned(FOnMouseDown) then FOnMouseDown(Self, Button, Shift, X, Y);end; |
[000411]