掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Panelを自由に移動するには? (ID:29486)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Formに Image1 と Panel1 と Panel2 を配置します procedure TForm1.FormCreate(Sender: TObject); begin Image1.Parent := Panel1; Image1.Align := alClient; Image1.OnMouseDown := MouseDown; Panel2.OnMouseDown := MouseDown; end; procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer); var WinControl : TWinControl; begin if Sender is TWinControl then begin WinControl := TWinControl(Sender); end else begin if Sender is TControl then begin if TControl(Sender).Parent is TWinControl then begin WinControl := TWinControl(TControl(Sender).Parent); end; end; end; with WinControl do begin (* サンプルそのまま *) ReleaseCapture; if X < Panel1.BevelWidth then begin if Y < Panel1.BevelWidth then Perform(WM_SYSCOMMAND, SC_SIZE or 4, 0) //左上 else if Y > Panel1.Height - Panel1.BevelWidth then Perform(WM_SYSCOMMAND, SC_SIZE or 7, 0) //左下 else Perform(WM_SYSCOMMAND, SC_SIZE or 1, 0); //左 end else if X > Panel1.Width - Panel1.BevelWidth then begin if Y < Panel1.BevelWidth then Perform(WM_SYSCOMMAND, SC_SIZE or 5, 0) //右上 else if Y > Panel1.Height - Panel1.BevelWidth then Perform(WM_SYSCOMMAND, SC_SIZE or 8, 0) //右下 else Perform(WM_SYSCOMMAND, SC_SIZE or 2, 0); //右 end else if Y < Panel1.BevelWidth then Perform(WM_SYSCOMMAND, SC_SIZE or 3, 0) //上 else if Y > Panel1.Height - Panel1.BevelWidth then Perform(WM_SYSCOMMAND, SC_SIZE or 6, 0) //下 else Perform(WM_SYSCOMMAND, SC_MOVE or 2, 0); //移動 (* サンプルそのまま *) end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.