Delphi 3 и создание приложений баз данных


11.3. Компонент 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.




Начало  Назад  Вперед



Книжный магазин