掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Editをドラッグするには? (ID:31306)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Form上で、Alignが alNoneのものだけ移動可能。Tagで区別してもいいかな。 type TControl = class(Controls.TControl); var IsMoveMode: boolean; ptBegin: TPoint; procedure TForm3.FormCreate(Sender: TObject); var i: Integer; begin for i:=0 to ComponentCount-1 do begin if TControl(Components[i]).Align = alNone then TControl(Components[i]).OnMouseDown := AControlMouseDown; end; end; procedure TForm3.AControlMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin // シフトキー押しながら左ボタン押下で移動開始 if (Button = mbLeft{mbRight})and(ssShift in Shift) then begin ptBegin := Point(X, Y); IsMoveMode := True; TControl(Sender).MouseCapture := True; TControl(Sender).OnMouseMove := AControlMouseMove; TControl(Sender).OnMouseUp := AControlMouseUp; end else begin IsMoveMode := False; end; end; procedure TForm3.AControlMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin IsMoveMode := False; TControl(Sender).MouseCapture := False; end; procedure TForm3.AControlMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var pt: TPoint; begin if IsMoveMode then with TControl(Sender) do begin pt := Parent.ScreenToClient(ClientToScreen(Point(X, Y))); Left := pt.X - ptBegin.X; Top := pt.Y - ptBegin.Y; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.