Delphi Deep Exploration-Database-Clear ActiveX Control
Мощная функция разработки баз данных, несомненно, является жемчужиной Delphi. По крайней мере, 80% людей используют Delphi для разработки программ баз данных каждый день. Основываясь на стандартном блоке управления базой данных VCL, а также на мощных сторонних средствах четкого управления базами данных, предоставляемых такими компаниями, как Dev ExPRess и Woll2Woll, не будет преувеличением сказать, что нам нужно всего лишь установить свойства и перетащить мышью. несколько раз, чтобы очень быстро завершить разработку программы. Поскольку функция базы данных Delphi слишком мощная, многие упускают из виду тот факт, что ActiveX также может обеспечивать гибкую привязку к базе данных. К сожалению, ни один из нескольких сторонних элементов управления ActiveX, предоставляемых самой Delphi, не подходит для управления базами данных, что косвенно привело к недопониманию. , в результате чего многие люди ошибочно полагают, что Delphi не поддерживает элементы управления ActiveX с четкими данными (в том числе и я, давным-давно). Это, конечно, ошибочное мнение. Использование элемента управления ActiveX для очистки данных в Delphi. В следующем примере мы будем использовать элемент управления Microsoft Calendar 9.0, установленный в системе с Office 2000, для демонстрации. Это элемент управления для очистки данных. Выберите «Компонент | Импортировать элемент управления ActiveX», выберите Microsoft Calendar 9.0 (см. рис. 1.12 ниже), измените имя класса с TCalendar на TAXCalendar, чтобы избежать конфликта с исходным одноименным элементом управления в системе, а затем нажмите кнопку «Установить», чтобы установить его. контроль.
Создайте новую программу и поместите в форму элемент управления TAXCalendar. Поместите еще один элемент управления DataSource и Table. Установите для набора данных DataSource значение Table1, затем установите для свойства DataBaseName Table1 значение DBDEMOS, для свойства TableName — EMPLOYEE.DB и, наконец, установите для свойства Table1.Active значение True. Затем пришло время привязать базу данных. Обратите внимание, что представленный TAXCalendar имеет два свойства, DataSource и DataBindings, которые отличаются от обычного элемента управления ActiveX. Это связано с тем, что мастер импорта ActiveX перед внедрением сначала определяет, является ли этот элемент управления дружественным к базе данных. элемент управления ActiveX. Если да, используйте TDBOleControl в качестве базового класса для наследования. Если нет, наследуйте от TOleControl. TDBOleControl реализует свойства DataBindings и DataSource. Установите для свойства AXCalendar1.DataSource значение Datasource1. В настоящее время, если мы щелкнем правой кнопкой мыши элемент управления TAXCalendar в форме, мы обнаружим дополнительный пункт DataBindings... в контекстном меню (см. рис. 1.13 ниже).
После нажатия на пункт меню откроется окно редактирования атрибута привязки данных (см. рис. 1.14 ниже). Выберите HireDate в списке FieldName, выберите Value(12) в списке Property Name (12 — это число Dispid значения) и нажмите кнопку Bind, чтобы установить связь данных между полем базы данных и свойством Value.
Наконец, поместите в форму элементы управления DBGrid и DBNavigator и установите для их DataSource значение DataSource1. Когда вы запустите программу и переместите текущую позицию данных, вы можете заметить, что отображение даты в ActiveX также изменится соответствующим образом в соответствии с Hiredate в базе данных. Как показано на рисунке 1.15:
Создание элементов управления ActiveX с очисткой данных Хотя мы уже знаем, что Delphi действительно может использовать элементы управления ActiveX с очисткой данных, возникает новый вопрос. Может ли Delphi сама создавать элементы управления ActiveX с очисткой данных? Поскольку Delphi обеспечивает одноэтапное преобразование и создание элементов управления ActiveX, многие люди надеются преобразовать мощные элементы управления базой данных в Delphi в элементы управления ActiveX, чтобы они могли по-прежнему пользоваться теми же возможностями, что и в Delphi, при разработке программ базы данных в других средах разработки, поддерживающих ActiveX. То же чувство расслабленности и счастья. Но, как я упоминал в первой части, поскольку внутренний механизм управления очисткой данных в Delphi слишком отличается от механизма управления базой данных ActiveX, Delphi не может просто напрямую преобразовать свой мощный элемент управления базой данных. Означает ли это, что мы ничего не можем сделать? конечно, нет! На самом деле, используя редактор библиотеки типов, мы можем очень легко реализовать элемент управления ActiveX с чистыми данными. Давайте попробуем это с помощью элемента управления TEdit и посмотрим, как это сделать. Выберите команду меню Создать | ActiveX | Элемент управления ActiveX, чтобы запустить мастер преобразования элементов управления ActiveX, выберите элемент управления TEdit в качестве объекта преобразования и сгенерируйте структуру EditX ActiveX. Далее мы преобразуем свойство Text TEdit для поддержки привязки данных. Выберите «Просмотр | Библиотека типов», чтобы просмотреть библиотеку типов, созданную Delphi, выберите свойство «Текст», а затем переключитесь на страницу свойств «Флаги» (см. рис. 1.16 ниже).
Обратите внимание, что на странице свойств «Флаги» имеется множество флажков. Нас интересуют только параметры, связанные с привязкой данных. Это параметры «Привязка», «Отображение привязки», «Привязка по умолчанию», «Немедленная привязка» и «Запросить редактирование». После пометки свойства как привязываемого и привязки его к полю базы данных, когда пользователь изменяет свойство, элемент управления уведомляет базу данных о том, что значение изменилось, и запрашивает базу данных для записи состояния обновления. База данных, в свою очередь, уведомит, будет ли это изменение. обновление записи прошло успешно. Параметр Bindable указывает, что свойство поддерживает привязку данных. Если свойство помечено как привязываемое, оно уведомит свой контейнер при изменении его значения. Request Edit указывает, что свойство поддерживает сообщения уведомлений OnRequestEdit, что позволяет элементу управления запрашивать контейнер, разрешено ли пользователю изменять значение свойства. Отображение привязки означает, что контейнер может показать пользователю, что это свойство можно привязывать. Привязываемый по умолчанию означает, что это единственный атрибут, который можно привязывать по умолчанию. Чтобы его использовать, атрибут Bindable должен быть отмечен одновременно. Если отмечена опция «Немедленная привязка», все изменения будут уведомлены, и необходимо установить флаги «Привязка» и «Запросить редактирование». Затем мы отмечаем свойство Text элемента управления EditX как Bindable, Display Bindable, Default Bindable и Request Edit. Затем нажмите кнопку «Обновить», чтобы обновить библиотеку типов, и, наконец, выберите «Выполнить | Зарегистрировать сервер ActiveX», чтобы зарегистрировать элемент управления ActiveX. Когда вы познакомитесь с новым элементом управления ActiveX EditX, вы обнаружите, что он действительно реализует функцию привязки данных. Ниже представлена диаграмма 1.17 работы программы EditX, которая использует очистку данных (реализация функции очистки данных ActiveX в Delphi действительно существует. просто и круто, не так ли?