TScrollBox -> TCustomListBox -> TListBox; 其元素项是 TListBoxItem 类型.
TListBox 的功能在 TCustomListBox 里就完成了.
值得注意的变化是:
1、复选框(相关属性: ShowCheckboxes、TListBoxItem.IsChecked)
2、交替背景(通过继承还可以调整交替的背景色)
3、TListBoxItem 可调整大小、容纳其它对象.
{ TCustomListBox }
public
constructor Create(...); override; //
destructor Destroy; override; //
procedure Assign(...); override; //
procedure Clear; virtual; //清空
function DragChange(...): Boolean; dynamic; //调用 OnDragChange 事件
procedure SelectAll; //全选
procedure ClearSelection; //取消选择
procedure SelectRange(...); //选择指定范围
function ItemByPoint(...): TListBoxItem; //获取指定位置的项
function ItemByIndex(...): TListBoxItem; //获取指定序号的项
procedure Exchange(...); //交换项
procedure AddObject(...); override; //添加项
procedure RemoveObject(...); override; //删除项
procedure Sort(...); override; //排序
property Count: Integer ...; //项总数
property Selected: TListBoxItem ...; //当前选择的项
property Items: TStrings ...; //元素文本的集合
property ListItems[Index: Integer]: TListBoxItem ...; //根据索引获取项
property ItemIndex: Integer ...; //索引
end;
{ TListBox }
published
property StyleLookup; //
property AllowDrag; //是否允许拖放
property CanFocus; //
property DisableFocusEffect; //
property TabOrder; //
property AlternatingRowBackground; //是否使用交替背景
property Columns; //列数; 默认 1
property HideSelectionUnfocused; //在失去焦点时是否隐藏选择
property Items; //
property ItemIndex; //
property ItemWidth; //项宽
property ItemHeight; //项高
property ListStyle; //列表样式; TListStyle = (lsVertical, lsHorizontal);
property MultiSelect; //是否允许多选; 为 True 时, 配合 Ctrl 键多选
property Sorted; //
property ShowCheckboxes; //是否显示复选框; 默认 False
property BindingSource; //绑定源
property OnChange; //有变化时
property OnChangeCheck; //调整复选框时
property OnCompare; //排序比较时
property OnDragChange; //拖放项时
end;
{ TListBoxItem }
public
constructor Create(...); override; //
property Data: TObject ...; //
property Index: Integer ...; //
published
property IsChecked: Boolean ...; //复选值
property IsSelected: Boolean ...; //
property AutoTranslate ...; //
property Font; //
property StyleLookup; //
property Text; //
property TextAlign ...; //
property WordWrap; //
end;
测试:
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
ListBox1.Align := TAlignLayout.alLeft;
ListBox1.ShowCheckboxes := True;
ListBox1.AlternatingRowBackground := True;
for i := 0 to 9 do
begin
ListBox1.Items.Add('Itme' + IntToStr(i));
ListBox1.ListItems[i].IsChecked := Odd(i);
end;
end;