Пятница, 19.04.2024, 12:22
Приветствую Вас Гость

Не ошибается тот, кто ничего не делает.
Но и ничего не делать - ошибка.

Эмиль Кроткий

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Delphi » Разное » Перемещение формы за любой компонент
Перемещение формы за любой компонент
ThePro94Дата: Среда, 08.08.2012, 16:12 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 14
Репутация: 0
Статус: Offline
Как сделать перемещение формы за любой компонент в FireMonkey?
Code
ReleaseCapture;
  Form1.perform(WM_SysCommand,$F012,0);

Не работает.
Посоветовали так: на mousedown запомнил координаты нажатия и ставил флаг нажатия, на mousemove прибавлял разницу координат и запомненных координат, если стоит флаг, на mouseup убирал флаг нажатия.
Но не могу сообразить как сделать..
 
BLACK_CRAFTER666Дата: Пятница, 19.07.2013, 11:06 | Сообщение # 2
Сержант
Группа: Пользователи
Сообщений: 31
Репутация: 0
Статус: Offline
прикрепите эти процедуры к нужным компонентам

Код
unit Unit1;

interface

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

type
   TForm1 = class(TForm)
     procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
       Shift: TShiftState; X, Y: Integer);
     procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
       Y: Integer);
     procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
       Shift: TShiftState; X, Y: Integer);
     procedure FormCreate(Sender: TObject);
   private
     { Private declarations }
     oldtop, oldleft : Integer;
     dragging : Boolean;
   public
     { Public declarations }
   end;

var
   Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);
begin
case button of
   mbleft:
   begin
     oldleft := x;
     oldtop := y;
     dragging := true;
   end;
else Exit;
end;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
   Y: Integer);
begin
   if (dragging) then
   begin
     Form1.Left := Form1.Left + X - OldLeft;
     Form1.Top := Form1.Top + Y - OldTop;
end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);
begin
   dragging := False;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   dragging := False;
end;

end.

кстати, аваст находит в этом коде угрозу smile
 
compmaster84Дата: Воскресенье, 15.10.2017, 11:21 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 4
Репутация: 0
Статус: Offline
cool
 
Форум » Delphi » Разное » Перемещение формы за любой компонент
  • Страница 1 из 1
  • 1
Поиск:


Copyright MyCorp © 2024Конструктор сайтов - uCoz