§ 16. Кампаненты для работы са спісамі радкоў

16.3. Кампанент ListBox

Кампанент спіс — ListBox прызначаны для выбару адной або некалькіх радкоў у спісе. На панэлі кампанентаў Standard кампанент Спіс намаляваны ў выглядзе  , імя аб'екта — ListBox. Кампанент ListBox, змешчаны на форму, атрымлівае імя ListBoxN, дзе N — нумар 1, 2, 3… (прыклад 16.6).

Асноўная ўласцівасць кампанента ListBox, якая змяшчае тэкст акна ў выглядзе спіса радкоў — уласцівасць Items, належыць да тыпу TSring. Пачатковае значэнне спіса радкоў можна задаць на этапе праектавання. Для гэтага трэба націснуць кнопку каля ўласцівасці Items у акне інспектара аб'ектаў. Пры гэтым адкрыецца акно рэдагавання спісаў радкоў (String List Editor). Гэта ж акно выкарыстоўвалася для запаўнення радкоў кампанента Memo.

Пры выкананні праграмы для змены змесціва акна кампанента ListBox прымяняюцца метады класа TString.

Спіс можа мець некалькі слупкоў. Пры запаўненні бягучага слупка радкамі данізу, чарговы радок будзе адлюстроўвацца ў новым слупку.

Некаторыя ўласцівасці кампанента ListBox прыведзены ў прыкладзе 16.7.

Прыклад 16.8. Стварыць спіс часоў года. Пры выбары часу года пералічваць месяцы, якія адносяцца да гэтага часу года.

Этапы выканання задання

  1. Змясціць на форму спіс і метку.
  2. Выкарыстоўваючы рэдактар спісаў радкоў, унесці ў спіс радкі: зіма, вясна, лета, восень.
  3. Ва ўласцівасці Columns устанавіць значэнне 2.
  4. Напісаць апрацоўшчык падзеі OnClick для кампанента ListBox:

Кампанент ListBox аўтаматычна дадасць паласу пракруткі, калі колькасць радкоў не змяшчаецца па вышыні кампанента. Калі колькасць слупкоў не ўстаноўлена (значэнне Columns па змоўчанні роўна 0), то ўзнікае вертыкальная паласа прагорткі. Калі колькасць слупкоў у кампаненце больш за нуль, то ўзнікае гарызантальная паласа пракруткі і даныя дадаюцца ў новы слупок.

Вышыня кожнага радка роўная ItemHeight. Калі трэба, каб пры даданні новага радка паласа пракруткі дакладна не ўзнікла, гэты памер трэба дадаць да вышыні кампанента.

Прыклад 16.6. Кампанент ListBox на форме:

Прыклад 16.7. Некаторыя ўласцівасці кампанента ListBox:

Уласцівасць

Прызначэнне

Columns

Задае колькасць слупкоў у кампаненце для адлюстравання спіса

MultiSelect

Значэнне True у гэтай уласцівасці паказвае, што можна выбраць адначасова некалькі радкоў са спіса

SelCount

Вызначае колькасць вылучаных радкоў у спісе. Уласцівасць даступна толькі для чытання і не можа быць зменена праграмна, не адлюстроўваецца ў інспектары аб'ектаў

Selected[N]

Значэнне True ў гэтай ўласцівасці паказвае, што элемент з нумарам N выдзелены ў спісе (нумарацыя радкоў у спісе пачынаецца з нуля) , не адлюстроўваецца ў інспектары аб'ектаў

ItemIndex

Індэкс вылучанага элемента, калі выбар некалькіх радкоў забаронены, не адлюстроўваецца ў інспектары аб'ектаў, па змоўчанні роўны -1

Sorted

Значэнне True ў гэтай ўласцівасці паказвае, што радкі ў спісе будуць адсартаваныя ў алфавітным парадку

Прыклад 16.8. Форма на этапе праектавання:

Апрацоўшчык падзеі OnClick для кампанента ListBox.

void __fastcall TForm1::ListBox1Click
               (TObject *Sender)

{

  switch (ListBox1->ItemIndex) {

    case 0: {

      Label1->Caption = "Зимние месяцы:

       декабрьянварьфевраль";

      break;

    }

    case 1: {

      Label1->Caption = "Весенние месяцы:

        март, апрель, май";

      break;

    }

     case 2: {

      Label1->Caption = "Летние месяцы:

       июньиюльавгуст";

      break;

    }

     case 3: {

      Label1->Caption = "Осенние месяцы:

       сентябрь, октябрь, ноябрь";

      break;

    }

  }

} 

Дадатак у час працы: