⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 这是我写的一篇关于表格中自由拖动数据的控件的例子程序
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, DB, DBTables, NewDBGrid, ExtCtrls,ComCtrls;

type
  TForm1 = class(TForm)
    Table1: TTable;
    Table2: TTable;
    DataSource1: TDataSource;
    DataSource2: TDataSource;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    GroupBox1: TGroupBox;
    NewDBGrid1: TNewDBGrid;
    GroupBox2: TGroupBox;
    NewDBGrid2: TNewDBGrid;
    Image1: TImage;
    StatusBar1: TStatusBar;
    procedure NewDBGrid1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure NewDBGrid1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure Button1Click(Sender: TObject);
    procedure NewDBGrid2MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
var
  SGC : TGridCoord;//存取DBGrid单元的位置

procedure TForm1.NewDBGrid1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  DG     : TNewDBGrid;
  GC     : TGridCoord;
  CurRow : Integer;
  SField : string;
begin
  DG := Sender as TNewDBGrid;
  GC := DG.MouseCoord(X,Y);
  with DG.DataSource.DataSet do begin
    with (Source as TNewDBGrid).DataSource.DataSet do
      begin
        StatusBar1.SimpleText:= '现在状态:您分配"'+Fields[SGC.X-1].AsString+'"专家';
        SField:=Fields[1].AsString;
      end;
    DisableControls;
    CurRow := DG.Row;
    MoveBy(GC.Y-CurRow);
    StatusBar1.SimpleText :=StatusBar1.SimpleText+' 给 "'+Fields[1].AsString+'的'+Fields[GC.X-1].FieldName+'"';
    edit;
    Fields[GC.X-1].AsString:=SField;
    post;
    MoveBy(CurRow-GC.Y);
    EnableControls;
  end;
end;

procedure TForm1.NewDBGrid1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
var
  GC : TGridCoord;
begin
  GC := (Sender as TNewDBGrid).MouseCoord(X,Y);
  Accept := Source is TNewDBGrid and (GC.X > 0) and (GC.Y > 0);
end;

procedure TForm1.NewDBGrid2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  DG : TNewDBGrid;
begin
  DG := Sender as TNewDBGrid;
  SGC := DG.MouseCoord(X,Y);
  if (SGC.X > 0) and (SGC.Y > 0) then
    (Sender as TNewDBGrid).BeginDrag(False);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  close;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -