No delphi.net, VCL.net tem dois arrependimentos:
1. ADO (dbGo) não pode ser utilizado, mas segundo Levi, este componente estará disponível no futuro.
2. Não podem ser utilizados ADO.net e BDP, que será o tema deste artigo.
Na área de comunicação delphi da Borland, uma vez vi Danny dizer: "No delphi.net, o VCL.net pode chamar componentes do Winform, e o Winform também pode chamar componentes do VCL.net."
Para verificar a primeira frase, tentei. Você pode usar componentes .Net em Vcl.net. Por exemplo, você pode usar diretamente System.Data.SqlClient e usar diretamente a classe SqlConnection. Em outras palavras, embora os componentes .net não possam ser vistos no painel de componentes do VCL.net, todas as classes de componentes .net podem ser usadas pelo VCl.net! No entanto, o conjunto de dados do Ado.net não é compatível com o componente Dataset do VCl.net, portanto, o componente com reconhecimento de dados não pode ser chamado diretamente. No entanto, depois de ler Levi's Inside Vcl, aprendi que existe um componente ADONETConnector. Usando esse componente, Ado.net pode oferecer suporte ao uso de componentes com reconhecimento de dados.
Primeiro, a dll do componente VCL.net tem um Borland.Vcl.Design.AdoNet.dll em BDS/2.0/Bin. Clique no menu Instalar componente .net e adicione esta dll na página de componentes .net vcl do. formulário. Após um clique, você pode ver o componente ADONETConnector. Em seguida, adicione um Dbgrid, db...., datasoure...., desde que datasource.dataset:=ADONETConnector1. O resto é igual ao Delphi original e pronto. O mesmo método de modificação também é eficaz para o BDP.
Meu código específico é o seguinte,
unidade Unidade1;
interface
usa
Windows, Mensagens, SysUtils, Variantes, Classes, Gráficos, Controles, Formulários,
Diálogos,
Sistema.Data.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;
tipo
TForm1 = classe(TForm)
Botão1: Botão T;
ADONETConnector1: TADONETConnector;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
Procedimento Button1Click(Remetente: TObject);
privado
{Declarações privadas}
Conexão:SqlConnection;
ProDataSet : DataSet;
Adaptador: SqlDataAdapter;
público
{Declarações públicas}
fim;
var
Formulário1: TForm1;
implementação
{$R *.nfm}
procedimento TForm1.Button1Click(Remetente: TObject);
começar
Conexão := SqlConnection.Create('...');
Conexão.Aberta;
ProDataSet := DataSet.Create;
Adaptador := SqlDataAdapter.Create('select * from Product', Connection);
Adapter.Fill(ProDataSet, 'Produto');
ADONETConnector1.DataTable:=ProDataSet.Tables[0];
fim;
fim.