Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Tco 03

Пользователь


Сообщения: 90
Благодарности: 24

Профиль | Отправить PM | Цитировать


Johny777
Цитата Johny777:
Ну, как известно с древних времён - каждый извращается по своему »
Что верно, то верно

Господа, помогите, пожалйста, решить проблему, кто знает в чём дело и возможно ли избавиться от ошибки?
Суть в следующем: На странице выбора папки установки создаю кнопку, кустомную форму и чекбокс. При нажатии на кнопку проверяется свободное место на диске. Необходимое место считывается с файла .inf Если свободного места достаточно, то выдаётся сообщение "YES!!!" и выберается чекбокс - если свободного места не достаточно, то выдаётся сообщение "NO!!!" и появляется кустомная форма. Проблема в том, что это работает только со второй попытки, то есть свободного места достаточно, но при этом появляется сообщение "NO!!!" и появляется кустомная форма. Сразу же при повторном нажатии на кнопку этого больше не происходит - выдаётся сообщение "YES!!!" и выбирается чекбокс. При нехватке свободного места на диске функция работает без проблем! Почему так происходит при первом нажатии на кнопку? Вот этот самый код:
читать дальше »
Код: Выделить весь код
[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirName={pf}\MyApp

[ Code]
var
  MyForm: TSetupForm;
  MyButton: TButton;
  FreeMB, TotalMB: Cardinal;
  NewCheckBox1: TNewCheckBox;
  MyFile: String;

function MyFormExec: boolean;
var
  Path: String;
begin
  Path:= ExtractFileDrive(WizardForm.DirEdit.Text);
  GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
  
  MyForm:= CreateCustomForm;
with MyForm do begin
  Width:= ScaleX(798);
  Height:= ScaleY(543);
  Position:= poScreenCenter;
  MyForm.ShowModal;
end;
end;

procedure MyButtonOnClick(Sender: TObject);
begin
if FreeMb < GetIniInt('Info', 'Size', 0, 0, 0, MyFile) then
begin
  MsgBox(ExpandConstant('NO!!!'), mbCriticalError, mb_Ok);
  MyFormExec;
end else begin
  MsgBox(ExpandConstant('YES!!!'), mbInformation, mb_Ok);
  NewCheckBox1.Checked:= True;
end;
end;

procedure InitializeWizard();
begin
  MyFile:= 'C:\Info.inf';
  
  MyButton:= TButton.Create(WizardForm);
with MyButton do begin
  Left:= WizardForm.DirBrowseButton.Left;
  Top:= WizardForm.DirBrowseButton.Top + ScaleY(30);
  Width:= WizardForm.DirBrowseButton.Width;
  Height:= WizardForm.DirBrowseButton.Height;
  Caption:= 'Click Me';
  OnClick:= @MyButtonOnClick;
  Parent:= WizardForm.SelectDirPage;
end;

  NewCheckBox1:= TNewCheckBox.Create(WizardForm);
with NewCheckBox1 do begin
  Left:= MyButton.Left + ScaleY(30);
  Top:= MyButton.Top + ScaleY(30);
  Width:= ScaleX(12);
  Height:= ScaleY(12);
  Parent:= WizardForm.SelectDirPage;
end;
end;

Отправлено: 13:42, 20-02-2013 | #1690