GroupBox e Edit em RunTime Delphi

02/03/2016

0

Bom dia, tenho algumas duvidas sobre criação em RunTime, pois bem, tenho um form onde crio edit's, label's e groupbox's em RUNTIME, eu trago da tabela onde tenho um campo de ativado ou desativado, quando ativo cria o objeto no form, nessa minha tabela tenho o campo grupo, que identifica cada edit para um grupo.
Agora vem a duvida, como fazer para criar em runtime os edit's com seus respectivos groupbox.
Exemplo: edit1, edit2 pertencem ao gropo Pessoa, ja o edit3, edit4 pertencem ao grupo empresa

como fazer para que quando criar cada edit seja posicionado dentro do groupbox especificado.
segue o código da criação em Runtime até o momento.
procedure TFrm_Cadastro_Cliente.FormShow(Sender: TObject);
var
  I, J, K, L, sql_delec: Integer;
  sql_campo, sql_valor, sql_completo : String;

begin
  DM := TDataM_Basico.Create(Self);
  DM.QSelect_pirado.SQL.Clear;
  DM.QSelect_pirado.SQL.Add('SELECT ID_COMPONENTE,NOME_COMPONENTE, CAPTION_COMPONENTE, TAMANHO_COMPONENTE, GRUPO_COMPONENTE FROM COMPONENTES WHERE ID_COMPONENTE BETWEEN 1 AND 50 AND STATUS_COMPONENTE = '+QuotedStr('1'));
  DM.QSelect_pirado.Open;

  DicionarioLabel:= TObjectDictionary<String,TObject>.Create;
  DicionarioEdit:= TObjectDictionary<String,TObject>.Create;
  try
    J:= 60;
    K:= 85;
    L:= 0;


    for I := 0 to DM.QSelect_pirado.RowsAffected-1 do
        begin
        J:= J+60;
        K:= K+60;
        L:= L+100;

          //CRIA GROUPBOX
          gro_        := TGroupBox.Create(Self);
          gro_.Name   := 'gro_'+ DM.QSelect_pirado.FieldByName('GRUPO_COMPONENTE').AsString;
          gro_.Parent := Frm_Cadastro_Cliente;
          gro_.Caption:= 'Grupo '+DM.QSelect_pirado.FieldByName('GRUPO_COMPONENTE').AsString;
          gro_.Top    := L;
          gro_.Left   := 50;
          gro_.Width  := 800;
          gro_.Height := 100;

          //CRIA OS LABELS
          lbl_        := TLabel.Create(self);
          lbl_.Name   := 'lbl_'+DM.QSelect_pirado.FieldByName('NOME_COMPONENTE').AsString;
          lbl_.Parent := Frm_Cadastro_Cliente;
          lbl_.Caption:= DM.QSelect_pirado.FieldByName('CAPTION_COMPONENTE').AsString;
          lbl_.Anchors:= [akTop, akRight];
          lbl_.Top    := J;
          lbl_.Left   := 60;
          DicionarioLabel.Add(IntToStr(i),lbl_);

          //CRIA OS EDITS
          edt_        := TMaskEdit.Create(Self);
          edt_.Name   :='edt_'+DM.QSelect_pirado.FieldByName('NOME_COMPONENTE').AsString;
          edt_.Parent := Frm_Cadastro_Cliente;
          edt_.Text   := '';
          edt_.Anchors:= [akTop, akRight];
          edt_.Font.Color := 000000;
          edt_.Top    := K;
          edt_.Width  := DM.QSelect_pirado.FieldByName('TAMANHO_COMPONENTE').AsInteger;
          edt_.Left   := 60;
          DicionarioEdit.Add(IntToStr(i),edt_);
          DM.QSelect_pirado.Next;
        end;
  finally
    DM.QSelect_pirado.Close;
  end;

end;
Felipe Tomm

Felipe Tomm

Responder

Post mais votado

02/03/2016

Não sei se entendi bem, mas experimente alterar o Parent dos Label's e Edit's para o nome do Groupbox.

Troque as linhas:

lbl_.Parent := Frm_Cadastro_Cliente;
edt_.Parent := Frm_Cadastro_Cliente;

Por:
lbl_.Parent := TGroupBox(Frm_Cadastro_Cliente.FindComponent('gro_' + DM.QSelect_pirado.FieldByName('GRUPO_COMPONENTE').AsString));
edt_.Parent := TGroupBox(Frm_Cadastro_Cliente.FindComponent('gro_' + DM.QSelect_pirado.FieldByName('GRUPO_COMPONENTE').AsString));

Natanael Ferreira

Natanael Ferreira
Responder

Mais Posts

02/03/2016

Felipe Tomm

SHow, isso mesmo!
Obrigado
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar