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 )