Nie wiem czemu ma służyć ten wynalazek ale niech będzie...
Wiadomo trzeba zrobić sekcję [CODE*] (bez * przed ] ale skrypt forum coś psuje posta i musiałem dodać) a w niej procedurę InitializeWizard (jeżeli istnieje to jest wywoływana przed pojawieniem się okienka instalatora (coś mniej więcej jak OnCreate formy w Delphi) po to aby ustawić procedurę zdarzenia OnClick dla chceckbox'a ja akurat tworze nową zakładkę (po stronie powitalnej) i na niej chceckboxa. No i jest procedura MyCheckBoxClickEvent tam sprawdzasz czy zaznaczony czy nie i podejmujesz odpowiednie działania jak w przykładzie poniżej:
[code*]
//inport funkcji WinApi
function SystemParametersInfo(uiAction, uiParam: LongWord;
var Metrics: TRect; fWinIni: LongWord): LongBool;
external '[email protected] stdcall';
const
SPI_GETWORKAREA = $00000030; //potrzebna stala
PLUS_W = 100; //o ile zwiekszamy szerokosc
PLUS_H = 50; //o ile zwiekszamy wysokosc
var
DefWizSizeRect: TRect; //tu zapamietamy rozmiar i polozenie przed zmiana
MyPage: TWizardPage;
function GetWorkArea: TRect; //funkcja pobiera rozmiar pulpitu Windows
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, Result, 0);
end;
procedure MyCheckBoxClickEvent(Sender : TObject); //procedura zdarzenia OnClick CheckBoxa
var
DesktopRect: TRect;
begin
if TCheckBox(Sender).Checked then
begin
//zapamietaj rozmiar i polozenia
DefWizSizeRect.Left:= WizardForm.Left;
DefWizSizeRect.Top:= WizardForm.Top;
DefWizSizeRect.Right:= WizardForm.Width;
DefWizSizeRect.Bottom:= WizardForm.Height;
DesktopRect:= GetWorkArea; //pobierz rozmiar pulpitu
//zmiana rozmiaru
WizardForm.Width:= WizardForm.Width + PLUS_W;
WizardForm.Height:= WizardForm.Height + PLUS_H ;
//trzeba dopasowac polozenie i rozmiar pozostalych elementow
WizardForm.InnerPage.Width:= WizardForm.InnerPage.Width + PLUS_W;
WizardForm.InnerPage.Height:= WizardForm.InnerPage.Height + PLUS_H ;
WizardForm.OuterNotebook.Width:= WizardForm.OuterNotebook.Width + PLUS_W;
WizardForm.InnerNotebook.Width:= WizardForm.InnerPage.Width + PLUS_W;
WizardForm.MainPanel.Width:= WizardForm.MainPanel.Width + PLUS_W;
WizardForm.WizardSmallBitmapImage.Left:= WizardForm.WizardSmallBitmapImage.Left + PLUS_W;
WizardForm.PageNameLabel.Width:= WizardForm.PageNameLabel.Width + PLUS_W;
WizardForm.PageDescriptionLabel.Width:= WizardForm.PageDescriptionLabel.Width + PLUS_W;
WizardForm.Bevel1.Width:= WizardForm.Bevel1.Width + PLUS_W;
WizardForm.Bevel.Width:= WizardForm.Bevel.Width + PLUS_W;
WizardForm.Bevel.Top:= WizardForm.Bevel.Top + PLUS_H ;
WizardForm.CancelButton.Left:= WizardForm.CancelButton.Left + PLUS_W;
WizardForm.NextButton.Left:= WizardForm.NextButton.Left + PLUS_W;
WizardForm.BackButton.Left:= WizardForm.BackButton.Left + PLUS_W;
WizardForm.CancelButton.Top:= WizardForm.CancelButton.Top + PLUS_H ;
WizardForm.NextButton.Top:= WizardForm.NextButton.Top + PLUS_H ;
WizardForm.BackButton.Top:= WizardForm.BackButton.Top + PLUS_H;
//zmiana polozenia w tym wypadku prawy dolny rog pulpitu
WizardForm.Left:= DesktopRect.Right - WizardForm.Width;
WizardForm.Top:= DesktopRect.Bottom - WizardForm.Height;
end
else
begin
//stare polozenie i rozmiar elementow
WizardForm.InnerPage.Width:= WizardForm.InnerPage.Width - PLUS_W;
WizardForm.InnerPage.Height:= WizardForm.InnerPage.Height - PLUS_H ;
WizardForm.OuterNotebook.Width:= WizardForm.OuterNotebook.Width - PLUS_W;
WizardForm.InnerNotebook.Width:= WizardForm.InnerPage.Width - PLUS_W;
WizardForm.MainPanel.Width:= WizardForm.MainPanel.Width - PLUS_W;
WizardForm.WizardSmallBitmapImage.Left:= WizardForm.WizardSmallBitmapImage.Left - PLUS_W;
WizardForm.PageNameLabel.Width:= WizardForm.PageNameLabel.Width - PLUS_W;
WizardForm.PageDescriptionLabel.Width:= WizardForm.PageDescriptionLabel.Width - PLUS_W;
WizardForm.Bevel1.Width:= WizardForm.Bevel1.Width - PLUS_W;
WizardForm.Bevel.Width:= WizardForm.Bevel.Width - PLUS_W;
WizardForm.Bevel.Top:= WizardForm.Bevel.Top - PLUS_H ;
WizardForm.CancelButton.Left:= WizardForm.CancelButton.Left - PLUS_W;
WizardForm.NextButton.Left:= WizardForm.NextButton.Left - PLUS_W;
WizardForm.BackButton.Left:= WizardForm.BackButton.Left - PLUS_W;
WizardForm.CancelButton.Top:= WizardForm.CancelButton.Top - PLUS_H ;
WizardForm.NextButton.Top:= WizardForm.NextButton.Top - PLUS_H ;
WizardForm.BackButton.Top:= WizardForm.BackButton.Top - PLUS_H;
//przywroc rozmiar i polozenie formy
WizardForm.Left:= DefWizSizeRect.Left;
WizardForm.Top:= DefWizSizeRect.Top;
WizardForm.Width:= DefWizSizeRect.Right;
WizardForm.Height:= DefWizSizeRect.Bottom;
end;
end;
procedure InitializeWizard();
var
MyCheckBox: TNewCheckBox;
begin
MyPage:= CreateCustomPage(wpWelcome, 'Strona Testowa', 'Test powiększenia');
MyCheckBox:= TNewCheckBox.Create(MyPage);
MyCheckBox.Caption:= 'Powiększ :)';
MyCheckBox.OnClick:= @MyCheckBoxClickEvent;
MyCheckBox.Parent:= MyPage.Surface;
//tu mozna by nadac left, top ale domyslny mi odpowiada
end;
Oczywiście to przykład i na pewno są pewne niedociągnięcia np. trzeba by się jeszcze zabezpieczyć przed przejściem do następnej lub poprzedniej strony i na to reagować czyli sprawdzić czy była zmiana rozmiarów jeżeli tak przywracać poprzednie no ale to już zostawiam Tobie :)