В delphi.net у VCL.net есть два сожаления:
1. ADO (dbGo) использовать нельзя, но по словам Леви, этот компонент будет доступен в будущем.
2. ADO.net и BDP использовать нельзя, что и станет темой этой статьи.
Однажды в области связи Borland с Delphi я увидел, как Дэнни сказал: «В delphi.net VCL.net может вызывать компоненты Winform, а Winform также может вызывать компоненты VCL.net».
Чтобы проверить первое предложение, я попробовал. Вы можете использовать компоненты .Net в Vcl.net. Например, вы можете напрямую использовать System.Data.SqlClient и напрямую использовать класс SqlConnection. Другими словами, хотя компоненты .net не отображаются на панели компонентов VCL.net, все классы компонентов .net могут использоваться VCl.net! Однако набор данных Ado.net несовместим с компонентом набора данных VCl.net, поэтому компонент, поддерживающий данные, нельзя вызвать напрямую. Однако, прочитав Levi's Inside Vcl, я узнал, что существует компонент ADONETConnector. С помощью этого компонента Ado.net может поддерживать использование компонентов, поддерживающих данные.
Во-первых, dll компонента VCL.net имеет Borland.Vcl.Design.AdoNet.dll в разделе BDS/2.0/Bin. Откройте меню «Установить компонент .net», а затем добавьте эту dll на страницу компонентов .net vcl. После щелчка мыши вы увидите компонент ADONETConnector. Затем добавьте Dbgrid, db...., datasoure...., если datasource.dataset:=ADONETConnector1. В остальном всё то же самое, что и в оригинальном Delphi, и всё. Тот же метод модификации эффективен и для BDP.
Мой конкретный код выглядит следующим образом:
блок Unit1;
интерфейс
использует
Windows, сообщения, SysUtils, варианты, классы, графика, элементы управления, формы,
Диалоги,
Система.Данные.SqlClient,
System.Data, System.ComponentModel, Borland.Vcl.StdCtrls,
Borland.Vcl.ExtCtrls, Borland.Vcl.DBCtrls, Borland.Vcl.Grids,
Borland.Vcl.DBGrids, Borland.Vcl.Db, Borland.Vcl.ADONETDb;
тип
ТФорм1 = класс (ТФорма)
Кнопка1: Кнопка T;
ADONETConnector1: TADONETConnector;
Источник данных1: TDataSource;
БДБгрид1: ТДБгрид;
ДБНавигатор1: ТДБНавигатор;
PROcedure Button1Click (Отправитель: TObject);
частный
{Частные заявления}
Соединение: SqlConnection;
Продатасет : набор данных;
Адаптер: SqlDataAdapter;
общественный
{Публичные заявления}
конец;
вар
Форма1: ТФорм1;
выполнение
{$R *.nfm}
процедура TForm1.Button1Click(Отправитель: TObject);
начинать
Соединение := SqlConnection.Create('...');
Соединение.Открыть;
ProDataSet := DataSet.Create;
Адаптер:= SqlDataAdapter.Create('выберите * из продукта', Connection);
Адаптер.Заполнить(ProDataSet, 'Продукт');
ADONETConnector1.DataTable:=ProDataSet.Tables[0];
конец;
конец.