DBGrid拖曳資料 |
|
Shelin
一般會員 發表:8 回覆:23 積分:6 註冊:2003-09-22 發送簡訊給我 |
下載檔案...請記得更改資料庫路徑...
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
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |