Главная | Регистрация | Вход
Среда, 06.08.2025, 07:44
Приветствую Вас Гость | RSS
Навигация:
Категории:
Базы данных [9]
Графика и Игры [0]
Интернет и Сети [0]
Компоненты и Классы [0]
Мультимедиа [0]
ОС и Железо [0]
Программа и Интерфейс [0]
Технологии [0]
Файловая система [0]
Программирование на Delphi [23]
Обучающие статьи [26]
Небольшие уроки по Delphi
Синтаксис [0]
Рабочий стол [0]
qwerty [0]
Чат сайта:
Главная » Статьи » Обучающие статьи

Перемещение формы не за заголовок
Для того, чтобы перемещать форму за клиентскую область, существует 2 варианта: сделать всю форму как один большой заголовок, или обрабатывать события OnMouseDown, OnMouseUp и OnMouseMove у формы. (примеры взяты из моего SMPN плеера smile )

Способ #1

Этот вариант намного проще второго, но у него один недостаток: Компонент TPopupMenu перестает работать для формы
ну чтож, начнем!
Сначала в частных объявлениях (после слова private) объявляем процедуру:

Code
private
procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest;

Затем в разделе implementation описываем её так:
implementation
Code
{$R *.DFM}

procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
  inherited;
  if M.Result = htClient then
  M.Result := htCaption;
end;

Способ #2
Самый лучший, на мой взгляд, способ. smile
создаем 3 глобальные переменные (X1 и Y1: типа integer) и (Drag: типа Boolean)
в событие формы OnMouseDown пишем:

Code
If Button =mbLeft then begin
  CanTas := True;
  X1:=X;
  Y1:=Y;
  SetCapture(Application.Handle);

в событие формы OnMouseUp пишем:

Code
CanTas := False; //сообщаем форме, что мы отпустили кнопку мыши

в событие OnMouseMove пишем:

Code
if Drag then begin  

  MainForm.Left := MainForm.Left+X-X1; //сообщаем форме то, что мы нажали левую  
  MainForm.Top := MainForm.Top+Y-Y1; //кнопку мыши и готовы тащить <img src="http://s7.ucoz.net/sm/24/smile.gif" border="0" align="absmiddle" alt="smile">

end;

вот вроде все. smile

Категория: Обучающие статьи | Добавил: NekitoS (20.04.2009)
Просмотров: 910 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Контакты
ICQ:306182
Статистика
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Copyright "Delphi Project Ltd" © 2025