全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1658
推到 Plurk!
推到 Facebook!

DBGrid拖曳資料

 
Shelin
一般會員


發表:8
回覆:23
積分:6
註冊:2003-09-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-07 18:13:52 IP:61.220.xxx.xxx 未訂閱
下載檔案...請記得更改資料庫路徑... DBGrid可以拖曳某一格資料出來到兩個Edit.. 兩個Edit也可以互相拖曳...拖曳時..值會跟著滑鼠跑... 感謝hagar大哥.ddy大哥指導,其程式碼如下:     
 
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, DB, ADODB, Grids, DBGrids;    type
  TMyHintWindow = class(THintWindow)
  end;    type
  TForm1 = class(TForm)
    Edit1: TEdit;
    AQ1: TADOQuery;
    AQ1stockID: TStringField;
    AQ1stockname: TStringField;
    AQ1barvalue: TStringField;
    AQ1BuySale: TStringField;
    DBGrid1: TDBGrid;
    DS1: TDataSource;
    Edit3: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    procedure DBGrid1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure Edit1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure Edit2DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure Edit2DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure DBGrid1EndDrag(Sender, Target: TObject; X, Y: Integer);
    procedure Edit1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Edit2MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Edit2MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Edit2EndDrag(Sender, Target: TObject; X, Y: Integer);
    procedure Edit1EndDrag(Sender, Target: TObject; X, Y: Integer);
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.DFM}    // DBGrid的拖曳事件
procedure TForm1.DBGrid1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  if Source = DBGrid1 then
    Accept := False;
  Edit3.Parent := DBGrid1;
  Edit3.Top := Y;
  Edit3.Left := X;
end;    procedure TForm1.DBGrid1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
    Edit3.Visible := False;
end;    procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if dbgrid1.Dragging then begin
    dbgrid1.EndDrag(true);
  end;
end;    procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if DragDetect(DBGrid1.Handle, Point(X, Y)) then begin
    DBGrid1.BeginDrag(True);
    Edit3.Text := DBGrid1.SelectedField.AsString;
    Edit3.Visible := True;
  end else begin
    DBGrid1.EndDrag(true);
  end;
end;    //在form拖曳物件
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
    Edit3.Parent := Self;
    Edit3.Top := Y;
    Edit3.Left := X;
end;    //針對edit1的拖曳事件
procedure TForm1.Edit1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
    Accept := True;
end;    procedure TForm1.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  if Source = DBGrid1 then begin
    Edit1.Text := Edit3.Text;
    Edit3.Visible := false;
  end;
  if Source = Edit2 then begin
    Edit1.Text := Edit2.Text;
    Edit3.Visible := false;
  end;
end;    procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
    edit3.Text:=edit1.Text;
end;    procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if DragDetect(Edit1.Handle, Point(X, Y)) then begin
    Edit1.BeginDrag(True);
    Edit3.Parent := edit1;
    edit3.Show;
  end else begin
    Edit1.EndDrag(True);
  end;
end;    procedure TForm1.Edit1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
  Edit3.Visible := False;
end;    //針對edit2的拖曳事件
procedure TForm1.Edit2DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  if Source = DBGrid1 then begin
    Edit2.Text := Edit3.Text;
    Edit3.Visible := False;
  end;
  if Source = Edit1 then begin
    Edit2.Text := Edit1.Text;
    Edit3.Visible := False;
  end;
end;    procedure TForm1.Edit2DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
    Accept := True;
end;    procedure TForm1.Edit2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
    edit3.Text:=edit2.Text;
end;    procedure TForm1.Edit2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if DragDetect(Edit2.Handle, Point(X, Y)) then begin
    Edit2.BeginDrag(True);
    Edit3.Parent := edit1;
    edit3.Show;
  end else begin
    Edit2.EndDrag(True);
  end;
end;    procedure TForm1.Edit2EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
   Edit3.Visible := False;
end;    //結束程式
procedure TForm1.Button1Click(Sender: TObject);
begin
  close;
end;    end.
****************** 期待夢想起飛的一天 ******************
附加檔案:40202_DBGrid拖曳.zip
系統時間:2024-06-16 3:30:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!