...вот совпадение. Я потолько что отвечал на другой вопрос, где меня также спрашивали как перехватить событие DBGrid MouseDown:
Вам необходимо создать класс-наследник 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]