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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.12.2010, 20:48   #1
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию Как перехватить событие формы (Движение)

Ребят, весь интернет перерыл, не нашел что нужно... Вобщем вопрос простой впринципе. Нужно создать форму динамически. Делаю так:
Код:
type
  TJobForm=class(TForm)
  private
  procedure pFindPosition(Var msg:TMessage); Message mPosition;
  end;

var
  gChildForm:TJobForm;

procedure TJobForm.pFindPosition(var msg: TMessage);
begin
  If msg.Msg=WM_MOVE then
    Caption:=inttostr(Top);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  gChildForm:=TJobForm.Create(Form1);
  gChildForm.Caption:='';
  gChildForm.Show;
end;
Не получается и так со многими способами... Ну и соответственно перехватить событие перемещения окна.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"

Последний раз редактировалось ImmortalAlexSan; 31.12.2010 в 20:53.
ImmortalAlexSan вне форума Ответить с цитированием
Старый 31.12.2010, 20:59   #2
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

ты первую хочеш создат или дополнителную?
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 31.12.2010, 21:02   #3
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

ArtGrek, из контекста понятно: gChildForm:=TJobForm.Create(Form1); Да и какая разница...
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 31.12.2010, 21:21   #4
dosha
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 224
По умолчанию

Код:
var
  formL:TForm;
begin
 formL:=TForm.Create(nil);
 formL.Show;
end;
dosha вне форума Ответить с цитированием
Старый 31.12.2010, 21:28   #5
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

dosha, а как мне перехватить событие из стандартного класса TForm, не описывая новый?
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 31.12.2010, 22:23   #6
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Так что ли:
Код:
...
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2 := TForm2.Create(Self);
  Form2.Show;
end;
...
Код:
...
  TForm2 = class(TForm)
  private
    { Private declarations }
    procedure WMMove(var Msg: TWMMove); message WM_MOVE;
...

procedure TForm2.WMMove(var Msg: TWMMove);
begin
  if Msg.Msg = WM_MOVE then
    Caption := IntToStr(Top);
end;
...
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 01.01.2011, 01:03   #7
dosha
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 224
По умолчанию

решение выложу, ато читаешь почти все посты кусочками из гугла(которые даже нечитают)
dosha вне форума Ответить с цитированием
Старый 01.01.2011, 11:52   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если не ошибаюсь, решение уже выложил Spamer
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.01.2011, 16:01   #9
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Код:
type
  TJobForm=class(TForm)
  private
  procedure pFindPosition(Var msg:TWMMove); Message WM_MOVE;
  end;

var
  gChildForm:TJobForm;

procedure TJobForm.pFindPosition(var msg: TWMMove);
begin
  Caption:=inttostr(Top);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  gChildForm:=TJobForm.Create(Self);
  gChildForm.Show;
end;

...

initialization
RegisterClass(TJobForm);
end.
Не получается... Ошибка при создании формы вываливается. 'Resource TJobForm not found'
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 01.01.2011, 16:53   #10
Slippy
Пользователь
 
Аватар для Slippy
 
Регистрация: 29.12.2010
Сообщений: 55
По умолчанию

Если унаследовать TJobForm от TForm1, а не от TForm, то всё работает.

Код:
type
  TJobForm = class(TForm1)
  private
    procedure WMMove(var Msg: TWMMove); message WM_MOVE;
  public
  end;
Только при этом, естественно, унаследуются и все контролы TForm1)
Теория – это когда все известно, но ничего не работает. Практика – это когда все работает, но никто не знает почему. Мы объединяем теорию и практику: ничего не работает и никто не знает почему ©
Slippy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли как нибудь перехватить событие при закрытии крышки ноутбука? XAKKEP Общие вопросы Delphi 8 02.10.2010 19:00
перехватить событие Windows 7 HotGod Общие вопросы Delphi 1 10.06.2010 15:33
Движение формы BaRSyk174 Общие вопросы Delphi 2 17.09.2009 18:52
Как перехватить событие родительского компонента? postal2 Компоненты Delphi 3 28.08.2009 12:31
как перехватить открытие чужого приложенияпытаюсь перехватить открытие любого приложе rpy3uH Win Api 2 02.12.2006 12:12