Ñïèñîê ïðåäñòàâëÿåò ñîáîé óïîðÿäî÷åííóþ ñîâîêóïíîñòü âçàèìîñâÿçàííûõ ýëåìåíòîâ, ÿâëÿþùèõñÿ òåêñòîâûìè ñòðîêàìè.
Ïðîñòîé ñïèñîê ïðåäñòàâëÿåò ñîáîé ïðÿìîóãîëüíóþ îáëàñòü, â êîòîðîé ðàñïîëàãàþòñÿ åãî ñòðîêîâûå ýëåìåíòû. Äëÿ ðàáîòû ñ ïðîñòûì ñïèñêîì â Delphi ïðåäíàçíà÷åí êîìïîíåíò ListBox.
Åñëè êîëè÷åñòâî ñòðîê áîëüøå, ÷åì èõ ìîæåò ïîìåñòèòüñÿ â âèäèìîé îáëàñòè ñïèñêà, òî ó îáëàñòè îòîáðàæåíèÿ ïîÿâëÿåòñÿ ïîëîñà ïðîêðóòêè. Îðèåíòàöèÿ ïîëîñû ïðîêðóòêè, à òàêæå ÷èñëî ñòîëáöîâ â îáëàñòè ñïèñêà çàâèñÿò îò ñâîéñòâà Columns.
Ïðè ðàáîòå ñî ñïèñêîì ìîæíî óïðàâëÿòü íîìåðîì ýëåìåíòà, êîòîðûé â âèäèìîé îáëàñòè ñïèñêà îòîáðàæàåòñÿ âåðõíèì. Ýòî îáåñïå÷èâàåòñÿ ñâîéñòâîì TopIndex, êîòîðûé äîñòóïåí íà ýòàïå âûïîëíåíèÿ ïðèëîæåíèÿ.
Ñïèñîê ìîæåò èìåòü îáû÷íóþ ðàìêó èëè íå èìåòü. Íàëè÷èå ðàìêè îïðåäåëÿåòñÿ ñâîéñòâîì BorderStyle
Êîìáèíèðîâàííûé ñïèñîê îáúåäèíÿåò ïîëå ðåäàêòèðîâàíèÿ è ñïèñîê. Ïîëüçîâàòåëü ìîæåò âûáèðàòü çíà÷åíèå èç ñïèñêà èëè ââîäèòü åãî íåïîñðåäñòâåííî â ïîëå. Äëÿ ðàáîòû ñ êîìáèíèðîâàííûì ñïèñêîì ñëóæèò êîìïîíåíò ComboBox.
 îòëè÷èå îò ïðîñòîãî, êîìáèíèðîâàííûé ñïèñîê íå ìîæåò èìåòü ãîðèçîíòàëüíóþ ïîëîñó ïðîêðóòêè è äîïóñêàåò âûáîð òîëüêî îäíîãî çíà÷åíèÿ.
