Delphi列表框元件 TListBox 詳解

2021-06-22 17:46:36 字數 4436 閱讀 4499

此元件為乙個標準的windows 列表框元件,它用於顯示一系列的列表,使用者可以選擇、加入、刪除或修改其中的專案。

在windows 應用程式中,經常要用到列表框。列表框能夠在乙個可翻滾的視窗中列出多個項讓使用者選擇。例如在delphi 的ide 中,當使用「view」選單上的「component list」命令時,delphi 將列出vcl 中的所有元件。

程式中主要利用items 屬性進行各種專案的控制,例如用items.strings獲取某個選項的內容,items.add()和items.delete()增加或刪除選項條目。通過itemindex 屬性指定或者獲取當前選項。

·columns 列表框的欄數

·extendedselect 此屬性用於設定是否允許使用shift 鍵和ctrl 鍵同時選擇多個項

·integralheight 列表框的高度總是列表框中項的高度的整數倍

·itemheight 此屬性用於設定列表框中每一項的高度

·itemindex 此屬性用於設定返回列表框中被選擇的項的序號

·items 列表框中所有的項都是通過items 屬性訪問的

·multiselect 允許同時選擇多項

·selcount 返回當前選擇的項的個數

·selected 此屬性用於判斷指定的項是否被選擇

·sorted 此屬性用於設定列表框中的項是否要按字母順序排序

·style 此屬性用於設定列表框的風格

下面介紹程式中tlistbox 元件常用的屬性。

此屬性預設值為0,列表框以單欄顯示,如果內容太多,列表框將自動加上乙個垂直方向的滾動條。

如果此屬性設為大於0 的值,列表框將首先填滿一欄。如果在一欄中不能完全顯示,就顯示在第2 欄、第3 欄,依次類推,但螢幕上最多隻顯示columns 屬性設定的欄數。

如果此屬性設為2,螢幕上只顯示兩欄,如果實際內容不止兩欄,將自動加上乙個水平方向的滾動條。

此屬性用於設定是否允許使用shift 鍵和ctrl 鍵同時選擇多個項,前提是multiselect 屬性必須設為true,如果extendedselect 屬性設為true,當使用者按下並保持住shift 鍵時就可以選擇多個連續的項,按下並保持住ctrl 鍵就可以選擇多個項(不一定連續)。

如果此屬性設為true,且style 屬性設為isownerdrawfixed 時,列表框的高度將自動調整到列表框中項的高度的整數倍。如果此屬性設為false,列表框的最後一項可能不能完整地顯示,因為列表框的高度不一定正好是itemheight 屬性的整數倍。

當style 屬性設為isownerfixed(使用者自定義)時,此屬性用於設定列表框中每一項的高度。如果integralheight 屬性設為true,整個列表框的高度將隨著itemheight 屬性的值自動調整。如果style屬性設為isstandard 或isownerdrawvariable,itemheight 屬性將無意義。

此屬性用於設定返回列表框中被選擇的項的序號。如果multiselect 屬性設為true,並且使用者選擇了多個項,此屬性返回其中有輸入焦點的項的序號。程式示例**如下:

procedure tform1.formcreate(sender: tobject);

var i: integer;

begin

listbox1.multiselect: = false;

button.caption = 』move to top』;

for i: = 1 to 10 do

listbox1.items.add(』item』 + inttostr(i));

end;

procedure tform1.button1click(sender: tobject);

begin

listbox1.items.move(listbox1.itemindex, 0);

end;

列表框中所有的項都是通過items 屬性訪問的,items 屬性是個典型的tstrings 物件,通過這個物件,可以在執行期操縱列表框中的項,程式示例**如下:

var

f: file;

i: integer;

begin

for i := 0 to (filelistbox1.items.count - 1) do

begin

tryif filelistbox1.selected[i] then

begin

if not fileexists(filelistbox1.items.strings[i]) then

begin

