Библиотека Ehlib. Компонент TDBGridEh. Установка checkboxes в ячейках

4 минуты на чтение

Здравствуйте, рассматриваю данную тему — по просьбе читателя моего блога. После того, как он мне задал вопрос: как в TDBGridEh, в полях (в записях), где установлены checkbox (флажки), перенести в другую таблицу. Через пару часов, я скачал последнюю версию библиотеки Ehlib и установил ее. Как мне известно, то в компоненте TDBGridEh, в отличии от того же TDBGrid, присутствует расширенный функционал.  Ну что, давайте рассмотрим простой пример. А для начала сформируем наш проект. На форме у меня следующие компоненты:

  • TDBGridEh
  • TADOQuery
  • TADOConnection
  • TDataSource
  • TButton

Теперь, давайте создадим нашу БД, с которой мы будем работать. Таблица у меня следующей структуры:

То есть, понятно, где у нас будут отображаться checkboxes, там у нас тип Логический, если использовать БД MySQL, то необходимо для данного поля, выбирать тип BOOL.

Теперь давайте настроем немного наши компоненты. Выделяем компонент TADOConnection и свойство LoginPromt устанавливаем в False. Затем, через свойство ConnectionString, подключаемся к нашей БД. Как это сделать, можно посмотреть здесь.

Далее, мы выделяем компонент TDataSource и в свойстве DataSet - выбираем TADOQuery.

После этого, выделяем компонент TADOQuery и в свойстве Connection - выбираем TADOConnection, ну и наконец-то выделяем компонент TDBGridEh и в свойстве DataSource выбираем — TDataSource.

Если, Вы сделали все правильно, то подключение к нашей БД должно работать. Далее, выделяем еще раз компонент TDBGridEh и нажимаем по нему двойным щелчком мыши, после чего должно появиться следующее окно:

В данном окне, мы создаем 2 колонки (TColumns). В свойствах FieldName указываем — id, а второй колонки — checkbox.

Название полей, в свойстве FieldName, должно совпадать — с названием полей, в таблице MS Access (В нашем случае в таблице TableTest)

В свойстве checkboxes поля, в котором необходимо отображать CheckBox устанавливаем в True (в нашем случае это поле — checkbox).

Теперь необходимо активировать нашу таблицу, для этого на событие формы OnShow напишем следующий код:

procedure TForm1.FormShow(Sender: TObject);
begin
   ADOQuery1.SQL.Add('SELECT * FROM TableTest');
   ADOQuery1.Active:=True;
end;

Тут все понятно, в прошлых статьях: по работе с БД MS Access, мы рассматривали данный код подробнее.

Ну, а теперь, давайте попробуем добавить какую-нибудь запись и посмотреть, как она храниться в таблице. Для этого, на событие OnClick TButton напишем следующий код:

procedure TForm1.Button1Click(Sender: TObject);
begin
   ADOQuery1.Insert;
   ADOQuery1.Fields.FieldByName('checkbox').AsVariant:=True;
   ADOQuery1.Post;
end;

Что делаем, мы данным кодом: вставляем запись, устанавливаем указатель (флажок), сохраняем запись.

А теперь давайте попробуем вывести значение поля checkbox. Для это напишем следующий код:

procedure TForm1.Button3Click(Sender: TObject);
begin
   ADOQuery1.First;
   ShowMessage(ADOQuery1.Fields.Fields[1].AsVariant);
end;

Установили указатель на первую запись и вывели результат — сообщением, у меня получилось следующее:

То есть, если указатель установлен, то возвращаться будет True, если нет — False. Все просто.

При использовании БД MySQL и поля BOOL для установки флажков, результатом будет вместо True/False — значение 1 или 0. 1 — установлен флажок, 0 — не установлен

Ну, а теперь, выборка записей, у которых установлен флажок. Для этого, мы частично, воспользуемся статьей.

Выделяем компонент TADOQuery, в свойстве Parameters - создадим новый параметр, которому в свойстве Name укажем check, а в свойстве DataType - ftBoolean. Все, теперь нам остается написать следующий код:

procedure TForm1.Button2Click(Sender: TObject);
begin
   ADOQuery1.SQL.Clear;
   ADOQuery1.SQL.Add('SELECT * FROM TableTest WHERE checkbox=:check');
   ADOQuery1.Parameters.ParamByName('check').Value:=True;
   ADOQuery1.Active:=True;
end;

Все, теперь в нашем запросе находятся все поля, у которых установлен флажок (указатель), и с данными записями можно делать все, что угодно: переносить в другие таблицы, удалять, редактировать и так далее.

Исходник, как всегда, прилагается, качаем его тут (IDE Delphi 7).

Facebook Vk Ok LinkedIn Telegram

Похожие записи:

Доброго времени суток всем. В этой статье я хотел бы поговорить о том, как можно сделать checkboxes в ячейках для любой базы данных в нужном для Вас гриде (Grid). Я уже писал подобную статью  и рассказывал, как в ячейках грида отображать checkboxes, но здесь р...
Доброго времени суток дорогие читатели блога. Хочу поздравить Вас с прошедшими праздниками, пожелать в Новом Году всего самого наилучшего, выполнению всех желаний, чтобы у Вас было все, как Вы задумали. Теперь давайте вернемся непосредственно к самой статье. Д...
Итак, данная статья будет посвящена расширению компонентов ADO - ADOX. Библиотека ADOX, возможно в настоящее время, не очень используется, тут скорее всего больше ее заменяют SQL-запросы, но все же, мы ее поверхностно рассмотрим. Данная библиотека, поможет нам...