all-of-all.ru
Посмотреть
Статьи

Наши друзья

Спецпредложения интернет-магазина
 Статья / Инструкции / Обо всем / Перетаскиваем окна в Delphi

Перетаскиваем окна в Delphi


 Николай Баранов, 23.04.2012 18:04:37
Перетаскиваем окна в Delphi


(Нет голосов)
868 просмотров
В избранное
Комментировать(0)

Перетаскиваем окна в Delphi

Иногда возникает необходимость перетащить окно за какой-либо его элемент. Но коды, которые я нашел в интернете не работали, поэтому я написал свой.

Инструкция

1 шаг

Выберем элемент за который будем перетаскивать. Их может быть несколько, но все обязательно должны быть потомками класса TControl. Для примера я выбрал объект Panel1 класса TPanel.

2 шаг

Зададим переменные
var mouseX,mouseY:integer;{координаты нажатой мыши}
DownMouse:boolean;{признак нажатия мыши}

3 шаг

Выберем объект Panel1, в инспекторе объектов выберем вкладку Events.
Создадим 2 процедуры MouseDown и MouseUp и заполним их чтобы они выглядели так:

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
downmouse:=true;
mousex:=x+panel1.Left+4;{+4 если у окна BorderStyle не bsNone, если bsNone ничего не прибавляем }
mousey:=y+panel1.Top+28{аналогично};
end;

procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
downmouse:=false;
end;

4 шаг

создаем процедуру MouseMove:

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if downmouse then {если нажата мышь, то перемещаем окно}
begin
left:=mouse.CursorPos.X-mousex;
top:=mouse.CursorPos.Y-mousey;
{mouse.CursorPos динамические координаты указателя мыши }
end;
end;

5 шаг

запускаем программу

Советы и предупреждения:

  • следите, чтобы имена переменных не совпадали с именами процедур или функций

Перетаскиваем окна в Delphi
 Статья / Инструкции / Обо всем / Перетаскиваем окна в Delphi
 Николай Баранов, 23.04.2012 18:04:37

Назад в раздел

Самые интересные новости:

загрузка...