ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[RESOLVIDO] Problema ao adicionar Tlayouts em ordem.

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Mobile com Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
eduardoserrao
Novato
Novato


Registrado: Segunda-Feira, 28 de Novembro de 2016
Mensagens: 78

MensagemEnviada: Seg Nov 28, 2016 9:00 am    Assunto: [RESOLVIDO] Problema ao adicionar Tlayouts em ordem. Responder com Citação

Bom dia,
Sou iniciante no Delphi, e estou com um problema com layout.
Estou fazendo uma consulta que retorna uma lista de descrições em ordem alfabética.
Estou colocando essa descrição dentro de um TLabel e adicionando esse TLabel dentro de um TLayout.
O que acontece é que quando ele adiciona os layouts dentro do meu layout principal ele coloca em ordem decrescente. Meu código está assim:

Código:
while not DM.memAuxiliar.Eof do
  begin
    descricao := DM.memAuxiliar.FieldByName('DESCRICAO').AsString;
    adicionarItemRelatorio(descricao);
    DM.memAuxiliar.Next;
end;

procedure adicionarItemRelatorio(descricao : String)
begin

  lytLinhaItem := TLayout.Create(lytFormatacao);
  lytLinhaItem.Height := 19;
  lytLinhaItem.Align := TAlignLayout.Top;

  lblDescricao := TLabel.Create(lytLinhaItem);
  lblDescricao.Height := 19;
  lblDescricao.Width := 137;
  lblDescricao.Align := TAlignLayout.Left;
  lblDescricao.Text := descricao;

  lytLinhaItem.AddObject(lblDescricao);
  lytFormatacao.AddObject(lytLinhaItem);

end;


Alguém tem alguma ideia de como posso resolver isso?

Abraços


Editado pela última vez por eduardoserrao em Seg Nov 28, 2016 12:02 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Seg Nov 28, 2016 9:45 am    Assunto: Responder com Citação

acredito não ser a melhor maneira de resolver, mas você pode fazer o seguinte, em vez de percorrer até o último registro, você pode setar a query para o último registro e percorrer até o primeiro

Código:
DM.memAuxilia.Last;
while not DM.memAuxiliar.First do
begin
  descricao := DM.memAuxiliar.FieldByName('DESCRICAO').AsString;
  adicionarItemRelatorio(descricao);
  DM.memAuxiliar.Prior;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
eduardoserrao
Novato
Novato


Registrado: Segunda-Feira, 28 de Novembro de 2016
Mensagens: 78

MensagemEnviada: Seg Nov 28, 2016 9:51 am    Assunto: Responder com Citação

Resolvido! O problema era que quando criava o meu layout ele posicionava no topo do meu layout 'lytFormatacao'. e quando usava o TAlignLayout.Top ele jogava os outros layouts para baixo.
Coloquei para criar os layouts na parte de baixo do meu layout 'lytFormatacao' e funcionou.

Código:

lytLinhaItem := TLayout.Create(lytFormatacao);
lytLinhaItem.Position := TPosition.Create(PointF(0,lytFormatacao.Height));
lytLinhaItem.Height := 19;
lytLinhaItem.Align := TAlignLayout.Top;


Very Happy
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
eduardoserrao
Novato
Novato


Registrado: Segunda-Feira, 28 de Novembro de 2016
Mensagens: 78

MensagemEnviada: Qua Nov 30, 2016 5:19 pm    Assunto: Responder com Citação

leo_cj escreveu:
acredito não ser a melhor maneira de resolver, mas você pode fazer o seguinte, em vez de percorrer até o último registro, você pode setar a query para o último registro e percorrer até o primeiro

Código:
DM.memAuxilia.Last;
while not DM.memAuxiliar.First do
begin
  descricao := DM.memAuxiliar.FieldByName('DESCRICAO').AsString;
  adicionarItemRelatorio(descricao);
  DM.memAuxiliar.Prior;
end;



leo_cj, tentei dessa maneira não funcionou, ele diz que first não é do tipo Boolean:

while not DM.memAuxiliar.First do


Abraço;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Qui Dez 01, 2016 7:33 am    Assunto: Responder com Citação

eduardoserrao escreveu:
leo_cj escreveu:
acredito não ser a melhor maneira de resolver, mas você pode fazer o seguinte, em vez de percorrer até o último registro, você pode setar a query para o último registro e percorrer até o primeiro

Código:
DM.memAuxilia.Last;
while not DM.memAuxiliar.First do
begin
  descricao := DM.memAuxiliar.FieldByName('DESCRICAO').AsString;
  adicionarItemRelatorio(descricao);
  DM.memAuxiliar.Prior;
end;



leo_cj, tentei dessa maneira não funcionou, ele diz que first não é do tipo Boolean:

while not DM.memAuxiliar.First do


Abraço;


opa, errei o código, seria assim

Código:
DM.memAuxilia.Last;
while not DM.memAuxiliar.BOF do
begin
  descricao := DM.memAuxiliar.FieldByName('DESCRICAO').AsString;
  adicionarItemRelatorio(descricao);
  DM.memAuxiliar.Prior;
end;
[/quote]
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Mobile com Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB