Ir para conteúdo
  • Cadastre-se

  • Este tópico foi criado há 2652 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

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.

  • Membros Pro
  • Solution
Postado

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
  • Este tópico foi criado há 2652 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...
The popup will be closed in 10 segundos...