GARANTIR DESCONTO

Fórum Como saber qual subitem do TListview foi selecionado? #182651

17/09/2003

0

Estou tendo dificuldades em saber qual o subitem de um item no Listview foi selecionado, quando se clica no próprio ?

Alguem teria alguma sugestão ?

Pierre


Pmark

Pmark

Responder

Posts

17/09/2003

4_olho

Tente algo como :
No evento OnClick da ListView :
SuaTabela.RecNo:=ListView1.Selected.Index+1;

se estiver usando uma tabela


Responder

Gostei + 0

18/09/2003

Pmark

Obrigado ´4_olho´ (?)

Eu consegui resolver de outra forma, no meu caso especifico eu precisa saber qual subitem de um item selecionado foi clicado no ListView.

Abaixo o código que criei:

procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
var
  Coluna, I, OffSet : Integer;
begin
  if not Selected then
    Exit;

  OffSet := ListView1.Columns[0].Width;
  if (PosX < OffSet) then
    Coluna := - 1
  else
    for I := 1 To Item.SubItems.Count do
    begin
      if (PosX > OffSet) and (PosX < OffSet + ListView1.Columns[I].Width) then
        Coluna := I - 1;
      OffSet := OffSet + ListView1.Columns[I].Width;
    end;

  { coluna armazena qual coluna(subitem) foi clicada }
  if Coluna >= 0 then { troca imagem se for coluna de subitem }
    if Item.SubItemImages[Coluna] = 3 then
      Item.SubItemImages[Coluna] := 4
    else
      Item.SubItemImages[Coluna] := 3;
end;

procedure TForm1.ListView1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  { descobre aonde foi clicado }
  PosX := X;
  PosY := Y;
end;

procedure TForm1.ListView1Click(Sender: TObject);
var
  PosItem : Integer;
begin
  { converte a posição (x,y) para o item clicado }
  PosItem := (PosY div 17) ;
  if PosItem <= ListView1.Items.Count then
    ListView1SelectItem(nil, ListView1.Items.Item[PosItem - 1], True);
end;



Responder

Gostei + 0

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

Aceitar