![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте!
В определенный момент хочу вызвать модально форму. При вызове метода ShowModal() выскакивает сообщение "Cannot make a visible window modal". Причем по клику кнопки форма показывается - все нормально, а по условию (например по кнопке запускаю таймер и уже таймер вызывает форму) вываливается эта ошибка. Причем форма показывается на пол секунды, исчезает, а потом эта ошибка... Пролейте свет.... В свойствах вызываемой формы Visible false, Enabled true - все как люди здесь подсказывали... |
#2
|
||||
|
||||
![]() косяк в программе где-то Visible включает, потому что:
Цитата:
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
![]() Представь!!! Создаю вообще новый проект и две пустых формы Form1 Form2. На Form1 ставлю кнопку и таймер. В дизайнере ставлю свойство Timer Enabled - false;
По кнопке ставлю свойство Timer.Enabled - true; Функция таймера вызывает Form2.ShowModal(); и вываливает эту ошибку!!!! Если просто в кнопке поставить Form2.ShowModal() (не через таймер) - все работает... |
#4
|
||||
|
||||
![]() Попробуйте в процедуре таймера прописать TimerEnabled = false, возможно он повторно срабатывает, а форма и так уже ShowModal
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
||||
|
||||
![]() в первый раз функция таймера вызвала ShowModal, во второй раз ей уже лень) останавливай таймер в его же функции в этом случае перед ShowModal.
Пишу программы за еду. __________________ |
#6
|
|||
|
|||
![]() Вот код Form3
Код:
unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm3 = class(TForm) Button1: TButton; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form3: TForm3; implementation uses Unit4; {$R *.dfm} procedure TForm3.Button1Click(Sender: TObject); begin Timer1.Enabled:=true; end; procedure TForm3.Timer1Timer(Sender: TObject); begin Form4.ShowModal(); Timer1.Enabled:=false; end; end. Код:
unit Unit4; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm4 = class(TForm) private { Private declarations } public { Public declarations } end; var Form4: TForm4; implementation {$R *.dfm} end. Не работает!! Че не так Плиз!!! |
#7
|
||||
|
||||
![]() Повторил ваш код - у меня работает правильно (видимо у вас точно пятница 13е наступила :-), всё же в таймере его первым выключать попробуйте, перед показом формы
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#8
|
|||
|
|||
![]() Да вы правы АБСОЛЮТНО!
Конечно же надо было перед вызовом!!!! Спасибо, обратили внимание... |