Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2009, 14:55   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Процедура при перемещении формы

Как создать процедуру, которая будет выполнятся при перетаскивании формы?
P.S. Тип формы - none, бара с мин, разв, закр нет, юзаю ReleaseCapture;
FRMMain.Perform(WM_SysCommand,$F012 ,0);
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 27.07.2009, 14:57   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
которая будет выполнятся при перетаскивании формы?
Обработчик события?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.07.2009, 14:59   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Да, по типу onCreate, onMouseDown.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 27.07.2009, 15:15   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Такой подойдет?

Код:
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 w(var m:TMessage); message WM_MOVING;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform(WM_SysCommand,$F012 ,0);
end;

procedure TForm1.w;
begin
caption:=inttostr(left)+' '+inttostr(top);
end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.07.2009, 16:07   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Огромное спасибо! Конечно подойдет. Кстати, а такое можно сотворить с любой мессагой?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 27.07.2009, 16:40   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Кстати, а такое можно сотворить с любой мессагой?
Если ты имеешь ввиду описать ее обработчик то да. Ессно так любую мессагу можно вылавливать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.07.2009, 17:44   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

А как быть с WS_MAXIMIZED? Ведь она входит в WM_SYSCOMMAND! Каким должно быть написание?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 28.07.2009, 09:11   #8
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Можно так (как вариант) использовать WMSyscommand.
Объявляем :
Код:
  private
    procedure WMSyscommand(var msg: TWmSysCommand); message WM_SYSCOMMAND;
Используем :
Код:
procedure TForm1.WMSyscommand(var msg: TWmSysCommand);
begin
   case (msg.CmdType and $FFF0) of
     SC_MINIMIZE: 
                  // действия при минимизации формы
     SC_RESTORE : 
                  // действия при восстановлении размера формы
     SC_MAXIMIZE: 
                  // действия при "распахивании" формы
   end;
   inherited;
end;
А можно (конечно не по твоему вопросу) еще использовать WMEXITSIZEMOVE - событие которое происходит когда форма уже изменила размер или положение на экране. Объявляем :
Код:
  public
    procedure WMEXITSIZEMOVE(var Message: TMessage); message WM_EXITSIZEMOVE;
Используем :
Код:
procedure TForm1.WMEXITSIZEMOVE(var Message: TMessage);
begin
....
....
end;
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запоминание координат при перемещении формы Shouldercannon Общие вопросы Delphi 5 21.06.2009 23:11
При нажатии enter запускалась процедура Rusl92 Общие вопросы Delphi 9 01.10.2008 09:33
Как сделать так,чтобы при нажатии на кнопку выполнялась процедура? Bolgarin Общие вопросы Delphi 10 03.06.2008 23:48
Определение X и Y координат PaintBox при перемещении курсора мыши Vladimir K. Общие вопросы Delphi 3 04.01.2007 10:45
что нужно сделать, чтобы при нажатии кнопки запускалась процедура mager Общие вопросы Delphi 15 19.11.2006 15:02