Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.03.2015, 14:32
FreddyZSX FreddyZSX вне форума
Прохожий
 
Регистрация: 20.06.2014
Сообщения: 14
Версия Delphi: Delphi 2010
Репутация: 10
По умолчанию Старая тема ShowModal() с новыми моментами

Здравствуйте!

В определенный момент хочу вызвать модально форму.
При вызове метода ShowModal() выскакивает сообщение "Cannot make a visible window modal".
Причем по клику кнопки форма показывается - все нормально, а по условию (например по кнопке запускаю таймер и уже таймер вызывает форму) вываливается эта ошибка. Причем форма показывается на пол секунды, исчезает, а потом эта ошибка...

Пролейте свет.... В свойствах вызываемой формы Visible false, Enabled true - все как люди здесь подсказывали...
Ответить с цитированием
  #2  
Старый 13.03.2015, 14:55
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

косяк в программе где-то Visible включает, потому что:
Цитата:
форма показывается на пол секунды
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 13.03.2015, 15:16
FreddyZSX FreddyZSX вне форума
Прохожий
 
Регистрация: 20.06.2014
Сообщения: 14
Версия Delphi: Delphi 2010
Репутация: 10
По умолчанию

Представь!!! Создаю вообще новый проект и две пустых формы Form1 Form2. На Form1 ставлю кнопку и таймер. В дизайнере ставлю свойство Timer Enabled - false;
По кнопке ставлю свойство Timer.Enabled - true; Функция таймера вызывает Form2.ShowModal(); и вываливает эту ошибку!!!! Если просто в кнопке поставить Form2.ShowModal() (не через таймер) - все работает...
Ответить с цитированием
  #4  
Старый 13.03.2015, 15:51
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Попробуйте в процедуре таймера прописать TimerEnabled = false, возможно он повторно срабатывает, а форма и так уже ShowModal
Ответить с цитированием
  #5  
Старый 13.03.2015, 15:53
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию тяпница 13-е

в первый раз функция таймера вызвала ShowModal, во второй раз ей уже лень) останавливай таймер в его же функции в этом случае перед ShowModal.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 13.03.2015, 16:00
FreddyZSX FreddyZSX вне форума
Прохожий
 
Регистрация: 20.06.2014
Сообщения: 14
Версия Delphi: Delphi 2010
Репутация: 10
По умолчанию

Вот код 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.
Вот код Form4
Код:
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.03.2015, 16:10
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Повторил ваш код - у меня работает правильно (видимо у вас точно пятница 13е наступила :-), всё же в таймере его первым выключать попробуйте, перед показом формы
Ответить с цитированием
  #8  
Старый 13.03.2015, 16:22
FreddyZSX FreddyZSX вне форума
Прохожий
 
Регистрация: 20.06.2014
Сообщения: 14
Версия Delphi: Delphi 2010
Репутация: 10
По умолчанию

Да вы правы АБСОЛЮТНО!
Конечно же надо было перед вызовом!!!!

Спасибо, обратили внимание...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:39.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025