Ir para conteúdo
  • Cadastre-se

dev botao

ListView FireMonkey


Ver Solução Respondido por Duarte,
  • Este tópico foi criado há 1834 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Boa noite,

Estou tentado preencher um ListVier em run-time, pois via LiveBindings Desinger estou tendo problemas quanto ao uso de Thread e/ou Task. Veja parte do código. Lembrando que isso para FMX.

procedure T_frmPedido.SpeedButton1Click(Sender: TObject);
var
  fItem : TListViewItem;
begin
  try
    with _lvwItens do
    begin
      BeginUpdate;
      Items.Clear;

      with Pesquisa do
      begin
        First;

        while not Eof do
        begin
          fItem                                           := Items.Add;
          fItem.Text                                      := FieldByName('DESCRICAO').AsString;
          fItem.Data[TMultiDetailAppearanceNames.Detail1] := FieldByName('PRECO').DisplayText;
          fItem.Data[TMultiDetailAppearanceNames.Detail2] := FieldByName('ESTOQUE').DisplayText;
          fItem.Data[TMultiDetailAppearanceNames.Detail3] := FieldByName('MARCA').AsString;

          //Como adicionar a propriedade ItemHeader.text em run-time? O mesmo serve para Item.LookupData
          Next;
        end;
      end;
    end;
  finally
    EndUpdate;
  end;
end;

O grande problema é... preciso alimentar a propriedade Item.Header.Text via run-time e não estou conseguindo.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
  • Solution

Boa tarde, depois de muito quebrar a cabeça achei a solução, vou deixar aqui, caso alguém precise.

 

procedure InsertItemListView(AListView : TListView; ADataSet : TDataSet; AHeader, AText, ADetail, ADetail1, ADetail2, ADetail3 : string);
begin
  try
    AListView.BeginUpdate;
    AListView.Items.Clear;

    with ADataSet do
    begin
      First;

      while not Eof do
      begin
        if Trim(AHeader) <> '' then
          with AListView.Items.Add do
          begin
            Text    := ADataSet.FieldByName(AHeader).DisplayText;
            Purpose := TListItemPurpose.Header; //Aqui é o pulo do gato para add os Headers. Na verdade você add dois items, um será o Header e ou outro o item ou itens, sendo que podemos add vários itens tem do mesmo headers. No meu caso será um para cada. 
          end;

        with AListView.Items.Add do
        begin
          Text                                      := FieldByName(AText).DisplayText;
          Detail                                    := FieldByName(ADetail).AsString;
          Data[TMultiDetailAppearanceNames.Detail1] := FieldByName(ADetail1).DisplayText;
          Data[TMultiDetailAppearanceNames.Detail2] := FieldByName(ADetail2).DisplayText;
          Data[TMultiDetailAppearanceNames.Detail3] := FieldByName(ADetail3).DisplayText;
          Tag                                       := RecNo;
        end;

        Next;
      end;
    end;
  finally
    AListView.EndUpdate;
  end;
end;
 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1834 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...