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

請問如何得知Form移動多少?

答題得分者是:aftcast
kirei6989
一般會員


發表:16
回覆:13
積分:5
註冊:2011-04-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-05-04 17:20:43 IP:122.147.xxx.xxx 訂閱
當程式執行時螢幕上會出現2個Form(TForm),
假設主要視窗為Form1,當Form1被移動時,Form2也要跟著移動。
我本來是想使用MouseDown和MouseUp取得Form1移動的距離。
可是Form能移動是要滑鼠點在標題列上,但這樣就偵測不到MouseDown和MouseUp的事件了。
請問大家有人知道該怎麼做才能讓Form1移動時Form2也跟著移動呢?
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-05-04 17:46:01 IP:59.120.xxx.xxx 未訂閱
想寫簡單點的話,就用個Timer去偵測吧~

噢~我有找到一個另解
不過~是用Delphi寫的...

請注意procedure的部份即可~


[code delphi]
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
procedure OnMove(var Msg: TWMMove); message WM_MOVE;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.OnMove(var Msg: TWMMove);
begin
Caption := IntToStr(Form1.Left) ', ' IntToStr(Form1.Top);
inherited;
end;

end.

[/code]


===================引 用 kirei6989 文 章===================
當程式執行時螢幕上會出現2個Form(TForm),
假設主要視窗為Form1,當Form1被移動時,Form2也要跟著移動。
我本來是想使用MouseDown和MouseUp取得Form1移動的距離。
可是Form能移動是要滑鼠點在標題列上,但這樣就偵測不到MouseDown和MouseUp的事件了。
請問大家有人知道該怎麼做才能讓Form1移動時Form2也跟著移動呢?
編輯記錄
老大仔 重新編輯於 2011-05-04 03:53:21, 註解 無‧
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-05-04 18:45:41 IP:210.64.xxx.xxx 訂閱
作者: 蕭沖


[code cpp]
class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormShow(TObject *Sender);
private: // User declarations
void __fastcall OnMoving(TMessage &msg);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
protected:
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_MOVING, TMessage, OnMoving)
END_MESSAGE_MAP(TForm)
};

[/code]


[code cpp]
//---------------------------------------------------------------------------
void __fastcall TForm1::OnMoving(TMessage &msg)
{
// RECT *pRect = 0;
// pRect = (RECT*)msg.LParam;
// TRect rect(*pRect);

Form2->Left = Left Width 50;
Form2->Top = Top Height 20;

}

//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
Form2->Show();
}
//--------------------------------------------------------------

[/code]


------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
kirei6989
一般會員


發表:16
回覆:13
積分:5
註冊:2011-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-05-05 09:47:42 IP:122.147.xxx.xxx 訂閱
謝謝老大仔和aftcast,我剛剛試過OK了。
因為我不懂Delphi的語法,所以把分數給aftcast。
感謝兩位大大的協助。
系統時間:2024-04-25 14:13:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!