Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2010, 21:27   #1
T-dayne
Пользователь
 
Аватар для T-dayne
 
Регистрация: 07.02.2010
Сообщений: 54
По умолчанию Найти выход и обойти ошибку. возможно?

Здравствуйте. Написал код, который скачивает с сервера файл, проверяет этот файл и если условие верно, то показывает одно окно, если не верно, происходит выход из формы.
Это я образно описал, вот сам код, с комментариями:
Код:
procedure TForm9.FormShow(Sender: TObject);
var FileOnNet, LocalFileName: string;
ini: tinifile;
begin
   gif.Visible:=true;
   label1.Visible:=true;
   form9.Height:=80;
   memo1.Visible:=false;
   button1.Visible:=false;
   button2.Visible:=false; //возвращаем исходные данные окна

   FileOnNet:='http://127.0.0.1/mysite/finalv.ini';
   LocalFileName:='finalv.ini';
   label1.Caption:='Подключаемся...';
   if GetInetFile(FileOnNet,LocalFileName) then //Если файл скачан успешно 
    begin
    label1.Caption:='Проверка наличия версии...';
    ini:=tinifile.Create(extractfiledir(application.ExeName)+'\finalv.ini');
     if ini.ReadInteger('main', 'finalv', 1)>1331033 then //сравниваем версию на сайте и версию программы
      begin
      gif.Visible:=false; //если есть новая версия активируем текст и кнопки обновления
      label1.Visible:=false;
      form9.Height:=134;
      memo1.Visible:=true;
      button1.Visible:=true;
      button2.Visible:=true;
      end
     else
      begin //если при сравнении версии одинаковы то
       showmessage('У вас самая последняя версия'); 
       form9.Close;
      end;
    end
     else //если файл скачать не удалось то выводим:
      showmessage('Не удалось подключиться к серверу обновления!');

end;
Так вот, все работает прекрасно, но если вдруг получается так, что версии одинаковы, и обновление не требуется, то на месте кода:
Код:
showmessage('У вас самая последняя версия'); 
       form9.Close;
Выползает ошибка
Цитата:
Cannot change visible in OnShow or OnHide
и окно не закрывается!
Скорее всего, ошибка возникает из=за того, что я пытаюсь вызвть закрытие формы при событии ShowModal, так вот вопрос как мне можно произвести закрытие формы после этого showmessage() ?
Язык дельфи...

Последний раз редактировалось Stilet; 08.04.2010 в 07:58.
T-dayne вне форума Ответить с цитированием
Старый 08.04.2010, 05:30   #2
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

Так тут же черным по английски написано: в событии FormShow нельзя выполнять OnShow и OnHide. зделай отдельную функция для прятания окна.
принимаю благодарности в письменном виде( весы слева)...
MaxNik2009 вне форума Ответить с цитированием
Старый 08.04.2010, 07:59   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Такие вещи нужно не в OnShow делать а в OnCreate.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.04.2010, 08:24   #4
T-dayne
Пользователь
 
Аватар для T-dayne
 
Регистрация: 07.02.2010
Сообщений: 54
По умолчанию

Цитата:
Сообщение от MaxNik2009 Посмотреть сообщение
зделай отдельную функция для прятания окна.
А как реализовать? Попробовал запихнуть close в отдельную процедуру и запустить ее из под OnShow , ошибки нет, но программа виснет наглухо в этот момент
T-dayne вне форума Ответить с цитированием
Старый 08.04.2010, 09:44   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

показываю ShowModal значит есть кнопка закрывающая окно пусть это будет кнопка buttonOk тогда

form9.close; замени form9.buttonOk.click;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 08.04.2010, 15:49   #6
T-dayne
Пользователь
 
Аватар для T-dayne
 
Регистрация: 07.02.2010
Сообщений: 54
По умолчанию

evg_m
После "нажатия" кнопки программа виснет наглухо как и в посте
T-dayne вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Indy. Как обойти ошибку 403. viktorall Работа с сетью в Delphi 2 27.03.2010 00:52
Найти ошибку Uvaroff Помощь студентам 3 13.01.2010 01:45
DOA компоненты, как обойти ошибку? cherry25 БД в Delphi 6 10.03.2009 13:26
Возможно ли найти работу на дому??? Killer_djon Фриланс 9 11.05.2007 14:15