Идёт загрузка страницы...

htp://aptem.net.ru





Delphi 1

Перехват события компонента DBGrid MouseDown

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