View Single Post
  #6  
Old 13-03-2017, 02:09
Gupta Gupta is offline
Banned
 
Join Date: Aug 2016
Location: https://t.me/pump_upp
Posts: 399
Thanks: 139
Thanked 715 Times in 231 Posts
Gupta is on a distinguished road
Send a message via ICQ to Gupta Send a message via AIM to Gupta Send a message via Yahoo to Gupta
Someone via PM asked me:
How to Create Buttons in Installers?
Actually, there can be two ways:
First, Playing with pascal and use panels or listviews to create buttons and use ONMOUSEDOWN event to trigger events
For example, See WPI Script of BLUR or Flat Modules(Module\Form.Functions.iss)

Second, can be using libraries to create buttons such as botva2 or ISab.dll
btnprint.iss (botva2.dll)
Code:
;Created by South.Tver 02.2010

;пример работы с BtnGetText, BtnSetText, BtnSetFontColor, BtnSetTextAlignment

#include "Modules\botva2.iss"

[Setup]
AppName=BtnPrint by South.Tver
AppVerName=BtnPrint by South.Tver
DefaultDirName={pf}\BtnPrint
OutputBaseFilename=setup

[Files]
Source: Files\*; Flags: dontcopy

[;Code]
type
  TTimerProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);

var
  hBtn:HWND;
  CurSimbol:integer;
  TimerID:Longword;
  TestText:ansistring;

function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord; external '[email protected] stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external '[email protected] stdcall';
function WrapTimerProc(callback:TTimerProc; paramcount:integer):LongWord; external 'wrapcallbackaddr@files:CallbackCtrl.dll stdcall';

procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
begin
  CurSimbol:=CurSimbol+1;
  if CurSimbol>Length(TestText) then begin
    KillTimer(0, TimerID);
    Exit;
  end;
  BtnSetText(hBtn,PAnsiChar(BtnGetText(hBtn)+TestText[CurSimbol]));
end;

procedure BtnClick(hBtn:HWND);
begin
  if not BtnGetChecked(hBtn) then begin
    KillTimer(0, TimerID);
    BtnSetText(hBtn,'');
    CurSimbol:=0;
  end else TimerID:=SetTimer(0, 0, 100, WrapTimerProc(@OnTimer, 4));
end;

function InitializeSetup:boolean;
begin
  if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
  if not FileExists(ExpandConstant('{tmp}\CallbackCtrl.dll')) then ExtractTemporaryFile('CallbackCtrl.dll');
  Result:=True;
end;

procedure InitializeWizard;
begin
  with WizardForm do begin
    InnerNotebook.Hide;
    OuterNotebook.Hide;
    Bevel.Hide;
    Width:=700;
    Height:=700;
    NextButton.Top:=ClientHeight-50;
    CancelButton.Top:=ClientHeight-50;
  end;

  hBtn:=BtnCreate(WizardForm.Handle,-50,-50,WizardForm.ClientWidth+100,WizardForm.ClientHeight+100,'button2.png',18,True);
  CurSimbol:=0;

  TestText:='ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ '+
            'Эта лицензия действительна только для граждан стран бывшего СССР. '+
            'Граждане других стран обязаны пользоваться shareware-версией '+
            'программы, которую можно бесплатно скачать с сайта '+
            'http://www.ice-graphics.com/ICEReader '+
            'Программа ICE Book Reader Professional Russian Edition '+
            'распространяется как freeware. '+
            'Все авторские права на программу ICE Book Reader Professional Russian '+
            'Edition принадлежат ICE Graphics. '+
            'Граждане стран бывшего СССР имеют право использовать данную версию '+
            'программы ICE Book Reader Professional Russian Edition в '+
            'некоммерческих целях бесплатно. '+
            'Если условия данной лицензии не устраивают попадающих под ее действие '+
            'лиц, они имеют право воспользоваться на общих основаниях лицензией, '+
            'приведенной в файле License.txt. Для коммерческого использования '+
            'программой ICE Book Reader Professional Russian Edition необходимо '+
            'получить письменное разрешение ICE Graphics ([email protected]). '+
            'ICE Graphics не гарантирует оперативной технической поддержки. '+
            'ICE Graphics оставляет за собой право отменить действие данной '+
            'лицензии для любой из следующих версий программы ICE Book Reader '+
            'Professional Russian Edition. '+
            'Программа ICE Book Reader Professional Russian Edition '+
            'распространяется свободно, при условии того, что настоящий дистрибутив '+
            'не изменен. Ни одно частное лицо или организация не может брать плату '+
            'за распространение ICE Book Reader Professional Russian Edition без '+
            'письменного разрешения ICE Graphics. '+
            'ПРОГРАММА ICE Book Reader Professional Russian Edition ПОСТАВЛЯЕТСЯ ПО '+
            'ПРИНЦИПУ "КАК ЕСТЬ" ("AS IS"). НИКАКИХ ГАРАНТИЙ НЕ ПРИЛАГАЕТСЯ И НЕ '+
            'ПРЕДУСМАТРИВАЕТСЯ. ВЫ ИСПОЛЬЗУЕТЕ ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ НА СВОЙ '+
            'РИСК. ICE Graphics НЕ БУДЕТ ОТВЕЧАТЬ НИ ЗА КАКИЕ ПОТЕРИ ИЛИ ИСКАЖЕНИЯ '+
            'ДАННЫХ, ЛЮБУЮ УПУЩЕННУЮ ВЫГОДУ В ПРОЦЕССЕ ИСПОЛЬЗОВАНИЯ ИЛИ '+
            'НЕПРАВИЛЬНОГО ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ. ';

  BtnSetTextAlignment(hBtn,40,30,balLeft);
  BtnSetFontColor(hBtn,$DAE369,$FF0000,$00FF00,$0000FF);
  BtnSetEvent(hBtn,BtnClickEventID,WrapBtnCallback(@BtnClick,1));
end;

procedure DeinitializeSetup;
begin
  KillTimer(0, TimerID);
  gdipShutdown;
end;
botva2_0.9.9 attached ( Open to see more )
Attached Files
File Type: 7z botva2_0.9.9.156.7z (1.29 MB, 180 views)
Reply With Quote
The Following 6 Users Say Thank You to Gupta For This Useful Post:
Cesar82 (28-03-2017), EzzEldin16 (05-01-2018), Razor12911 (14-03-2017), Simorq (27-02-2018), TheTimickRus (13-03-2017), TWOELV (13-03-2017)