Ñâîéñòâî Style îïðåäåëÿåò âíåøíèé âèä è ïîâåäåíèå êîìáèíèðîâàííîãî ñïèñêà.
Ñâîéñòâî DropDownCount îïðåäåëÿåò êîëè÷åñòâî ñòðîê, êîòîðûå îäíîâðåìåííî îòîáðàæàþòñÿ â ðàñêðûâàþùåìñÿ ñïèñêå (ïî óìîë÷àíèþ èìååò çíà÷åíèå 8).
Ñâîéñòâî DroppedDown ëîãè÷åñêîãî òèïà ïîçâîëÿåò îïðåäåëèòü, ðàñêðûò ëè ñïèñîê. Åñëè ýòî ñâîéñòâî èìååò çíà÷åíèå True, òî ñïèñîê îòîáðàæàåòñÿ â ðàñêðûòîì âèäå. Ïî óìîë÷àíèþ ñïèñîê ñâåðíóò.
Ïðè ðàáîòå ñ êîìáèíèðîâàííûì ñïèñêîì ãåíåðèðóþòñÿ ñëåäóþùèå ñîáûòèÿ:
- OnDropDown (îòêðûòèå ñïèñêà);
- OnCloseUp (çàêðûòèå ñïèñêà);
- OnSelect (âûáîð ýëåìåíòà);
- OnChange (èçìåíåíèå òåêñòà â ïîëå ðåäàêòèðîâàíèÿ).
Ïðèìåð:
procedure TForm1.ComboBox1Select(Sender: TObject);
begin
Edit1.Text:=ComboBox1.Text;
end;
Ïðîñòîé è êîìáèíèðîâàííûé ñïèñêè âî ìíîãîì ïîõîæè è èìååò ìíîãî îáùèõ ñâîéñòâ, ìåòîäîâ è ñîáûòèé.
Îíè îòëè÷àþòñÿ äðóã îò äðóãà ïðåæäå âñåãî òåì, ÷òî ListBox òîëüêî îòîáðàæàåò äàííûå è ïîçâîëÿåò ïîëüçîâàòåëþ âûáðàòü èç íèõ òî, ÷òî åìó íàäî, a ComboBox ïîçâîëÿåò òàêæå ðåäàêòèðîâàòü äàííûå. Êðîìå òîãî ðàçëè÷àåòñÿ ôîðìà îòîáðàæåíèÿ ñïèñêîâ. ListBox îòîáðàæàåò ñïèñîê â ðàñêðûòîì âèäå è àâòîìàòè÷åñêè äîáàâëÿåò â ñïèñîê ïîëîñû ïðîêðóòêè, åñëè âñå ñòðîêè íå ïîìåùàþòñÿ â îêíå êîìïîíåíòà. ComboBox ïîçâîëÿåò îòîáðàæàòü ñïèñîê, êàê â ðàçâåðíóòîì âèäå, òàê è â âèäå âûïàäàþùåãî ñïèñêà, ÷òî îáû÷íî óäîáíåå, òàê êàê ýêîíîìèò ïëîùàäü îêíà ïðèëîæåíèÿ.
Îñíîâíûì äëÿ ñïèñêîâ ÿâëÿåòñÿ ñâîéñòâî Items, êîòîðîå ñîäåðæèò ýëåìåíòû ñïèñêà è ïðåäñòàâëÿåò ñîáîé ìàññèâ ñòðîê.
Ýëåìåíòû ñïèñêà ìîæíî îòñîðòèðîâàòü â àëôàâèòíîì ïîðÿäêå. Íàëè÷èå èëè îòñóòñòâèå ñîðòèðîâêè îïðåäåëÿåòñÿ ñâîéñòâîì Sorted. Ïðè çíà÷åíèè False (ïî óìîë÷àíèþ) ýëåìåíòû â ñïèñêå ðàñïîëàãàþòñÿ â ïîðÿäêå â ïîðÿäêå èõ ïîñòóïëåíèÿ â ñïèñîê.  ïðîòèâíîì ñëó÷àå, ýëåìåíòû àâòîìàòè÷åñêè ñîðòèðóþòñÿ ïî àëôàâèòó â ïîðÿäêå âîçðàñòàíèÿ. Äåéñòâèå ýòîãî ñâîéñòâà ÿâëÿåòñÿ ñòàòè÷åñêèì. Ýòî îçíà÷àåò, ÷òî ïðè äîáàâëåíèè ê îòñîðòèðîâàííîìó ñïèñêó íîâûõ ñòðîê îíè ðàçìåùàþòñÿ íà óêàçàííîé ïîçèöèè èëè â êîíöå ñïèñêà. ×òîáû îòñîðòèðîâàòü ñïèñîê, íóæíî ñáðîñèòü çíà÷åíèå ñâîéñòâà â False, à çàòåì ñíîâà óñòàíîâèòü çíà÷åíèå true.
Ïîëüçîâàòåëü ìîæåò âûáèðàòü îòäåëüíûå ñòðîêè ñïèñêà. Âûáðàííûé â ñïèñêå ýëåìåíò îïðåäåëÿåòñÿ ñâîéñòâîì ItemIndex
Edit1.Text:=IntToStr(ListBox1.ItemIndex);
Íà÷àëüíîå çíà÷åíèå ItemIndex íåâîçìîæíî çàäàòü âî âðåìÿ ïðîåêòèðîâàíèÿ. Ïî óìîë÷àíèþ ItemIndex = -1. Ýòî îçíà÷àåò, ÷òî íè îäèí ýëåìåíò ñïèñêà íå âûáðàí.
Ïî óìîë÷àíèþ â ñïèñêå ìîæíî âûáðàòü òîëüêî îäèí ýëåìåíò. Äëÿ âûáîðà äâóõ è áîëåå ýëåìåíòîâ ñâîéñòâî MultiSelect, óïðàâëÿþùåå âîçìîæíîñòüþ âûáîðà íåñêîëüêèõ ñòðîê, óñòàíàâëèâàåòñÿ â çíà÷åíèå True.
×èñëî âûáðàííûõ ýëåìåíòîâ â ñïèñêå âîçâðàùàåò ñâîéñòâî SelCount.
Äëÿ îïðåäåëåíèÿ íîìåðîâ âûáðàííûõ ñòðîê ìîæíî ïðîñìîòðåòü çíà÷åíèÿ ñâîéñòâà Selected, ïðåäñòàâëÿþùåãî ñîáîé ìàññèâ ëîãè÷åñêèõ çíà÷åíèé.
ListBox1.Selected[2]:=True;
Ïðè âûáîðå ýëåìåíòîâ ñïèñêà ïðîèñõîäèò ñîáûòèå OnClick, êîòîðîå ìîæíî èñïîëüçîâàòü äëÿ îáðàáîòêè âûáðàííûõ ñòðîê.
Edit1.Text:=ListBox1.Items[ListBox1.itemindex];
|