powered by simpleCommunicator - 2.0.34     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Форма1 поверх формы2
25 сообщений из 37, страница 1 из 2
Форма1 поверх формы2
    #39990103
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вызываю модальную форму 1, далее когда форма1 появилась на экране нужно сразу показать форму2 (также модальную).
Как сие сделать коллеги?
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #39990171
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Visible
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #39990172
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet,

А что ShowModal в OnShow в данном случае не канает?
По-моему был не так уж давно похожий вопрос.
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #39990188
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно использовать TThread.Queue(nil, ShowForm2, True), где ShowForm2 это метод, в котором можно написать код Form2.ShowModal.
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #39990227
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий, можно пример привести?
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #39990230
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet
Мимопроходящий, можно пример привести?
ты сперва расскажи что получить хочешь.
ибо возможны варианты.
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #39990233
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий, открыли окно модальное(окно1), и при определенном условии открываем поверх окна1 модальное окно2.
Окно2 открывается нажимаем кнопочки в нем и закрываем,остается окна1.
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #39990241
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пропишите открытие второго окна в OnActivate
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #39990266
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr, прописал, но идет утечка памяти, не пойму откуда.
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #39990279
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet
DimaBr, прописал, но идет утечка памяти, не пойму откуда.

Ошибка в 17 строке
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #39990302
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr
Пропишите открытие второго окна в OnActivate
модальное окно "рождается" активным.
нахера так сделано в VCL - х.з.
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #39990313
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я обычно делаю через SetTimer в OnShow() с интервалом где-то 100 мс.
Главное потом его прибить не забыть.
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #39990385
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet
Как сие сделать коллеги?

Да в принципе несложно - любым механизмом, позволяющим выполнить "сразу как только" - сообщение, таймер итп. Вот только вместо этого хочется посоветовать изменить дизайн на вменяемый.

Vlad F
А что ShowModal в OnShow в данном случае не канает?

Нет. В этом случае будет "наоборот" - первая форма появится как только закроется вторая. А что, сложно проверить? А вообще стоит помнить: OnShow срабатывает непосредственно перед тем, как окно становится видимым.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Форма1 поверх формы2
    #40131404
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не придумали как сделать? А то мне тоже нада.
Вывести один раз сразу после onShow.
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #40131488
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgik,
Код: pascal
1.
2.
WM_AFTERACTIVATE = WM_USER + 1;
PostMessage(Handle, WM_AFTERACTIVATE, 0, 0);


В обработчике WM_AFTERACTIVATE открываете форму
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #40131504
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
didgik,
Код: pascal
1.
2.
WM_AFTERACTIVATE = WM_USER + 1;
PostMessage(Handle, WM_AFTERACTIVATE, 0, 0);


В обработчике WM_AFTERACTIVATE открываете форму


Не очень понятно куда надо вставить PostMessage() чтоб он вызвался один раз и почему там нельзя сразу открыть форму?
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #40131507
Фотография Makar4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgik
Не очень понятно куда надо вставить PostMessage() чтоб он вызвался один раз и почему там нельзя сразу открыть форму?

Одноразовый таймер 100мсек, повешенный на OnShow 1-й формы, хоть и не выглядит верхом совершенства, но решает все проблемы.
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #40131508
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Осталось только выяснить, чем WM_TIMER так волшебно отличается от WM_USER + 1...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #40131538
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgik,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
TForm1 = class(TCustomForm)
private
  const
    WM_AFTERACTIVATE = WM_USER + 1;
  var
    FInitialized: Boolean;
private
  procedure WMAfterActivate(var Message: TWMNoParams); message WM_AFTERACTIVATE;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FInitialized := False;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  if not FInitialized then
  begin
    FInitialized := True;
    if not PostMessage(Handle, WM_AFTERACTIVATE, 0, 0) then
      RaiseLastOSError();
  end;
end;

procedure TForm1.WMAfterActivate(var Message: TWMNoParams);
begin
  ....
end;
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #40131539
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот тут придётся выяснять чем WM_USER+1 лучше, чем сам WM_ACTIVATE.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #40131546
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

После выхода из обработчика FormActivate что-то еще может происходить в недрах VCL до следующего круга обработки сообщений, а так гарантировано все компоненты будут загружены, активированы и т.д. и т.п.
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #40131557
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, а чем OnActivate (с проверкой, если нужно только один раз) не подходит?
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #40131561
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Потому что VCL еще не до конца обработала...
https://quality.embarcadero.com/browse/RSP-24519
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #40131562
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Makar4ik
Одноразовый таймер 100мсек, повешенный на OnShow 1-й формы, хоть и не выглядит верхом совершенства, но решает все проблемы.

По опыту наблюдения за продуктовыми системами, количество таинственных AV, годами копящихся в багтрекерах, довольно очевидно коррелирует с количеством одноразовых 100мсек таймеров, решающих все проблемы.
...
Рейтинг: 0 / 0
Форма1 поверх формы2
    #40131572
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё оказалось намного проще, по крайней мере для моих целей.
Оказывается Application.CreateForm не только создает форму, но и показывает её, поэтому если между ней и Application.Run вставить показ нужной формы то оно замечательно работает.
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Форма1 поверх формы2
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]