Узнать больше об этом обновлении...Переписал BtnGetText, CheckBoxGetText (убрал статические массивы).
Добавил пару примеров.
Все примеры проверены на ansi/unicode версиях Inno Setup (5.5.5)
var
WFree: boolean;
//...
//Int Wizard
WFree:= True;
// Dein.
if WFree then
WizardForm.Free;
TmpValue:=1;
if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue;
TmpValue:=TmpValue*2;
if IsComponentSelected('text\eng') then Comps1:=Comps1+TmpValue;
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\rus') then Comps1:=Comps1+TmpValue;
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue;
TmpValue:=1;
if clbIsItemCheckedByName(lb, 'RadioButton3Name') then Comps1:=Comps1+TmpValue;
TmpValue:=TmpValue*2;
if clbIsItemCheckedByName(lb, 'RadioButton4Name') then Comps1:=Comps1+TmpValue;
TmpValue:=TmpValue*2;
if clbIsItemCheckedByName(lb, 'RadioButton5Name') then Comps1:=Comps1+TmpValue;
TmpValue:=TmpValue*2;
if clbIsItemCheckedByName(lb, 'RadioButton6Name') then Comps1:=Comps1+TmpValue;
#ifdef Components
TmpValue:=1;
if clbIsItemCheckedByIndex(lb,1) then Comps1:=Comps1+TmpValue;
TmpValue:=TmpValue*2;
if clbIsItemCheckedByIndex(lb,2) then Comps1:=Comps1+TmpValue;
TmpValue:=TmpValue*2;
if clbIsItemCheckedByIndex(lb,4) then Comps1:=Comps1+TmpValue;
TmpValue:=TmpValue*2;
if clbIsItemCheckedByIndex(lb,5) then Comps1:=Comps1+TmpValue;
#endif
#ifndef IS_ENHANCED
#error Enhanced edition of Inno Setup (restools) is required to compile this script
#endif
#include "Modules\botva2.iss"
#include "Modules\CheckListBox.iss"
[Setup]
AppName=CheckListBox by South.Tver
AppVerName=CheckListBox by South.Tver
DefaultDirName={pf}\CheckListBox
OutputBaseFilename=setup
[Files]
Source: Files\*; Flags: dontcopy
[Run]
Filename: "{src}\DirectX\DXSETUP.exe"; WorkingDir: "{src}\DirectX"; Parameters: "/silent"; Check: CheckDirectX; Flags: waituntilterminated skipifdoesntexist;
[Code]
var
lb:integer;
function CheckDirectX: boolean;
begin
Result:= clbIsItemCheckedByName(lb, 'DirectX');
end;
procedure InitializeWizard;
begin
ExtractTemporaryFile('botva2.dll');
with WizardForm do begin
InnerNotebook.Hide;
OuterNotebook.Hide;
Bevel.Hide;
Center;
end;
ImgLoad(WizardForm.Handle,'nfs.jpg',0,0,WizardForm.ClientWidth,WizardForm.ClientHeight,True,True);
ImgApplyChanges(WizardForm.Handle);
//*******************************************************
lb:= CheckListBoxCreate(WizardForm,50,100,400,200);
clbAddChkBoxItem(lb,'Redist','Дополнительное программное обеспечение:',0,False);
clbAddChkBoxItem(lb,'DirectX','Установить\Обновить Microsoft DirectX',1,False);
//*******************************************************
end;
procedure DeinitializeSetup;
begin
gdipShutdown;
WizardForm.Free;
end;
#ifndef IS_ENHANCED
#error Enhanced edition of Inno Setup (restools) is required to compile this script
#endif
#include "Modules\botva2.iss"
#include "Modules\CheckListBox.iss"
[Setup]
AppName=CheckListBox by South.Tver
AppVerName=CheckListBox by South.Tver
DefaultDirName={pf}\CheckListBox
OutputBaseFilename=setup
[Files]
Source: Files\*; Flags: dontcopy
[Code]
var
lb:integer;
procedure InitializeWizard;
begin
ExtractTemporaryFile('botva2.dll');
with WizardForm do begin
InnerNotebook.Hide;
OuterNotebook.Hide;
Bevel.Hide;
Center;
end;
ImgLoad(WizardForm.Handle,'nfs.jpg',0,0,WizardForm.ClientWidth,WizardForm.ClientHeight,True,True);
ImgApplyChanges(WizardForm.Handle);
//*******************************************************
lb:= CheckListBoxCreate(WizardForm,50,100,400,200);
clbAddChkBoxItem(lb,'Redist','Дополнительное программное обеспечение:',0,False);
clbAddChkBoxItem(lb,'DirectX','Установить\Обновить Microsoft DirectX',1,False);
//*******************************************************
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
ResultCode: Integer;
begin
case CurStep of
ssPostInstall: if clbIsItemCheckedByName(lb, 'DirectX') then
if FileExists(ExpandConstant('{src}\DirectX')) then
Exec(ExpandConstant('{src}\DirectX\DXSETUP.exe'), '/silent', ExpandConstant('{src}\DirectX'), SW_HIDE, ewWaitUntilTerminated, ResultCode);
end;
end;
procedure DeinitializeSetup;
begin
gdipShutdown;
WizardForm.Free;
end;
Никак. Рисуйте CheckListBox средствами ботвыРебята, будьте добры, подскажите или дайте пример как при помощи Ботвы добавить свои картинки в NewCheckListBox
[Setup]
BitmapResource=BtnBmp:bmpFiles\btnimage.bmp
[Files]
Source: bmpFiles\*; Flags: dontcopy recursesubdirs createallsubdirs;
[Code]
var
BtnBMP,BMP: TBitmapImage;
procedure InitializeWizard();
begin
BtnBMP := TBitmapImage.Create(WizardForm);
BtnBMP.Bitmap.LoadFromResourceName(HInstance, '_IS_BtnBmp');
WizardForm.ComponentsList.LoadBtnBmpFromBitmap(BtnBMP.Bitmap);
WizardForm.TasksList.LoadBtnBmpFromBitmap(BtnBMP.Bitmap);
end;
спасибо большое, но мне кажется не хватает плавности при скроллинге... это можно как то побороть?Начиная с 0.9.8 ботва умеет рисовать CheckListBox. В комплекте есть семпл
закрыть inno и запустить скомпилированный файл и убедиться в плавности.но мне кажется не хватает плавности при скроллинге... это можно как то побороть
да действительно, стало лучше.закрыть inno и запустить скомпилированный файл и убедиться в плавности.
спасибо за ответ. Вы не подскажите, как сделать то самое смещение на 1-3 пикселя для более плавной прокрутки? Если это не сложно конечно)зы ну и никто не мешает взять и переписать скроллинг в примере, как тебе нужно
неужели никто не знает как это сделать?Вы не подскажите, как сделать то самое смещение на 1-3 пикселя для более плавной прокрутки?