Советы по 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]



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