滑鼠拖曳事件的處理 |
答題得分者是:andersonhsieh
|
T.J.B
版主 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
請教各位學長 我現在要作的動作是利用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 發送簡訊給我 |
|
T.J.B
版主 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |