Jump to content

Open Form


N.Marzio

Recommended Posts

From the mainform I would like to open a secondary form

procedure ShowMyForm(aformName : string);

begin

????????

end;

procedure TxFrmBase.UniButton1Click(Sender: TObject);
begin

ShowMyForm('TxFrmBase ');

end;
 

My Sencond Form

  TxFrmBase = class(TUniForm)
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }

   ....

....

  public
    { Public declarations } 

......
  end;

function xFrmBase: TxFrmBase;
begin
  Result := TxFrmBase(UniMainModule.GetFormInstance(TxFrmBase));
end;

 

Tks

Link to comment
Share on other sites

4 minutes ago, Mehmet Emin said:

Probably calling in initialization will do it

Also in FormCreate:

On 5/14/2020 at 5:39 PM, Sherzod said:

procedure TMainForm.UniFormCreate(Sender: TObject); begin RegisterClass(TxFrmBase); ... end;

 

Link to comment
Share on other sites

  TxFrmBase = class(TUniForm)
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }

    //
  public
    { Public declarations }
  end;

  TFrmBase = class of TxFrmBase;


Initialization

  RegisterClass(TxFrmBase );

 

TMainForm = class(TUniForm)

    procedure onClick(Sender : TObect);
private

    function FindAnyClass(const aName: string): TClass;

   procedure showMyForm(aMyForm : string);

public

end;

function TMainForm.FindAnyClass(const aName: string): TClass;
var
  ctx: TRttiContext;
  typ: TRttiType;
  list: TArray<TRttiType>;
begin
  Result  := nil;
  //
  if Trim(aName) = ''  then exit;
  //
  ctx     := TRttiContext.Create;
  list    := ctx.GetTypes;
  for typ in list do begin
    if typ.IsInstance and (EndsText(aName, typ.Name)) then begin
      Result := typ.AsInstance.MetaClassType;
      break;
    end;
  end;
  ctx.Free;
end;
 

procedure TMainForm.showMyForm(aMyForm : string);

var
  lTag : TFrmBase;
begin
      lTag := TFrmBase(FindAnyClass(aMyForm));
      //
      with (lTag).Create(UniApplication) do begin

      ....

         Show();

     end;
end;

procedure TMainForm.onClick(Sender : TObect);      

begin

    showMyForm('MyPersonalForm');

end;

 

If it can serve, I attach the units

Bye

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...