Добрый день всем.
Можно ли разделить секцию [Tasks] на 2 странички? У меня там сейчас 2 независимые группы exclusive опций. После добавления новых вариантов в одну из групп они перестали помещаться на одну страничку без скроллбара.
Видел в архиве этой темы пример кода по созданию своей странички с чекбоксом и сохранению его состояния в переменной кода. Но остается непонятным как активировать выбранный вариант в группе опций.
Может есть какой-нибудь другой способ разделить группы по страничкам?
Farser21,
R.i.m.s.k.y., для сравнения версий я написал себе вот такой велосипед:
Код:
type
TVersionInfo = record
Major, Minor, Release, Build: WORD;
end;
function GetFileVersion(const FileName: string): TVersionInfo;
var
VerMS, VerLS: Cardinal;
begin
if GetVersionNumbers(FileName, VerMS, VerLS) then
begin
Result.Major := VerMS shr 16;
Result.Minor := VerMS and $FFFF;
Result.Release := VerLS shr 16;
Result.Build := VerLS and $FFFF;
end
else
begin
Result.Major := 0;
Result.Minor := 0;
Result.Release := 0;
Result.Build := 0;
end;
end;
function GetInt(var Str: String): Integer;
var
DotPos: Integer;
begin
Result := 0;
DotPos := Pos('.', Str);
if DotPos > 0 then
begin
Result := StrToIntDef(Copy(Str, 1, DotPos - 1), 0);
Str := Copy(Str, DotPos + 1, Length(Str) - DotPos);
end
else
begin
Result := StrToIntDef(Str, 0);
Str := '';
end;
end;
function StrToFileVer(const FileVerStr: String): TVersionInfo;
var
LocalStr: String;
begin
LocalStr := FileVerStr;
Result.Major := GetInt(LocalStr);
Result.Minor := GetInt(LocalStr);
Result.Release := GetInt(LocalStr);
Result.Build := GetInt(LocalStr);
end;
function CompareVer(Ver1, Ver2: TVersionInfo): Integer;
// Ver1 > Ver2 ====> result > 0
// Ver1 = Ver2 ====> result = 0
// Ver1 < Ver2 ====> result < 0
begin
Result := Integer(Ver1.Major) - Integer(Ver2.Major);
if Result = 0 then
begin
Result := Integer(Ver1.Minor) - Integer(Ver2.Minor);
if Result = 0 then
begin
Result := Integer(Ver1.Release) - Integer(Ver2.Release);
if Result = 0 then
begin
Result := Integer(Ver1.Build) - Integer(Ver2.Build);
end;
end;
end;
end;
function InitializeSetup(): Boolean;
var
BSVer, UpdateVer, MinAppVer: TVersionInfo;
begin
// Проверка на совместимость установленной версии с этим апдейтом
BSVer := GetFileVersion('MyPath\MyApp.exe');
UpdateVer := StrToFileVer(ExpandConstant('{#MyAppVersion}'));
MinAppVer := StrToFileVer(ExpandConstant('{#MinAppVersionForUpdate}'));
Result := CompareVer(MinAppVer, BSVer) <= 0;
if not Result then
begin
MsgBox(Format(ExpandConstant('{cm:MyAppIsTooOld}'), [BSVer.Major, BSVer.Minor, BSVer.Release, BSVer.Build, MinAppVer.Major, MinAppVer.Minor, MinAppVer.Release, MinAppVer.Build]), mbError, MB_OK);
Exit;
end;
Result := CompareVer(UpdateVer, BSVer) >= 0;
if not Result then
begin
MsgBox(Format(ExpandConstant('{cm:MyAppIsNewer}'), [BSVer.Major, BSVer.Minor, BSVer.Release, BSVer.Build]), mbError, MB_OK);
Exit;
end;
// ===============================================================
end;