Johny777
Цитата Johny777:
Ну, как известно с древних времён - каждый извращается по своему »
|
Что верно, то верно
Господа, помогите, пожалйста, решить проблему, кто знает в чём дело и возможно ли избавиться от ошибки?
Суть в следующем: На странице выбора папки установки создаю кнопку, кустомную форму и чекбокс. При нажатии на кнопку проверяется свободное место на диске. Необходимое место считывается с файла .inf Если свободного места достаточно, то выдаётся сообщение "YES!!!" и выберается чекбокс - если свободного места не достаточно, то выдаётся сообщение "NO!!!" и появляется кустомная форма. Проблема в том, что это работает только со второй попытки, то есть свободного места достаточно, но при этом появляется сообщение "NO!!!" и появляется кустомная форма. Сразу же при повторном нажатии на кнопку этого больше не происходит - выдаётся сообщение "YES!!!" и выбирается чекбокс. При нехватке свободного места на диске функция работает без проблем! Почему так происходит при первом нажатии на кнопку? Вот этот самый код:
читать дальше »
Код:
![Выделить весь код](images/misc/selectcode.png)
[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;