Informações entre Dois LIstbox

Delphi

02/06/2004

Colegas,

Estou tentando escrever um algoritmo que faça a troca de itens entre dois listbox, de forma que quando um item retornar para a listbox de origem, ele retorne na posição exata que ocupava. Alguém sabe ou já fez algo parecido?
Caso ninguém saiba ou não tenha entendido, serve também como solução deixar o item selecionado que saiu da listbox com a cor mais apagada, diferenciando dos demais itens que não sairam da listbox e não permitindo, dessa forma, mais a sua seleção.


Muxagata

Muxagata

Curtidas 0

Respostas

Rômulo Barros

Rômulo Barros

02/06/2004

[color=red:c0db3f6366][b:c0db3f6366]Passando o ítem selecionado de um Lb para outro Lb[/b:c0db3f6366][/color:c0db3f6366]
procedure TfrmAssocAreaLinha.AssociarUm(parOrigem, parDestino: TListBox);
begin
  If(parOrigem.ItemIndex <> -1)Then
  Begin
    parDestino.Items.Add(parOrigem.Items.Strings[parOrigem.ItemIndex]);
    intC := parOrigem.ItemIndex;
    parOrigem.DeleteSelected;
    If(parOrigem.Items.Count <> intC)Then
    Begin
      parOrigem.ItemIndex := intC;
    End
    Else
     Begin
        parOrigem.ItemIndex := intC - 1;
     End;
  End;
end;


[b:c0db3f6366][color=red:c0db3f6366]Passando todos os items de um lb para outro lb[/color:c0db3f6366][/b:c0db3f6366]


procedure TfrmAssocAreaLinha.AssociarTodos(parOrigem,
  parDestino: TListBox);
begin
  If(parOrigem.ItemIndex <> -1)Then
  Begin
    parOrigem.ItemIndex := 0;
    For intC := 0 To parOrigem.Items.Count -1 Do
    Begin
      parDestino.Items.Add(parOrigem.Items[intC]);
    End;
   parOrigem.Items.Clear;
  End;
end;


Pronto.. basta chamar a função e passar os dois ListBox (Origem e Destino) como parâmetros.


GOSTEI 0
Muxagata

Muxagata

02/06/2004

Valeu pela rotina, porém ela não mantém a posição original quando retorna ao listbox de origem.

Mesmo assim, valeu!


GOSTEI 0
POSTAR