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

滑鼠拖曳事件的處理

答題得分者是:andersonhsieh
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-08-23 11:49:32 IP:61.220.xxx.xxx 未訂閱
請教各位學長 我現在要作的動作是利用GroupBox作Label的DragMode屬性的切換設定 label 在object inspector裡的DragMode屬性設為dmManual 當GroupBoxItemIndex=0 label的DragMode為dmManual label 可以在form上自由拖曳 <=== 狀況一 當GroupBoxItemIndex=1 label的DragMode為dmAutomatic label 可以拖曳到RichEdit裡 <=== 狀況二 問題(一) : 狀況一的時候沒問題 狀況二的時候 label1無法拖曳到RichEdit裡 但可以在form上自由拖曳。 label2 , label3 正常。 問題(二) : 此時再加入label4 然後砍掉label1 label4加入同樣程式碼卻出現 狀況一的時候沒問題 狀況二的時候 label2無法拖曳到RichEdit裡 但可以在form上自由拖曳。 label3 , label4 正常。 變成都是排第一個的label有問題 請問以上問題是哪裡沒有注意到 謝謝 程式碼如下: var Form1: TForm1; PressedX,pressedY : integer; isDrag : Boolean ; TotalLabel : integer; NowDragMode : TDragMode ; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Label1.Caption := 'AAA'; Label2.Caption := 'BBB'; Label3.Caption := 'CCC'; end; procedure TForm1.RadioGroup1Click(Sender: TObject); var i : integer; begin if (RadioGroup1.ItemIndex = 0) then begin NowDragMode := dmManual; end else if RadioGroup1.ItemIndex = 1 then begin NowDragMode := dmAutomatic ; end; for i := 1 to ComponentCount-1 do begin if (Components[i] is TLabel) then (Components[i] as TLabel).DragMode := NowDragMode; end; end; procedure TForm1.RichEdit1DragDrop(Sender, Source: TObject; X, Y: Integer); begin RichEdit1.SelAttributes.Assign((source as TLabel).Font); RichEdit1.Lines.Add((source as TLabel).Caption); end; procedure TForm1.RichEdit1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := (Source is TLabel); end; procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin isDrag := True; PressedX := X ; pressedY := Y ; end; procedure TForm1.Label1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin isDrag := False ; end; procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if isDrag then begin (Sender as TLabel).Left := (Sender as TLabel).Left x-PressedX; (Sender as TLabel).Top := (Sender as TLabel).Top Y-pressedY; end; end; end. 回首來時路 也無風雨也無晴~~@.@
------
天行健
君子當自強不息~~@.@
andersonhsieh
版主


發表:33
回覆:531
積分:439
註冊:2002-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-08-23 12:59:43 IP:211.20.xxx.xxx 未訂閱
這裡錯誤了for i := 1 to ComponentCount-1 do    要改成for i := 0 to ComponentCount-1 do @@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-08-23 15:10:45 IP:61.220.xxx.xxx 未訂閱
果然 謝謝啦 回首來時路 也無風雨也無晴~~@.@
------
天行健
君子當自強不息~~@.@
系統時間:2024-04-23 20:03:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!