DragToGridForm.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:1k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit DragToGridForm;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   StdCtrls, Db, DBTables, Grids, DBGrids;
  6. type
  7.   TFormDrag = class(TForm)
  8.     DBGrid1: TDBGrid;
  9.     DataSource1: TDataSource;
  10.     Table1: TTable;
  11.     LabelDrag: TLabel;
  12.     EditDrag: TEdit;
  13.     procedure DBGrid1DragDrop(Sender, Source: TObject; X, Y: Integer);
  14.     procedure DBGrid1DragOver(Sender, Source: TObject; X, Y: Integer;
  15.       State: TDragState; var Accept: Boolean);
  16.   private
  17.     { Private declarations }
  18.   public
  19.     { Public declarations }
  20.   end;
  21. var
  22.   FormDrag: TFormDrag;
  23. implementation
  24. {$R *.DFM}
  25. type
  26.   TDBGHack = class (TDbGrid)
  27.   end;
  28. procedure TFormDrag.DBGrid1DragDrop(Sender, Source: TObject; X, Y: Integer);
  29. var
  30.   gc: TGridCoord;
  31. begin
  32.   gc := TDBGHack(DbGrid1).MouseCoord (x, y);
  33.   if (gc.y > 0) and (gc.x > 0) then
  34.   begin
  35.     DbGrid1.DataSource.DataSet.MoveBy (gc.y - TDBGHack(DbGrid1).Row);
  36.     DbGrid1.DataSource.DataSet.Edit;
  37.     DBGrid1.Columns.Items [gc.X - 1].Field.AsString := EditDrag.Text;
  38.   end;
  39.   DBGrid1.SetFocus;
  40. end;
  41. procedure TFormDrag.DBGrid1DragOver(Sender, Source: TObject; X, Y: Integer;
  42.   State: TDragState; var Accept: Boolean);
  43. begin
  44.   Accept := (Source = LabelDrag);
  45. end;
  46. end.