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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.04.2010, 18:07
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
Восклицание В чем может быть ошибка?

Здравствуйте. Написал код, который скачивает с сервера файл, проверяет этот файл и если условие верно, то показывает одно окно, если не верно, происходит выход из формы.
Это я образно описал, вот сам код, с комментариями:
PHP код:
procedure TForm9.FormShow(SenderTObject);
var 
FileOnNetLocalFileNamestring;
initinifile;
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,LocalFileNamethen //Если файл скачан успешно 
    
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
и окно не закрывается!
В чем может быть проблема?
Ответить с цитированием
  #2  
Старый 07.04.2010, 18:42
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Если (в данном случае) в переменной form9 хранится ссылка на объект класса TForm9, то корректность вызова метода Close внутри метода FormShow - сомнительна ...
Ответить с цитированием
  #3  
Старый 07.04.2010, 18:45
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию

Цитата:
Сообщение от roamer
Если (в данном случае) в переменной form9 хранится ссылка на объект класса TForm9, то корректность вызова метода Close внутри метода FormShow - сомнительна ...
А как возможно тогда реализовать закрытие формы сразу поле showmessage?

Последний раз редактировалось T-dayne, 07.04.2010 в 18:48.
Ответить с цитированием
  #4  
Старый 07.04.2010, 18:59
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

А нужно ли размещать всю логику в методе FormShow ?

Может быть лучше что-то вроде этого :
Код:
type
  TForm9 = class(TForm)
    ...
    ...            
  private
    { Private declarations }
  public
    { Public declarations }
    function Execute(нужные параметры) : boolean;

  end;

var
  form9: TForm9;

function TForm9.Execute(нужные параметры) : boolean;
begin
  Result:=false;

  ...инициализация того, что надо
  
  if ShowModal = mrOk then begin
    Result:=true;
     ... Действия, если все OK
  end
  else begin
     ... иначе ...
  end;

end;

Ответить с цитированием
  #5  
Старый 07.04.2010, 19:17
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию

Цитата:
Сообщение от roamer
А нужно ли размещать всю логику в методе FormShow ?

Может быть лучше что-то вроде этого :
Код:
type
  TForm9 = class(TForm)
    ...
    ...            
  private
    { Private declarations }
  public
    { Public declarations }
    function Execute(нужные параметры) : boolean;

  end;

var
  form9: TForm9;

function TForm9.Execute(нужные параметры) : boolean;
begin
  Result:=false;

  ...инициализация того, что надо
  
  if ShowModal = mrOk then begin
    Result:=true;
     ... Действия, если все OK
  end
  else begin
     ... иначе ...
  end;

end;

совсем ничего не понятно...
Код:
if ShowModal = mrOk
это вообще не имеет место быть в моем коде вроде... там нет кнопок "ок" "нет", нужно просто закрыть форму после выполения showmessage() остальное работает нормально
Ответить с цитированием
  #6  
Старый 07.04.2010, 19:37
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Цитата:
Сообщение от T-dayne
совсем ничего не понятно...
Код:
if ShowModal = mrOk
это вообще не имеет место быть в моем коде вроде... там нет кнопок "ок" "нет", нужно просто закрыть форму после выполения showmessage() остальное работает нормально
Да, но именно это Вам система и разрешает ...
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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