Tenho uma classe principal chamada TTabela. Através de herança crio outras classes filhas, que neste exemplo vou chamar de TUsuario. Criei uma tela de pesquisa base que receberá as configurações de acordo com as informações da Classe referente. Gostaria de saber se é possível declarar uma variável private do tipo TTabela, e sobrepor o conteúdo com a classe filha (TUsuario), uma vez que preciso criar a classe em tempo de execução para uso dos métodos internos do form.
Pergunta
arce
Olá
Tenho uma classe principal chamada TTabela. Através de herança crio outras classes filhas, que neste exemplo vou chamar de TUsuario. Criei uma tela de pesquisa base que receberá as configurações de acordo com as informações da Classe referente. Gostaria de saber se é possível declarar uma variável private do tipo TTabela, e sobrepor o conteúdo com a classe filha (TUsuario), uma vez que preciso criar a classe em tempo de execução para uso dos métodos internos do form.
unit untPsqBase; interface uses (...); type TfrmSPsqBase = class(TfrmBase) cbbFiltro: TComboBox; lbl1: TLabel; edtSearch: TEdit; lbl2: TLabel; private FTabela: TTabela; public constructor Create(AOwner: TComponent; cClass: String); overload; end; var frmPsqBase: TfrmPsqBase; implementation {$R *.dfm} uses uDM; constructor TfrmSearchEntity.Create(AOwner: TComponent; cClass: String); begin inherited Create(AOwner); FTabela := TTabela(GetClass(cClass)); // cClass = 'TUsuario' end; end.
Consigo fazer a instância com TForms como pode ser visto no exemplo abaixo:
procedure TfrmBase.btnPesqClick(Sender: TObject); var oClasseForm: TFormClass; cClasseForm: String; begin inherited; cClasseForm := 'TfrmPsq'+scTabela; oClasseForm := TFormClass(GetClass(cClasseForm)); if(Assigned(oClasseForm))then begin giCodigoPesquisado := 0; with(oClasseForm.Create(Self))do begin ShowModal; free; end; end; end;
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.