Советы по Delphi

         

Перемещение из DbGrid


Кто-нибудь пробовал перемещать что-либо из DbGrid методом перетащи и брось (drag and drop)? Вы сами можете создать потомка TDBGrid (или TDBCustomGrid) и добавить необходимую функциональность для достижения цели.

Скопируйте код из данного "Совета", сохраните его с именем DBGrid.pas и установите компонент в палитру. У Вас появится новый компонент EDBGrid с двумя новыми событиями: OnMouseDown и OnMouseUp. Я не считаю эту информацию конфиденциальной: это ошибка разработчиков Delphi! На самом деле эти два события должны быть частью компонента DBGrid.

unit Dbgrid;

interface

uses

DBGrids, Controls, Classes;
type
TEDBGrid = class(TDBGrid)privateFOnMouseDown: TMouseEvent;FOnMouseUp: TMouseEvent;protectedprocedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y:Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y:Integer); override;
publishedProperty OnMouseDown : TMouseEvent read FOnMouseDown writeFOnMouseDown ;
Property OnMouseUp : TMouseEvent read FOnMouseUp write FOnMouseUp ;end;

procedure Register;

implementation

procedure
Register;
begin
RegisterComponents('Data Controls',[TEDBGrid]);end;

procedure TEDBGrid.MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
begin
if
Assigned(FOnMouseDown) thenFOnMouseDown(Self,Button,Shift,X,Y);inherited MouseDown(Button,Shift,X,Y);end;

procedure TEDBGrid.MouseUp(Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
if
Assigned(FOnMouseUp) thenFOnMouseUp(Self,Button,Shift,X,Y);inherited MouseUp(Button,Shift,X,Y);end;

end.

[000072]



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