Советы по Delphi

       

Перехват события компонента 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]



Содержание раздела