Форум: "Начинающим";
Текущий архив: 2008.05.04;
Скачать: [xml.tar.bz2];
ВнизМодальная форма Найти похожие ветки
← →
cyborg (2008-04-07 15:34) [0]Может быть кто-то сталкивался с таким глюком: есть главная форма, из нее вызывается модальная форма. Все бы нормально, но иногда, когда переходиш в окна других программ, а потом возвращаешься в свою программу, то модальное окно пропадает. При этом главная форма ни на что не реагирует. Если после этого по переходить по окнам разных приложений, то модальная форма чудесным образом появляется. Почему так себя ведет модальная форма и как с этим бороться?
← →
ANB (2008-04-07 15:48) [1]Дамс. Лягушка (тоад) ведет себя точно также. И писали ее на делфи. Если честно, даже как юзера напрягает. Посему, стараюсь не пользовать слишком часто модальные формы.
← →
Kolan © (2008-04-07 15:48) [2]Каких других? Что-то у меня не получается воспроизвести.
Код создания мод. формы покажи.
← →
ANB (2008-04-07 15:51) [3]
> Kolan © (07.04.08 15:48) [2]
ShowMessage("Hello, Kolan !");
Если потом гулять по разным окнам, то иногда залипает приложение.
Чаще проявляется, если запустить что то длительное, в конце которого ты сообщаешь об окончании (мона тупо Sleep(15000);) и в это время перейти на другое приложение.
← →
Reindeer Moss Eater © (2008-04-07 15:53) [4]Лечится альттабом.
← →
ANB (2008-04-07 15:58) [5]
> Reindeer Moss Eater © (07.04.08 15:53) [4]
Юзером. Пока еще поймет. Я раз навтыкал ShowMessage в поделочной утилитке для себя. У меня ее выпросил спец по работе с клиентами. Опытный до жути.
Я то знал, что бывают залипухи и лечил табом. А этот спец зовет меня через час с воплем, что моя утилита зависла :)
← →
cyber-pilot (2008-04-07 15:58) [6]
> Kolan © (07.04.08 15:48) [2]
> Каких других? Что-то у меня не получается воспроизвести.
>
> Код создания мод. формы покажи.
В главной форме создается еще одна
if not Assigned(FDialog) then
FDialog := TfmDialog.Create(Self);
потом у нее вызывается процедура, в которой вызывается ShowModal
Кстати, эта ошибка возникает очень редко, так что воспроизвести ее сложно.
← →
cyber-pilot (2008-04-07 16:28) [7]оказывается это довольно частая ошибка
http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=68228&pg=1
и нормального решения у нее нет :(
← →
Kolan © (2008-04-07 16:32) [8]Я тоже замечал такой глюк, все хотел понять из-за чего он происходит. Вот хотел сейчас, а воспроизвести не получилось.
← →
asdf2 (2008-04-08 12:08) [9]а, если в OnShow формы проверять, есть ли у нее модальные и пхать наверх?
← →
Gore (2008-04-08 12:32) [10]может при потере фокуса просто ее закрывать?
← →
ANB (2008-04-08 17:15) [11]
> может при потере фокуса просто ее закрывать?
Не поканает, если показом модальной формы приостановлено на середине исполнение процедуры/обработчика. Тады оно дальше пойдет, что не есть хорошо. Плюс часто ошибка проявляется, если приложение УЖЕ не активно при подъеме модальной формы.
> оказывается это довольно частая ошибка http://www.sql.ru/forum/actualthread.
> aspx?bid=20&tid=68228&pg=1
>
> и нормального решения у нее нет :(
Хреноватая инфа. Вот и разработчики лягушки этот глюк не починили.
← →
asdf2 (2008-04-08 18:39) [12]воспроизводство глюка:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
n: Integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
n := Screen.FormCount;
ShowF;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
if (n <> 0) and ( (Screen.FormCount - 1) >= n) then
Screen.Forms[n].BringToFront;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm2 = class(TForm)
private
{ Private declarations }
f: Boolean;
public
{ Public declarations }
end;
procedure ShowF;
implementation
{$R *.dfm}
procedure ShowF;
begin
with TForm2.Create(Application) do
try
ShowModal;
finally
Free;
end;
end;
end.
нажать на кнопочку и протащить какое-нть окно
← →
Loginov Dmitry © (2008-04-08 23:28) [13]> воспроизводство глюка:
это не воспроизводство глюка, а диверсия какая-то!
← →
Anatoly Podgoretsky © (2008-04-09 16:15) [14]> Loginov Dmitry (08.04.2008 23:28:13) [13]
Это производство
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.05.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c