Вопрос Как перенести ComponentsList на созданную форму

Tjeyn

Новичок
Вкратце объясню, я создал кнопку на установщике, при нажатии этой кнопки открывается форма. Вопрос в том как перенести на эту форму ComponentsList
Код:
procedure MyComponentsForm();
begin
  MyComponents := CreateCustomForm();
  with MyComponents do
    begin
      Position := poScreenCenter;
      ClientHeight := ScaleY(244);
      ClientWidth := ScaleX(333);
    end;

    CloseButton := TButton.Create(MyAbout);
  with CloseButton do
  begin
    Parent := MyAbout;
    Caption := CustomMessage('CloseButton');
    Left := ScaleX(15);
    Top := ScaleY(205);
    Width := ScaleX(302);
    Height := ScaleY(25);
    ModalResult := mrYes;
    end;

procedure InfoBtnClick(hBtn:HWND);
begin
 MyComponentsForm();
  MyComponents.ShowModal() = mrNo then
end;
 

Tjeyn

Новичок
sergey3695, так уже пробывал, через parent не помогает!
Код:
     with WizardForm.ComponentsList do begin
      Parent:= WizardForm;
      SetBounds(ScaleX(6), ScaleY(165), ScaleX(309), ScaleY(174));
      Color:=$000000;
      Font.Name:='Tahoma';
      Font.Size:= 8;
      Font.Color:=$FFFFFF;
      for n:=0 to ItemCount-1 do begin
        ItemFontStyle[n]:= [fsBold];
        SubItemFontStyle[n]:= [fsBold];
      end;
      TreeViewStyle := True;
      BorderWidth := (WizardForm.ComponentsList.Width-WizardForm.ComponentsList.ClientWidth) div 2;
      LoadBGBmpFromBitmap(BGImage.Bitmap,  WizardForm.ComponentsList.Left+BorderWidth, WizardForm.ComponentsList.Top+BorderWidth);
      LoadBtnBmpFromBitmap(btnimage.Bitmap);
      end;
 

sergey3695

Ветеран
Модератор
Это в procedure MyComponentsForm(); делается? тем более в коде выше Parent:= WizardForm;
 

YURSHAT

Тех. админ
Администратор
Tjeyn, укажи в качестве родителя для ComponentsList имя своей формы. К примеру:
Код:
Parent := MyForm1;
 

Tjeyn

Новичок
YURSHAT, Так уже пытался
sergey3695, Да, все делается в procedure MyComponentsForm(). Parent:= WizardForm; это от примера листа так осталось
 
Последнее редактирование:

sergey3695

Ветеран
Модератор
Tjeyn, ну да,
Код:
[Setup]
AppName=1
AppVersion=1
DefaultDirName={pf}\1
DefaultGroupName=1
OutputDir=.

[Types]
Name: full; Description: Полная установка; Flags: iscustom

[Components]
Name: Lang; Description: ар; Flags: fixed; Types: Full;
Name: "Lang\Rus"; Description: арар; Flags: exclusive;
Name: "Lang\Eng"; Description: ауыаы; Flags: exclusive;

[Code]
var
  NewButton1: TNewButton;
  MyComponent: TSetupForm;

procedure NewButton1Click(Sender: TObject);
begin
  MyComponent := CreateCustomForm;
with MyComponent do
begin
  Width := ScaleX(400);
  Height := ScaleY(400);
  BorderIcons := [biSystemMenu];
  CenterInsideControl(WizardForm, False);
end;
  wizardform.ComponentsList.parent:= MyComponent;
  MyComponent.ShowModal;
  MyComponent.Free;
end;

procedure RedesignWizardForm;
begin
  NewButton1 := TNewButton.Create(WizardForm);
  with NewButton1 do
  begin
    Parent := WizardForm;
    Left := ScaleX(40);
    Top := WizardForm.NextButton.Top;
    Width := ScaleX(75);
    Height := ScaleY(25);
    Caption := 'NewButton1';
    OnClick:= @NewButton1Click;
  end;
end;

procedure InitializeWizard();
begin
  RedesignWizardForm;
end;
 

Tjeyn

Новичок
sergey3695, При повторном нажатии TNewButton обнаружил ошибку!
 

Shegorat

Lord of Madness
Администратор
sergey3695, Tjeyn
По уму новую форму нужно создавать только один раз. И по нажатию на кнопку ее просто показывать.
Код:
[Setup]
AppName=1
AppVersion=1
DefaultDirName={pf}\1
DefaultGroupName=1
OutputDir=.

[Types]
Name: full; Description: Полная установка; Flags: iscustom

[Components]
Name: Lang; Description: ар; Flags: fixed; Types: Full;
Name: "Lang\Rus"; Description: арар; Flags: exclusive;
Name: "Lang\Eng"; Description: ауыаы; Flags: exclusive;

[Code]
var
  NewButton1: TNewButton;
  MyComponent: TSetupForm;

procedure NewButton1Click(Sender: TObject);
begin
  MyComponent.ShowModal;
end;

procedure RedesignWizardForm;
begin
  MyComponent := CreateCustomForm;
  with MyComponent do begin
    Width := ScaleX(400);
    Height := ScaleY(400);
    BorderIcons := [biSystemMenu];
    CenterInsideControl(WizardForm, False);
  end;
  WizardForm.ComponentsList.parent:= MyComponent;

  NewButton1 := TNewButton.Create(WizardForm);
  with NewButton1 do begin
    Parent := WizardForm;
    Left := ScaleX(40);
    Top := WizardForm.NextButton.Top;
    Width := ScaleX(75);
    Height := ScaleY(25);
    Caption := 'NewButton1';
    OnClick:= @NewButton1Click;
  end;
end;

procedure InitializeWizard();
begin
  RedesignWizardForm;
end;

procedure DeinitializeSetup();
begin
  MyComponent.Free;
end;
 
Сверху