| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
eduardoserrao Novato


Registrado: Segunda-Feira, 28 de Novembro de 2016 Mensagens: 78
|
Enviada: Seg Nov 28, 2016 9:00 am Assunto: [RESOLVIDO] Problema ao adicionar Tlayouts em ordem. |
|
|
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 |
|
 |
leo_cj Colaborador

Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Seg Nov 28, 2016 9:45 am Assunto: |
|
|
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 |
|
 |
eduardoserrao Novato


Registrado: Segunda-Feira, 28 de Novembro de 2016 Mensagens: 78
|
Enviada: Seg Nov 28, 2016 9:51 am Assunto: |
|
|
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; |
 |
|
| Voltar ao Topo |
|
 |
eduardoserrao Novato


Registrado: Segunda-Feira, 28 de Novembro de 2016 Mensagens: 78
|
Enviada: Qua Nov 30, 2016 5:19 pm Assunto: |
|
|
| 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 |
|
 |
leo_cj Colaborador

Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Qui Dez 01, 2016 7:33 am Assunto: |
|
|
| 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 |
|
 |
|