Chez delphi.net, VCL.net a deux regrets :
1. ADO (dbGo) ne peut pas être utilisé, mais selon Levi, ce composant sera disponible à l'avenir.
2. ADO.net et BDP ne peuvent pas être utilisés, ce qui sera le thème de cet article.
Dans la zone de communication Delphi de Borland, j'ai vu un jour Danny dire : « Dans Delphi.net, VCL.net peut appeler des composants Winform, et Winform peut également appeler des composants VCL.net.
Afin de vérifier la première phrase, je l'ai essayé. Vous pouvez utiliser des composants .Net dans Vcl.net. Par exemple, vous pouvez utiliser directement System.Data.SqlClient et utiliser directement la classe SqlConnection. En d'autres termes, bien que les composants .net ne soient pas visibles dans le panneau des composants de VCL.net, toutes les classes de composants .net peuvent être utilisées par VCl.net ! Cependant, l'ensemble de données d'Ado.net n'est pas compatible avec le composant Dataset de VCl.net, donc le composant orienté données ne peut pas être appelé directement. Cependant, après avoir lu Levi's Inside Vcl, j'ai appris qu'il existe un composant ADONETConnector. Grâce à ce composant, Ado.net peut prendre en charge l'utilisation de composants prenant en charge les données.
Tout d'abord, la DLL du composant VCL.net a un Borland.Vcl.Design.AdoNet.dll sous BDS/2.0/Bin. Cliquez sur le menu Installer le composant .net, puis ajoutez cette DLL dans la page des composants .net vcl du fichier. Après un clic, vous pouvez voir le composant ADONETConnector. Ajoutez ensuite un Dbgrid, db...., datasoure...., tant que datasource.dataset:=ADONETConnector1. Le reste est le même que le Delphi original, et c'est tout. La même méthode de modification est également efficace pour BDP.
Mon code spécifique est le suivant,
unité Unité1 ;
interface
utilise
Windows, messages, SysUtils, variantes, classes, graphiques, contrôles, formulaires,
Dialogues,
Système.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 ;
taper
TForm1 = classe(TForm)
Bouton1 : TButton ;
ADONETConnecteur1 : TADONETConnecteur ;
Source de données1 : TDataSource ;
DBGrid1 : TDBGrid ;
DBNavigateur1 : TDBNavigateur ;
PProcédure Button1Click (Expéditeur : TObject );
privé
{Déclarations privées}
Connexion : SqlConnection ;
ProDataSet : DataSet;
Adaptateur : SqlDataAdapter ;
publique
{Déclarations publiques}
fin;
var
Formulaire1 : TForm1 ;
mise en œuvre
{$R *.nfm}
procédure TForm1.Button1Click(Expéditeur : TObject);
commencer
Connexion := SqlConnection.Create('...');
Connexion.Ouvert;
ProDataSet := DataSet.Create;
Adaptateur := SqlDataAdapter.Create('select * from Product', Connection);
Adaptateur.Fill (ProDataSet, 'Produit');
ADONETConnector1.DataTable:=ProDataSet.Tables[0];
fin;
fin.