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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2013, 19:26   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию Операции с формами

Доброго времени суток!
Стоит задача вывести Form2 по верх всех форм и, возможно, других окон
Код:
  Form2.WindowState := wsNormal;
  SetWindowPos(Form2.Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
  Form2.Show;
Задача требует именно такого способа, но у данного способа есть проблема (см. скрин). Вторая форма при деактивации закрывает собой главную.
Пытался решить проблему так:
Код:
procedure TForm2.FormDeactivate(Sender: TObject);
begin
  SetWindowPos(Handle, HWND_NOTOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;
На выходе получаем:
1. Запускаем приложение
2. Нажимаем кнопку, чтобы открыть вторую форму
3. Открывается вторая форма
4. Кликаем по первой форме и получаем результат как на скрине
Чтобы добиться требуемого результата, нужно кликнть по второй форме, а потом только по первой.
Изображения
Тип файла: png Image.png (18.5 Кб, 56 просмотров)

Последний раз редактировалось Shouldercannon; 30.11.2013 в 20:16.
Shouldercannon вне форума Ответить с цитированием
Старый 30.11.2013, 19:33   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
вывести Form2 по верх всех форм и, возможно, других окон
и
Цитата:
Вторая форма закрывает собой главную.
Или я чего-то не понимаю или я чего-то не понимаю . одно из двух.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.11.2013, 20:19   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Исправил пост. При определённом событии вторая форма должна вывестись поверх всех окон, а при деактивации должна лишиться этого свойства. Деактивация не хочет срабатывать после того, как вторая форма была открыта, нужно сначала активировать вторую форму и только потом переключаться на первую и вот только тогда сработает событие деактивации у второй формы.

Последний раз редактировалось Shouldercannon; 30.11.2013 в 20:25.
Shouldercannon вне форума Ответить с цитированием
Старый 30.11.2013, 20:50   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Деактивация не хочет срабатывать после того, как вторая форма была открыта, нужно сначала активировать вторую форму и только потом переключаться на первую и вот только тогда сработает событие деактивации у второй формы.
Извини, я последнее время совсем без башни остался, поэтому не могу понять и этого пояснения...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.11.2013, 21:15   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

автор, вы чего хотите сделать? чтобы форма не могла активироваться? тогда createparams надо переопределить, или чтоб активация хитрая была, тогда как?
eval вне форума Ответить с цитированием
Старый 30.11.2013, 23:59   #6
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Хочу, чтобы событие деактивации сработало у второй формы после того, как она была открыта и сразу же перешли на главную форму.
Shouldercannon вне форума Ответить с цитированием
Старый 01.12.2013, 00:22   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

вы рассказываете чего у вас не получается, а я спрашиваю чего вам надо, это большая разница
eval вне форума Ответить с цитированием
Старый 01.12.2013, 02:12   #8
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

ТСу надо, чтобы происходило Form2.FormStyle:=fsNormal при активации Form1.
Код:
procedure TForm1.FormActivate(Sender: TObject);
begin
 Form2.FormStyle:=fsNormal;
end;

procedure TForm2.FormShow(Sender: TObject);
begin
 Form2.FormStyle:=fsStayOnTop;
end;
eval как всегда оффтопит.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 01.12.2013, 02:41   #9
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
procedure TForm1.FormActivate(Sender: TObject);
begin
Form2.FormStyle:=fsNormal;
end;

procedure TForm2.FormShow(Sender: TObject);
begin
Form2.FormStyle:=fsStayOnTop;
end;
опять гомнокод, может уже хватит?
eval вне форума Ответить с цитированием
Старый 01.12.2013, 03:28   #10
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
опять гомнокод, может уже хватит?
Давай, покажи мне как надо писать не гомнокод, а то только оффтопишь да возмущаешься, по делу 0 строк от тебя увидел. Может ты еще и на скамейке возле подъезда сидишь да шл**ами девок и наркоманами парней проходящих называешь?
Кстати, опять оффтопишь, а по делу ничего не написал.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с Формами KsyFka Общие вопросы Delphi 1 15.05.2011 22:48
Работа с формами Toxic Общие вопросы Delphi 8 17.09.2010 16:31
MainMenu с формами... DoGFoX Компоненты Delphi 5 09.06.2010 21:03
Работа с формами Claster Общие вопросы Delphi 11 01.02.2010 17:09
Работа с формами ruslans Общие вопросы Delphi 1 16.04.2009 15:06