Компонент TDBCheckBox
Компонент TDBCheckBox позволяет "отметить" и "снять отметку" с логического поля в составе текущей записи НД.
Он обладает функциональностью компонента TCheckBox, но источником данных и их приемником в этом случае служит поле НД.
Свойства property DataSource: TdataSource; property DataField: string;. property ReadOnly: Boolean; имеют такое же назначение, как и аналогичные свойства компонента TDBEdit.
Пример.
Расширим пример, приведенный выше для компонента TDBEdit. Пусть в ТБД "TOV.DB" имеется поле Uzenka (тип Boolean). Значение True в этом поле означает, что товары данной группы подлежат уценке, значение False - не подлежат.Добавим в форму компонент DBCheckBox1 (свойство DataSource = DataSource1, свойство DataField = Uzenka). Тогда в процессе работы можно устанавливать в данное поле значения True или False, делая или не делая отметки DBCheckBox1 (рис. 11.3).
ЗАМЕЧАНИЕ.
При показе содержимого НД Table1 в TDBGrid в столбце Uzenka для тех записей, у которых поле Uzenka содержит True, выводится символ '+', а для тех записей, у которых поле Uzenka содержит False - ничего не выводится. Такая функциональность реализуется в следующем обработчике события OnGetText для поля Uzenka (компонент Table1 Uzenka).procedure TForm1.Table1UzenkaGetText(Sender: TField;
var Text: string;
DisplayText: Boolean);
begin
IF DisplayText and Table1Uzenka.Value THEN Text := '+' ;
end;
Напомним, что событие OnGetText наступает перед показом содержимого поля каждой записи в визуальных компонентах.
Свойство
property Checked : Boolean;
позволяет определить, отмечено поле, на которое ссылается TDBCheckBox (значение True) или не отмечено (False).
Свойство
property State: TCheckBoxState;
возвращает состояние поля. Возможные значения:
cbUnchecked-
поле не отмечено;cbChecked -
поле отмечено;cbGrayed -
промежуточное состояние, когда поле не отмечено, но в нем показывается серый символ отметки. Он означает, что поле не содержит ни True, ни False, а содержит пустое значение. Именно это состояние присуще компоненту DBCheckBoxl при добавлении записей в приводившемся выше примере. Добиться того, чтобы во вновь добавляемых записях поле Uzenka по умолчанию содержало значение False можно в обработчике события OnNew Record компонента Table1 (событие наступает всякий раз при добавлении новой записи):procedure TForm1.Table1NewRecord(DataSet: TDataSet) ;
begin
Table1Uzenka.AsBoolean := False;
end;
Компонент TDBChechBox можно связывать и не с логическим, а с символьным полем. В этом случае необходимо установить значения приводимых ниже свойств.
Свойство
property ValueChecked: string;
устанавливает значения поля, при которых TDBCheckBox переходит в состояние cbChecked. При наличии нескольких значений они разделяются точкой с запятой:
DBCheckBox1.ValueChecked := 'True;Yes;On;Дa;Д';
Свойство
property ValueUnchecked: string;
устанавливает значения поля, при которых TDBCheckBox переходит в состояние cbUnchecked. При наличии нескольких значений они разделяются точкой с запятой:
DBCheckBoxl.ValueUnchecked := 'False;No;Off; Нет;Н';
События
property OnEnter: TNotifyEvent;
property OnExit: TNotifyEvent;
наступают при получении и утрате фокуса управления компонентом.
Событие
property OnClick: TNotifyEvent;
наступает, если на компоненте TDBCheckBox щелкнуть мышью. Поскольку именно таким образом происходит снятие отметки или отметка компонента, данное событие может использоваться для оценки изменения значения свойства Checked.