Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.21;
Скачать: CL | DM;

Вниз

Модальные формы   Найти похожие ветки 

 
0990   (2010-01-14 17:35) [0]

в приложении в определенный момент времени автоматом вызывается модальная форма. Проблема в том, что в 1 из 1000 случаев она непонятно как оказывается позади главной, и я не могу получить к ней доступ т.к. главная закрывает ее полностью. В чем может быть дело.


 
Ega23 ©   (2010-01-14 17:43) [1]

Alr + Tab


 
clickmaker ©   (2010-01-14 17:47) [2]

> В чем может быть дело

глюк VCL


 
0990   (2010-01-14 17:50) [3]


> глюк VCL


как его исправить не подскажите?


 
clickmaker ©   (2010-01-14 17:53) [4]

правкой генофонда и пересборкой вцл, разве что
я лично не разбирался, в чем там косяк. может, кто-то из местных знает


 
sniknik ©   (2010-01-14 17:56) [5]

бывает если не указываешь овнера у MessageBox, с другим не сталкивался.


 
clickmaker ©   (2010-01-14 18:08) [6]

> бывает если не указываешь овнера у MessageBox

это не то. Так и в приложении на АПИ можно бокс спрятать. Он даже отдельной кнопкой на таскбаре может быть


 
Ганя   (2010-01-14 20:05) [7]

С MessageBox забавная ситуация иногда бывает при вызове дефолтного обработчика исключения.
Выглядит это так, что при вызове Application.MessageBox внутри него неправильно определяется параметр - дескриптор окна.
Функция Windows.MessageBox возвращает соответствующий код ошибки, но его никто не анализирует, и сообщение просто не появляется на экране.
Теперь что происходит у пользователя - он жмет кнопку команды, при выполнении происходит какое-либо исключение, в том числе оно может быть вполне прикладным, но сообщения об ошибке он не видит, и предполагает, что операция завершилась успешно, а потом возникает взаимное непонимание.
Почему в параметры попадает не тот дескрипторЮ, и при каких условиях так бывает - понять не удалось.


 
Darvin   (2010-01-15 10:00) [8]

Вообще-то, в вопросе шла речь не о MessageBox-е, а о модальной форме ;-)


 
sniknik ©   (2010-01-15 10:57) [9]

с модальной формой я такого не видел... но если это есть то может быть вызвано теми же причинами, например созданием формы с nil в параметрах... не знаю в общем как но аналогия, имхо, очевидна.
и еще, имхо, очевидна необходимость в дополнительных исходных данных про создание/использовании формы. или нет?


 
Darvin   (2010-01-15 12:01) [10]

У меня такой косяк тоже наблюдается. Создаю с параметром Application или Application.CreateForm()


 
Ega23 ©   (2010-01-15 12:08) [11]

Alt + Tab


 
Darvin   (2010-01-15 12:22) [12]


> Alt + Tab

И это прописать в инструкции для пользователя?


 
Ega23 ©   (2010-01-15 12:45) [13]


> И это прописать в инструкции для пользователя?


Да.
Если ты поищешь разные программы с модальными окнами, и потом поиспользуешь их, то увидишь точно такой же эффект.


 
0990   (2010-01-15 12:48) [14]

Проблему решил написанием промежуточного класса:


const
 MSG_SET_TOP = WM_USER + 1;

type

 { TTopForm }

 TTopForm = class(THelpForm)
 private
   procedure MsgSetTop(var Message: TMessage); message MSG_SET_TOP;
 protected
   procedure DoShow; override;
 end;

{ TTopForm }

procedure TTopForm.DoShow;
begin
 inherited;
 if fsModal in FormState then
   try
     PostMessage(Handle, MSG_SET_TOP, 0, 0);
   except
   end;
end;

procedure TTopForm.MsgSetTop(var Message: TMessage);
begin
 try
   SetWindowPos(Handle, HWND_TOP, 0, 0, 0, 0,
     SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOOWNERZORDER or
     SWP_NOREPOSITION or SWP_NOSIZE);
 except
 end;
end;


 
ANB   (2010-01-15 13:06) [15]


> автоматом вызывается модальная форма

Форма при этом создается или только показывается ранее созданная ?


 
0990   (2010-01-15 13:20) [16]


> Форма при этом создается или только показывается ранее созданная
> ?


Создается. Application.CreateForm(...)


 
Игорь Шевченко ©   (2010-01-15 20:58) [17]

http://transl-gunsmoker.blogspot.com/2009/01/blog-post_6896.html



Страницы: 1 вся ветка

Текущий архив: 2010.03.21;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
2-1263806738
Alex_h
2010-01-18 12:25
2010.03.21
Отчет Rave. Как разместить TDataMemo?


15-1262293207
Anatoly Podgoretsky
2010-01-01 00:00
2010.03.21
С Новым 2010 годом! Релиз.


1-1244227891
andreil
2009-06-05 22:51
2010.03.21
Как создать ярлык в Дельфи 2009?


8-1203768940
nuflin
2008-02-23 15:15
2010.03.21
вершинные шейдеры


2-1263832168
Делфиец
2010-01-18 19:29
2010.03.21
LowerCase почему то не работает