Вкладка Controls. Компонент TRxCheckListBox

   
На этом шаге мы рассмотрим компонент TRxCheckListBox.

   
Как и TListBox, компонент TRxCheckListBox
(рис.1) предназначен для хранения и отображения списка строк, и имеет дополнительную
возможность помечать каждую строку в списке, что отражается свойствами
Checked и State. Строка в списке может быть
помечена как активная через индексированное свойство EnabledItem,
что даст возможность изменения свойства Checked пользователем мышью
во время выполнения программы.


Рис.1. Компонент TRxCheckListBox

   
Для отметки строк в списке могут быть использованы как изображения, используемые
в check-boxes, так и изображения radio-buttons, в
зависимости от значения свойства CheckKind. Во втором случае
одновременно может быть помечен только один элемент в списке (как в TRadioGroup).

   
Доступны все свойства и методы компонентов TListBox,
TTextListBox.

   
При свойстве AutoScroll = True происходит автоматическая установка
горизонтальной полосы скроллинга списка по максимальной длине строки. Если при
этом список имеет стиль lbOwnerDrawVariable или lbOwnerDraFixed,
то Вы можете задать диапазон скроллинга через обработчик события OnGetItemWidth.

   
Рассмотрим свойства компонента TRxCheckListBox:

Таблица 1. Свойства компонента TRxCheckListBox

СвойствоОписание
property Checked [Index: Integer]: Boolean;Индексированное свойство предназначено для хранения отметок о состоянии строк Items (отмечена или нет).
В режиме дизайна формы это свойство доступно через редактор свойства Items.
property State [Index: Integer]: TCheckBoxState;Свойство аналогично по действию свойству State компоненты TCheckBox и имеет смысл для конкретного элемента в списке.
При значении свойства CheckKind = ckRadioButtons только один элемент в списке может быть отмеченным (иметь состояние cbChecked).
property EnabledItem [Index: Integer]: Boolean; Индексированное свойство предназначено для хранения отметок об активности (разрешенности) строк Items.
В режиме дизайна формы это свойство доступно через редактор свойства Items.
property CheckKind: TCheckKind;Определяет вид изображений, отображающих пометку элемента в списке и поведение списка TRxCheckListBox.

  • Изображения те же, что и в Check-Boxes - в этом случае может быть помечено сколько угодно строк списка;
  • Изображения те же, что и в CheckMarks - в этом случае может быть помечено сколько угодно строк списка;
  • Изображения те же, что и в Radio-Buttons - при этом может быть помечен только один элемент списка.
      При значении свойства ckRadioButtons номер отмеченного элемента в списке задается свойством CheckedIndex.
property CheckedIndex: Integer; Свойство имеет смысл только при значении свойства CheckKind = ckRadioButtons и определяет
номер отмеченного элемента в списке.
property AutoScroll: Boolean; Свойство определяет, будет ли автоматически появляться горизонтальная полоса скроллинга в компоненте при длинах строк, превышающих ширину компоненты (по умолчанию True).
property OnGetItemWidth: TGetItemWidthEvent; Событие вызывается при стиле lbOwnerDrawVariable или lbOwnerDraFixed и установленном в
True значении свойства AutoScroll для определения диапазона горизонтального скроллинга компонента.
В обработчике события можно задать соотвествующую ширину, присвоив значение параметру Width.

   
Приведем пример: создадим приложение, которое позволит менять внешний вид
компонента TRxCheckListBox и отображать, какие строки в
списке являются выделенными.

   
Поместим на форму RxCheckListBox1, TextListBox1,
RxLabel1, RxSpeedButton1 (рис.2).


Рис.2. Форма с размещенными на ней компонентами RxCheckListBox1,
TextListBox1, RxLabel1, RxSpeedButton1
 

   
RxSpeedButton1 – это кнопка, при нажатии на которую меняется
значение свойства CheckKind компонента RxCheckListBox1 и
соответственно свойство Caption компонента
RxSpeedButton1.

   
Свойству Items компонента Text
ListBox1 придадим значение:

   
TextListBox1.Items[0] :=‘ Выделены :';

   
TextListBox1.Items[1] :=‘ 1) Смоленцева Екатерина Борисовна';

   
Для компонента RxCheckListBox1 напишем обработчик события
OnClickCheck:

procedure TForm1.RxCheckListBox1ClickCheck(Sender: TObject);
begin
       TextListBox1.Clear;
       TextListBox1.Items.Add('Выделены:');
       For   i:=0     to     RxCheckListBox1.Items.Capacity-1   do
          if     RxCheckListBox1.Checked[i]=true       then
                 TextListBox1.Items.Add(RxCheckListBox1.Items[i]);
end;

   
Для компонента RxSpeedButton2 напишем обработчик события
OnClick:

procedure TForm1.RxSpeedButton1Click(Sender: TObject);
begin
  TextListBox1.Clear;        
end;

   
Для компонента RxSpeedButton2 напишем обработчик события
OnClick:

procedure TForm1.RxSpeedButton2Click(Sender: TObject);
begin
    if     RxSpeedButton2.Caption='ckCheckBoxes'    then
      begin
             RxCheckListBox1.CheckKind:=ckCheckMarks;
             RxSpeedButton2.Caption:='ckCheckMarks';
      end
    else
          if    RxSpeedButton2.Caption='ckCheckMarks'        then
            begin
                 RxCheckListBox1.CheckKind:=ckRadioButtons;
                 RxSpeedButton2.Caption:='ckRadioButtons';
            end
          else
              begin
                   RxCheckListBox1.CheckKind:=ckCheckBoxes;
                   RxSpeedButton2.Caption:='ckCheckBoxes';
              еnd;
end;

   
Работа программы показана на рис.3(а-в).


Рис.3а. В списке отмечена четвертая строка


Рис.3б. Свойство CheckKind изменено. В списке отмечены вторая, четвертая и седьмая строки


Рис.3в. Свойство CheckKind изменено. В списке отмечены вторая и шестая строки

   
Текст этого примера можно взять здесь.

   
На следующем шаге мы рассмотрим компонент TFontComboBox.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий