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