In delphi.net bedauert VCL.net zwei Dinge:
1. ADO (dbGo) kann nicht verwendet werden, aber laut Levi wird diese Komponente in Zukunft verfügbar sein.
2. ADO.net und BDP können nicht verwendet werden, was das Thema dieses Artikels sein wird.
Im Delphi-Kommunikationsbereich von Borland habe ich Danny einmal sagen sehen: „In delphi.net kann VCL.net Winform-Komponenten aufrufen, und Winform kann auch VCL.net-Komponenten aufrufen.“
Um den ersten Satz zu überprüfen, habe ich es versucht. Sie können .Net-Komponenten in Vcl.net verwenden. Sie können beispielsweise direkt System.Data.SqlClient und direkt die SqlConnection-Klasse verwenden. Mit anderen Worten: Obwohl .net-Komponenten nicht im Komponentenfenster von VCL.net sichtbar sind, können alle .net-Komponentenklassen von VCl.net verwendet werden! Allerdings ist der Datensatz von Ado.net nicht mit der Dataset-Komponente von VCl.net kompatibel, sodass die datensensitive Komponente nicht direkt aufgerufen werden kann. Nachdem ich Levi's Inside Vcl gelesen hatte, erfuhr ich jedoch, dass es eine ADONETConnector-Komponente gibt. Mit dieser Komponente kann Ado.net die Verwendung datenbewusster Komponenten unterstützen.
Erstens verfügt die DLL der VCL.net-Komponente über eine Borland.Vcl.Design.AdoNet.dll unter BDS/2.0/Bin. Klicken Sie auf das Menü „.net-Komponente installieren“ und fügen Sie diese DLL dann auf der Seite „.net-VCL-Komponenten“ hinzu Nach einem Klick sehen Sie die ADONETConnector-Komponente. Fügen Sie dann ein Dbgrid, db..., datasoure... hinzu, solange datasource.dataset:=ADONETConnector1. Der Rest ist derselbe wie beim ursprünglichen Delphi, und das war's. Die gleiche Modifikationsmethode ist auch für BDP wirksam.
Mein spezifischer Code lautet wie folgt:
Einheit Einheit1;
Schnittstelle
verwendet
Windows, Nachrichten, SysUtils, Varianten, Klassen, Grafiken, Steuerelemente, Formulare,
Dialoge,
System.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;
Typ
TForm1 = Klasse(TForm)
Button1: TButton;
ADONETConnector1: TADONETConnector;
Datenquelle1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
PROcedure Button1Click(Sender: TObject);
Privat
{Private Erklärungen}
Verbindung:SQLConnection;
ProDataSet: DataSet;
Adapter: SqlDataAdapter;
öffentlich
{Öffentliche Erklärungen}
Ende;
var
Form1: TForm1;
Durchführung
{$R *.nfm}
procedure TForm1.Button1Click(Sender: TObject);
beginnen
Verbindung := SqlConnection.Create('...');
Verbindung.Öffnen;
ProDataSet := DataSet.Create;
Adapter := SqlDataAdapter.Create('select * from Product', Connection);
Adapter.Fill(ProDataSet, 'Product');
ADONETConnector1.DataTable:=ProDataSet.Tables[0];
Ende;
Ende.