Имя пользователя:
Пароль:
 

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

Аватара для Gnom_aka_Lexander

Ветеран


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

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


Цитата Blid:
Подскажите как сделать такую фиху »
читать дальше »
Код: Выделить весь код
#define NeedSize 4380
#define NeedInstallSize 7890

[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp

[_code]
var
  SpaceLabel:array[0..3]of TLabel;
  FreeMB, TotalMB: Cardinal;

function NumToStr(Float: Extended): String;
begin
  Result:= format('%.2n', [Float]); StringChange(Result, ',', '.');
  while (Result[Length(Result)] = '0')or((Result[Length(Result)] = '.')and(Pos('.', Result) > 0)) do
    SetLength(Result, Length(Result)-1);
end;

function MbOrTb(Float: Extended): String;
begin
  if Float < 1024 then Result:= NumToStr(Float)+' Мб' else
    if Float/1024 < 1024 then Result:= NumToStr(Float/1024)+' Гб' else
      Result:= NumToStr(Float/(1024*1024))+' Тб';
end;

procedure DirEditOnChange(Sender: TObject);
var Drive: String;
begin
  Drive:= ExtractFileDrive(WizardForm.DirEdit.Text);
  GetSpaceOnDisk(Drive, True, FreeMB, TotalMB);
  SpaceLabel[0].Caption:= 'Всего места на диске: '+MbOrTb(TotalMB);
  SpaceLabel[1].Caption:= 'Доступно места на диске: '+MbOrTb(FreeMB)+' ('+IntToStr(round(FreeMB*100/TotalMB))+'%)';
  SpaceLabel[2].Caption:= 'Требуется места для установки: '+MbOrTb({#NeedInstallSize});
  SpaceLabel[3].Caption:= 'Требуется места на диске: '+MbOrTb({#NeedSize});
  WizardForm.NextButton.Enabled:= (FreeMB>{#NeedInstallSize})and(FreeMB>{#NeedSize});
  WizardForm.SelectDirPage.Repaint;
end;

procedure InitializeWizard();
var i:integer;
begin
  { SpaceLabel }
  for i:=0 to 3 do
   begin
   SpaceLabel[i]:= TLabel.Create(WizardForm);
    with SpaceLabel[i] do
    begin
      Transparent:=True;
      Parent:= WizardForm.SelectDirpage;
      SetBounds(ScaleX(7),ScaleY(115+i*20),ScaleX(300),ScaleY(17));
    end;
  end;
  WizardForm.DirEdit.OnChange:=@DirEditOnChange;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID=wpSelectDir then begin
    DirEditOnChange(nil)
  end;
end;
Подредактировал пример - сделал покороче

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Последний раз редактировалось Gnom_aka_Lexander, 16-10-2011 в 21:05.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:00, 16-10-2011 | #3607