как правильно врантайме вытащить форму на верх?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

в дельфях привык писать для показа формы такой код:

Код: Выделить всё

if not assigned(Form1) then
  Form1:=TForm1.Create(Application);
Form1.Show;

в результате форма если надо создавалась и отображалась первая

в лазаре если форма уже создана то на верх она не выходит
вобщем нужно чтобы форма была первая по Z-order
Sphinx
новенький
Сообщения: 33
Зарегистрирован: 27.09.2005 21:52:09

Сообщение Sphinx »

WinAPI не пробовал ?

Код: Выделить всё

SetActiveWindow(Form1.Handle);
Аватара пользователя
Сергей Смирнов
энтузиаст
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва
Контактная информация:

Сообщение Сергей Смирнов »

Попробуй ещё добавить

Код: Выделить всё

Form1.SetFocus;
Хотя это и выглядит излишним, может помочь.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

WinAPI не пробовал ?

Ну не хочется мне зависить от винды - не привык

Попробуй ещё добавить
Код 
Form1.SetFocus;
Хотя это и выглядит излишним, может помочь.

Помогло - но как-то это не красиво - не сомесимо с дельфой :(
по моему это баг
Nikolay

Сообщение Nikolay »

Однозначно баг.
Там не все события обрабатываются в очереди.
Аватара пользователя
Сергей Смирнов
энтузиаст
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва
Контактная информация:

Сообщение Сергей Смирнов »

Однозначно баг.
Там не все события обрабатываются в очереди.
Это, вероятно, одно из проявлений бага 1052.
Ответить