在Delphi中,TListBox是一个常用的控件,用于显示项目列表。以下是TListBox的一些常见用法:

  1. 添加项目:
    使用 ListBox.Items.Add 方法可以向列表框中添加项目。例如:

    ListBox1.Items.Add('Item 1');ListBox1.Items.Add('Item 2');
  2. 删除项目:
    使用 ListBox.Items.Delete 方法可以删除指定位置的项目。例如:

    ListBox1.Items.Delete(0); // 删除第一个项目
  3. 清空列表:
    使用 ListBox.Items.Clear 方法可以清空列表框中的所有项目。例如:

    ListBox1.Items.Clear;
  4. 获取所选项目:
    你可以通过 ListBox.ItemIndex 属性获取用户当前选择的项目的索引。然后,你可以使用该索引来获取所选项目的值。例如:

    if ListBox1.ItemIndex  -1 thenShowMessage('Selected item: ' + ListBox1.Items[ListBox1.ItemIndex]);
  5. 多选模式:
    ListBox可以配置为允许多选。你可以通过设置 ListBox.MultiSelect 为True启用多选模式。在多选模式下,可以使用 ListBox.Selected[] 属性来检查或设置所选项目。例如:

    ListBox1.MultiSelect := True;// 设置选中项ListBox1.Selected[0] := True;ListBox1.Selected[2] := True;
  6. 事件处理:
    ListBox具有多种事件,你可以利用这些事件来响应用户操作,如点击、双击、选择等。常见的事件包括 OnClickOnDblClickOnSelect 等。

  7. 自定义项目样式:
    你可以通过设置 ListBox.Style 属性为 lbOwnerDrawFixedlbOwnerDrawVariable 来自定义项目的外观。然后,在 OnDrawItem 事件中绘制每个项目的外观。

  8. item的拖拽:
    首先确保ListBox的 DragMode 属性设置为 dmAutomatic,以便启用自动拖拽模式。

    procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;State: TDragState; var Accept: Boolean);varIdx: Integer;Pos: TPoint;beginAccept := False;if Sender is TListBox thenwith Sender as TListBox dobeginPos.X := X;Pos.y := Y;Idx := ItemAtPos(Pos, True);if (Idx > -1) and (idx <> ItemIndex) thenAccept := True;end;end;procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);varIdx: Integer;Pos: TPoint;beginif Sender is TListBox thenbeginwith Sender as TListBox dobeginPos.X := X;Pos.y := Y;Idx := ItemAtPos(Pos, True);Items.Move(ItemIndex, Idx);ItemIndex := Idx;end;end;end;
  9. item的上下移动:

    procedure LbMoveItemUp(AListBox: TListBox);varCurrIndex: Integer;beginwith AListBox doif ItemIndex > 0 thenbeginCurrIndex := ItemIndex;Items.Move(ItemIndex, (CurrIndex - 1));ItemIndex := CurrIndex - 1;end;end; // Move an item downprocedure LbMoveItemDown(AListBox: TListBox);varCurrIndex, LastIndex: Integer;beginwith AListBox dobeginCurrIndex := ItemIndex;LastIndex := Items.Count;if ItemIndex <> -1 thenbeginif CurrIndex + 1 < LastIndex thenbeginItems.Move(ItemIndex, (CurrIndex + 1));ItemIndex := CurrIndex + 1;end;end;end;end;procedure TForm1.Button6Click(Sender: TObject);beginLbMoveItemUp(ListBox1);end;procedure TForm1.Button7Click(Sender: TObject);beginLbMoveItemDown(ListBox1);end;

Listbox使用Demo源码下载