messgedlg(』file: 』 + filelistbox1.items.strings[i] +

』not found』, mterror, [mbok], 0);

continue;

end;

assignfile(f, filelistbox1.items.strings[i]);

reset(f, l);

listbox1.items.add(inttostr(filesize(f)));

closefile(f);

end;

finally

end;

end;

end;

如果此屬性設為true,表示允許同時選擇多項。使用者可以按住ctrl 或shift 鍵不放,用滑鼠選擇專案,或直接用滑鼠拖拽進行選擇。

此屬性用於設定列表框中的項是否要按字母順序排序。對於排序的列表框,通過呼叫add()或insert()所增加的項將自動移到合適的地方。程式示例**如下:

procedure tform1.formcreate(sender: tobject);

begin

listbox1.items.add(』item2』);

listbox1.items.add(』item3』);

listbox1.items.add(』item1』);

listbox1.items.add(』item4』);

end;

此屬性用於設定列表框的風格。它設定了如下3 個使用者可選值。

• lbstandard:每乙個項是乙個字串,每一項高度相同。

• lbownerdrawfixed:項不一定是字串,也可以是影象,項的高度是由itemheight 屬性指定。

在顯示每一項之前都會觸發ondrawitem 事件。

• lbownerdrawvariable:項不一定是字串,也可以是影象,項的高度可以不同。在顯示每一項之前都要觸發兩個事件,第1 個是onmeasureitem 事件,讓程式指定每一項的高度,第2 個是ondrawitem 事件,讓程式畫出每一項。

·ondrawitem 如果style 屬性設為lbownerdrawfixed 或lbownerdrawvariable,且列表框的項需要重畫時,觸發該事件

·onmeasureitem 如果style 屬性設為lbownerdrawvariable,且列表框的項需要重畫時,觸發該事件

tlistbox 元件在程式中常用的方法是clear,它的功能是將列表框內所有的選項刪除。

1、listbox1 的 style 屬性改為 lbownerdrawvariable

2、在listbox的ondrawitem事件裡,根據item的值,改變canvas屬性即可。

例如:

procedure tform1.listbox1drawitem(control: twincontrol; index: integer;

rect: trect; state: townerdrawstate);

begin //字型用原來預設的顏色

if odd(index) then //當items的index為奇數時的顏色

begin

listbox1.canvas.brush.color:=clwindow;

listbox1.canvas.textrect(rect,rect.left,rect.top,listbox1.items[index]);

endelse //當items的index為偶數時的顏色

begin

listbox1.canvas.brush.color:=clinactivecaptiontext;

listbox1.canvas.textrect(rect,rect.left,rect.top,listbox1.items[index]);

end;

if odselected in state then //當選定時的顏色

begin

listbox1.canvas.brush.color:=clhighlight;

listbox1.canvas.textrect(rect,rect.left,rect.top,listbox1.items[index]);

end;

end;

Delphi列表框元件 TListBox 詳解

原文 https 37725275列表框元件 tlistbox 此元件為乙個標準的windows 列表框元件,它用於顯示一系列的列表,使用者可以選擇 加入 刪除或修改其中的專案。1 tllistbox 元件的典型用法 在windows 應用程式中,經常要用到列表框。列表框能夠在乙個可翻滾的視窗中列出...

C 列表框 複選列表框 組合框的使用

功能實現效果 實現 1 宣告相關變數儲存專業 課程設定及相關資訊 csharp string gr,msg,xy string spec,cour1,cour2,cour3,cour4,cour5 2 在form1類中自定義函式bool checkgr 檢查學生資訊 csharp private b...

C C 中使用列表框元件QtListWidget

listwidget列表框元件,該元件與treewidget有些相似,區別在於treewidget可以實現巢狀以及多欄位結構,而listwidget元件則只能實現單字段結構,listwidget元件常用於顯示單條記錄,例如只顯示ip位址,使用者名稱等資料,如下筆記是本人在開發中經常用到的一些基本操作...