Simples comaração entre dois listbox... não to consiguindo..

Delphi

16/06/2006

Tenho dois listbox, cada um com uma listagem diferente. A idéia é que eu seleciona-se um item do listbox2 e no click do botão ele verifica-se se há no listbox1 um item com o msm nome q foi selecionado no listbox2, se tiver deleta ele.

Já tentei ´n´ vezes e não consegui...

Vlw... té mais...


Madcat

Madcat

Curtidas 0

Respostas

Vinicius2k

Vinicius2k

16/06/2006

Colega,

Vejo duas opções...

A mais simples:
...
var
  Indice: Integer;
begin
  // Verifica se algo está selecionado no ListBox2
  // Nota: caso MultiSelect = True, sempre o 1º item
  // está selecionado, o que torna este teste sempre
  // verdadeiro.
  if not (ListBox2.ItemIndex = - 1) then
  begin
    Indice := ListBox1.Items.IndexOf(ListBox2.Items[ListBox2.ItemIndex]);
    if not (Indice = -1) then
      ListBox1.Items.Delete(Indice);
  end;
end;


A mais complicada, que eu fiz primeiro, reinventando a roda... pra variar:
...
var
  I, Contador: Integer;
begin
  // Verifica se algo está selecionado no ListBox2
  // Nota: caso MultiSelect = True, sempre o 1º item
  // está selecionado, o que torna este teste sempre
  // verdadeiro.
  if not (ListBox2.ItemIndex = - 1) then
  begin
    // Prepara as variáveis
    I := 0;
    Contador := ListBox1.Items.Count;
    // Percorre o ListBox1 procurando pelo item selecionado no ListBox2
    while I < Contador do
    begin
      // Se encontrar correspondência...
      if ListBox1.Items[I] = ListBox2.Items[ListBox2.ItemIndex] then
      begin
        // Deleta o ítem.
        ListBox1.Items.Delete(I);
        // Decrementa o contador de ítens.
        Dec(Contador);
      end;
      // Incrementa o controlador do laço
      Inc(I);
    end;
  end;
end;


Recentemente, andamos ´brincando´ com TListBox [url=http://forum.clubedelphi.net/viewtopic.php?t=78165]neste tópico[/url]. Talvez você possa aproveitar algo...


GOSTEI 0
Madcat

Madcat

16/06/2006

Caiu como uma luva!!! Vlw, muito obrigado.


GOSTEI 0
POSTAR