Форум: "Начинающим";
Текущий архив: 2010.03.21;
Скачать: [xml.tar.bz2];
ВнизМодальные формы Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.018 c