unit GridU1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Db, DBTables, Grids, DBGrids, StdCtrls;
type TForm1 = class(TForm) MyDBGrid1: TDBGrid; Table1: TTable; DataSource1: TDataSource; Table2: TTable; DataSource2: TDataSource; MyDBGrid2: TDBGrid; procedure MyDBGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure MyDBGrid1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); procedure MyDBGrid1DragDrop(Sender, Source: TObject; X, Y: Integer); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.DFM}
var SGC : TGridCoord;
procedure TForm1.MyDBGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var DG : TDBGrid; begin DG := Sender as TDBGrid; SGC := DG.MouseCoord(X,Y); if (SGC.X > 0) and (SGC.Y > 0) then (Sender as TDBGrid).BeginDrag(False); end;
procedure TForm1.MyDBGrid1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); var GC : TGridCoord; begin GC := (Sender as TDBGrid).MouseCoord(X,Y); Accept := Source is TDBGrid and (GC.X > 0) and (GC.Y > 0); end;
procedure TForm1.MyDBGrid1DragDrop(Sender, Source: TObject; X, Y: Integer); var DG : TDBGrid; GC : TGridCoord; CurRow : Integer; begin DG := Sender as TDBGrid; GC := DG.MouseCoord(X,Y); with DG.DataSource.DataSet do begin with (Source as TDBGrid).DataSource.DataSet do Caption := 'You dragged "'+Fields[SGC.X-1].AsString+'"'; DisableControls; CurRow := DG.Row; MoveBy(GC.Y-CurRow); Caption := Caption+' to "'+Fields[GC.X-1].AsString+'"'; MoveBy(CurRow-GC.Y); EnableControls; end; end;
end. (出处:www.delphibbs.com)
[1]
|