Trabalhando com ListBox no Delphi II

Comandos Básicos

Limpar Lista:

//Deleta algo selecionado ou seja marcado na Lista
ListBox1.DeleteSelected;

ou

//Deleta algo selecionado ou seja marcado na Lista
ListBox1.Items.Delete(ListBox1.ItemIndex);

ou

//Limpar tudo que contiver na Lista
ListBox1.Items.Clear();

ou

//Limpar tudo que contiver na Lista
ListBox1.Clear;

Abrir Item:

//Executa o OpenDialog
if OpenDialog1.Execute then
//Abre texto para Lista do destino selecionado
ListBox1.Items.LoadFromFile(OpenDialog1.FileName);

ou

//Caso houver alguma lista na pasta do prjeto com nome Lista de
//Texto abre o item para a Lista
ListBox1.Items.LoadFromFile('Lista de Texto');

 Salvar Item:

//Executa o SaveDialog
if SaveDialog1.Execute then
//Salva texto da Lista com escolha de destino
ListBox1.Items.SaveToFile(SaveDialog1.FileName);

ou

//Salva item na mesma pasta do projeto sem a necessidade de escolher destino
ListBox1.Items.SaveToFile('Lista de Texto');

 Adicionar:

//Adiciona o que estiver no Text do Edit para a Lista
ListBox1.Items.Add(Edit1.Text);

ou

//Adiciona no Edit o item slecionado na Lista ou marcado
Edit1.Text := ListBox1.Items.Strings[ListBox1.itemIndex];

ou

//Adiciona na Label o item slecionado na Lista ou marcado
Label1.Caption := ListBox1.Items.Strings[ListBox1.itemIndex];

Ir para o último item da lista:

ListBox1.TopIndex: = -1 + ListBox1.Items.Count;

Mover items de posição no ListBox:

Antes de mais nada coloque como formulário de nível :

var
 Form1: TForm1;
 StartingPoint : TPoint;

Coloque no OnCreat do Form :

procedure TForm1.FormCreate(Sender: TObject);
begin
 ListBox1.DragMode:= dmAutomatic;
end;

Coloque no OnDragDrop do ListBox :

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  DropPosition, StartPosition: Integer;
  DropPoint: TPoint;
begin
  DropPoint.X := X;
  DropPoint.Y := Y;
  with Source as TListBox do
  begin
  StartPosition := ItemAtPos(StartingPoint,True);
    DropPosition := ItemAtPos(DropPoint,True);
    Items.Move(StartPosition, DropPosition);
 end;
end;

Coloque no OnDragOver do Listbox :

procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
 begin
 Accept:= Source = ListBox1;
 end;

E por fim coloque no OnMouseMove do ListBox :

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  StartingPoint.X:= X;
  StartingPoint.Y := Y;
end;

Mostrar Hint de items do ListBox:

Coloque

Listbox.ShowHint := true ;

Depois em OnMouseMove :

procedure TForm1.ListBox1MouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) ;
var lstIndex : Integer ;
begin
with ListBox1 do
begin
  lstIndex:=SendMessage(Handle, LB_ITEMFROMPOINT, 0, MakeLParam(x,y)) ;
  if (lstIndex >= 0) and (lstIndex <= Items.Count) then
    Hint := Items[lstIndex]
  else
    Hint := ''
  end;
end;

Pesquisa de texto no Listbox pelo Edit:

Coloque no OnChange do Edit :

procedure TForm1.Edit1Change(Sender: TObject);
const
  indexStart = -1;
var
  search : array[0..128] of Char;
begin
  //make sure Length(Edit1.Text) <= 128
  StrPCopy(search, Edit1.Text) ;
  ListBox1.ItemIndex := ListBox1.Perform(LB_SELECTSTRING, indexStart, LongInt(@search));
end;

Remover multiplos Items selecionados de um ListBox:

Coloque:

ListBox1.MultiSelect = true ;

Depois coloque num button “sei la” :

var
   ii : integer;
begin
  with ListBox1 do
  begin
    for ii := -1 + Items.Count downto 0 do
    if Selected[ii] then Items.Delete(ii) ;
  end;
end;

Ordenação do Listbox:

Descer um item selecionado :

var
  NovoIndex : Integer;
begin
  if not (lbx1.ItemIndex = lbx1.Items.Count-1) then
  begin
    NovoIndex := lbx1.ItemIndex + 1;
    lbx1.Items.Move(lbx1.ItemIndex, NovoIndex);
    lbx1.ItemIndex := NovoIndex;
    lbx1.SetFocus;
  end;
end;

Subir um item selecionado:

var
  NovoIndex : Integer;
begin
  if not (lbx1.ItemIndex - 1 < 0) then
  begin
    NovoIndex := lbx1.ItemIndex - 1;
    lbx1.Items.Move(lbx1.ItemIndex, NovoIndex);
    lbx1.ItemIndex := NovoIndex;
    lbx1.SetFocus;
  end;
end;

Manipulação Simples:

Exemplo de como utilizar uma string para formatação…

Eu tenho como string “botecounix” e pretendo formatar até boteco,então faço o seguinte :

procedure TForm1.Button1Click(Sender: TObject);
var
  X : Integer;
  S1 : String;
  S2 : String;
begin
  for X := 0 to ListBox1.Items.Count-1 do
  begin
    S1 := Form1.ListBox1.Items[X];
    S2 := 'unix'; //Edit1.Text
    Delete(S1, Pos(S2, S1) , length( S2 ) );
    Form1.ListBox1.Items[X] :=S1;
  end;
end;

Obs: Caso estiver somente com a string sendo referência inicial de linha o código não irá removê-la.

Fonte: Boteco Unix

2 comentários em “Trabalhando com ListBox no Delphi II”

  1. Amigo, é mais fácil assim…

    Mover items de posição no ListBox:
    Subir Posição :
    if ListBox1.Items.Count = 0 then Exit;
    if ListBox1.ItemIndex > 0 then
    ListBox1.Items.Exchange(ListBox1.ItemIndex, (ListBox1.ItemIndex – 1));
    Desc Posição :
    if ListBox1.Items.Count = 0 then Exit;
    if ListBox1.ItemIndex < (ListBox1.Items.Count – 1) then
    ListBox1.Items.Exchange(ListBox1.ItemIndex, (ListBox1.ItemIndex + 1));

    Responder

Deixe um comentário para Maikon Cancelar resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.