Ветеран
Сообщения: 649
Благодарности: 444
Профиль
|
Отправить PM
| Цитировать
Цитата t16bz :
Нужно сделать чтобы перед появлением WizardForm появлялась, например Forma1, и только после ее закрытия появлялась WizardForm »
пример 1:
читать дальше »
Код:
[Setup]
AppName=Reg_Path_Demo
AppVerName=Reg_Path_Demo
DefaultDirName={pf}\Reg_Path_Demo
[ code]
function CreateFormAtFirst: boolean;
var
fForm: TForm;
begin
fForm := TForm.Create(nil);
with fForm do
begin
ClientWidth := ScaleX(360);
ClientHeight := ScaleY(487);
Position := poScreenCenter;
BorderStyle := bsDialog;
Caption := 'Лучший зпголовок'
with TButton.Create(nil) do
begin
Parent := fForm;
SetBounds(fForm.ClientWidth - ScaleX(75),fForm.ClientHeight - ScaleY(30),Scalex(70),ScaleY(25));
Caption := SetupMessage(msgButtonCancel);
ModalResult := mrCancel;
Cursor := crHand;
end;
with TButton.Create(nil) do
begin
Parent := fForm;
SetBounds(fForm.ClientWidth - ScaleX(155),fForm.ClientHeight - ScaleY(30),Scalex(70),ScaleY(25));
Caption := SetupMessage(msgButtonOK);
ModalResult := mrOk;
Cursor := crHand;
end;
Result := ShowModal = mrOk;
Free;
end;
end;
function InitializeSetup(): Boolean;
begin
Result := CreateFormAtFirst;
end;
пример 2:
читать дальше »
Код:
[Setup]
AppName=Reg_Path_Demo
AppVerName=Reg_Path_Demo
DefaultDirName={pf}\Reg_Path_Demo
[ code]
procedure InitializeWizard();
var
fForm: TForm;
begin
fForm := TForm.Create(nil);
with fForm do
begin
ClientWidth := ScaleX(360);
ClientHeight := ScaleY(487);
Position := poScreenCenter;
BorderStyle := bsDialog;
Caption := 'Лучший зпголовок'
with TButton.Create(nil) do
begin
Parent := fForm;
SetBounds(fForm.ClientWidth - ScaleX(75),fForm.ClientHeight - ScaleY(30),Scalex(70),ScaleY(25));
Caption := SetupMessage(msgButtonCancel);
ModalResult := mrCancel;
Cursor := crHand;
end;
with TButton.Create(nil) do
begin
Parent := fForm;
SetBounds(fForm.ClientWidth - ScaleX(155),fForm.ClientHeight - ScaleY(30),Scalex(70),ScaleY(25));
Caption := SetupMessage(msgButtonOK);
ModalResult := mrOk;
Cursor := crHand;
end;
ShowModal;
Free;
end;
/// остальной код
end;
в этом примере продолжению выполнения процедуры не даёт команда форме ShowModal;
Ваня!
для тебя родимого как вариант
если б делал выбор стилей сделал бы так:
читать дальше »
Код:
[Setup]
AppName=Reg_Path_Demo
AppVerName=Reg_Path_Demo
DefaultDirName={pf}\Reg_Path_Demo
[ code]
var
wAnswer: Byte;
OK_Button: TButton;
procedure sComboBoxOnChange(Sedner: TObject);
begin
OK_Button.SetFocus;
end;
function AskForStyle(DefStyle:Byte;sQuestion,sStyle1,sStyle2:String):Byte;
var
sComboBox: TComboBox;
sForm: TForm;
begin
sForm := TForm.Create(nil);
with sForm do
begin
ClientWidth := ScaleX(200);
ClientHeight := ScaleY(70);
Position := poScreenCenter;
BorderStyle := bsDialog;
Caption := sQuestion;
sComboBox := TComboBox.Create(nil)
with sComboBox do
begin
Parent := sForm;
SetBounds(ScaleX(5),ScaleY(10),ScaleX(130),ScaleY(21));
Items.add(sStyle1);
Items.add(sStyle2);
Style := csDropDownList;
Cursor := crHand;
ItemIndex := DefStyle;
OnChange := @sComboBoxOnChange;
end;
with TButton.Create(nil) do
begin
Parent := sForm;
SetBounds(sForm.ClientWidth - ScaleX(75),sForm.ClientHeight - ScaleY(30),Scalex(70),ScaleY(25));
Caption := SetupMessage(msgButtonCancel);
ModalResult := mrCancel;
Cursor := crHand;
end;
OK_Button := TButton.Create(nil)
with OK_Button do
begin
Parent := sForm;
SetBounds(sForm.ClientWidth - ScaleX(155),sForm.ClientHeight - ScaleY(30),Scalex(70),ScaleY(25));
Caption := SetupMessage(msgButtonOK);
ModalResult := mrOk;
Cursor := crHand;
end;
sForm.ActiveControl := OK_Button;
if ShowModal = mrOk then Result := mrOk + sComboBox.ItemIndex else Result := 0;
Free;
end;
end;
function InitializeSetup(): Boolean;
begin
///////////////////(стиль по умолчаниб - 0 или 1//// название заголовка окна//// название первого стиля /// название второго стиля)
/// Функция вернёт число равное 0 - нажали на отмену, 1 - 1 + индекс выбранного айтема(0+1), 2 - индекс выбранного айтема
wAnswer := AskForStyle(1,'какой стиль юзать?','Стиль 1','Стить 2');
Result := wAnswer <> 0;
end;
procedure InitializeWizard();
begin
/// здесь общий код для двух стилей
if wAnswer = 1 then
begin
/// код для первого слитя
MsgBox('будет использован стиль 1', mbInformation, MB_OK);
end else
begin
/// код для вторго слитя
MsgBox('будет использован стиль 2', mbInformation, MB_OK);
end;
end;
Последний раз редактировалось Johny777, 27-09-2012 в 15:22 .
Это сообщение посчитали полезным следующие участники:
Отправлено : 11:33, 27-09-2012
| #1008