![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
|||
|
|||
|
Да вы правы АБСОЛЮТНО!
Конечно же надо было перед вызовом!!!! Спасибо, обратили внимание... |