botva2

DLL botva2 0.9.9.156

Нет прав для скачивания

Tjeyn

Новичок
А как в новом примере где отрисован лист, использовать секцию Components?
 

South

Знаток
Проверенный

nik1967

Old Men
Проверенный
Для пользователей расширенной версии от restools позволил себе немного переделать модули и примеры от уважаемого South'а. Так, как в расширенной версии существует функция CallbackAddr, то я избавился от библиотеки CallbackCtrl.dll.
 

Вложения

sergey3695

Ветеран
Модератор
CheckListBox_Example со стандартным скроллом. Может и пригодится кому.
p.s.
Код:
var
  WFree: boolean;
//...
//Int Wizard
  WFree:= True;
// Dein.
if WFree then
    WizardForm.Free;
 

Вложения

Tjeyn

Новичок
Как с примера "CheckListBox_Example" можно прикрепить чеки от радиобутонов на переменную компонентов ISDone?
Код:
    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;
 

nik1967

Old Men
Проверенный
Tjeyn, ну наверно так:
Код:
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;
В работоспособности кода не уверен, не проверял, но по идее должно быть так.
 

sergey3695

Ветеран
Модератор
Tjeyn, или так
Код:
#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
проверял уже. и выше тоже.
 
Последнее редактирование:

Tjeyn

Новичок
А еще не подскажите как для софта чекбокс прикрепить, тоесть для секции [Run] ?
 
Последнее редактирование:

nik1967

Old Men
Проверенный
Tjeyn, ну тут 2 варианта:
Код:
#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;
 

Alloc

Новичок
Ребята, будьте добры, подскажите или дайте пример как при помощи Ботвы добавить свои картинки в NewCheckListBox (На странице компонентов и задач)... Или как то иначе можно? Потому что ISSkin их не меняет... Искал у вас на сайте скрипты где это реализовано, но что то не нашел...

Вот как то так:

Заранее спасибо!
 

Alloc

Новичок
Насчет моего вопроса... я нашел способ:

Код:
[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;
скажите, я правильно все сделал?
 

South

Знаток
Проверенный
Alloc, либо descctrl.dll
либо полностью создавать чеклистбокс с помощью ботвы
 

Alloc

Новичок
Скажите пожалуйста, как средствами ботвы нарисовать CheckListBox вот такого плана:



Искал примеры в интернете - ничего толком не нашел...
 

YURSHAT

Тех. админ
Администратор
Начиная с 0.9.8 ботва умеет рисовать CheckListBox. В комплекте есть семпл
 

South

Знаток
Проверенный
Alloc, возможно в том примере был попиксельный скролл (при скролле смещение происходит на 1-3 пикселя), поэтому там "плавно".
при наличии большого списка очень утомляет его прокручивать, поэтому в моем примере при скролле происходит смещение на высоту айтема, как у стандартных виндовых объектов
зы ну и никто не мешает взять и переписать скроллинг в примере, как тебе нужно
 

Alloc

Новичок
закрыть inno и запустить скомпилированный файл и убедиться в плавности.
да действительно, стало лучше.

зы ну и никто не мешает взять и переписать скроллинг в примере, как тебе нужно
спасибо за ответ. Вы не подскажите, как сделать то самое смещение на 1-3 пикселя для более плавной прокрутки? Если это не сложно конечно)
Я буду очень благодарен.
 
Сверху