📄 agni.grid.form.pas
字号:
//*********************************
// Use at your own risk.
// No warranties, no liabilities.
// Also, no restrictions on usage.
//*********************************
// Master Detail Demo
// 1) You need to set up the Relation manually using
// customersDataset1.Relations.Add(...) in the code.
// 2) Note that the orders grid changes when you move the customer selection.
// 3) You can add new records etc. but posting to database is not implemented.
//*********************************
unit Agni.Grid.Form;
interface
uses
System.Windows.Forms,
System.ComponentModel,
System.Drawing,
System.Data,
System.Data.SqlClient;
type
TForm1 = class(Form)
private
components: System.ComponentModel.Container ;
statusBar1 : System.Windows.Forms.StatusBar;
customersDataSet1 : DataSet;
buttonLoad : System.Windows.Forms.Button;
dataGrid1, dataGrid2 : System.Windows.Forms.DataGrid;
public
constructor Create;
procedure InitializeComponent;
procedure Button1_Click( Sender : TObject; E : EventArgs );
end;
var
Form1: TForm1;
implementation
{ TForm1 }
// Button1按钮的点击事件响应函数,用于连接到数据库,并从数据库中读取数据
procedure TForm1.Button1_Click(Sender: TObject; E: EventArgs);
var
currentCursor : System.Windows.Forms.Cursor;
con : SqlConnection;
cmdCustomers ,
cmdOrders: SqlDataAdapter ;
//cmdOrderDetails : SqlDataAdapter;
colMaster, colDetail: array[0..0] of DataColumn;
begin
currentCursor := Cursor.Get_Current();
try
//创建SqlConnection连接
con := SqlConnection.Create('Data Source=(local);Trusted_Connection=yes;Initial Catalog=northwind');
// 利用SqlConnection读取数据
cmdCustomers := SqlDataAdapter.Create('Select * from Customers', con);
cmdOrders := SqlDataAdapter.Create('Select * from Orders', con);
statusBar1.Text :='Loading Customers...';
customersDataset1.Clear;
cmdCustomers.Fill(customersDataSet1, 'Customers');
dataGrid1.DataSource := customersDataset1;
statusBar1.Text :='Loading Orders...';
cmdOrders.Fill(customersDataSet1, 'Orders');
colMaster[0] := customersDataset1.Tables['Customers'].Columns['CustomerID'];
colDetail[0] := customersDataset1.Tables['Orders'].Columns['CustomerID'];
customersDataset1.Relations.Clear;
customersDataset1.Relations.Add( DataRelation.Create('CustomersOrders',
colMaster,
colDetail,
false));
dataGrid1.DataMember := 'Customers';
dataGrid2.DataMember := 'Customers.CustomersOrders';
finally
statusBar1.Text :='Done';
//Cursor.Current := currentCursor;
end;
end;
constructor TForm1.Create;
begin
inherited Create;
InitializeComponent();
end;
// 创建和初始化各个控件
procedure TForm1.InitializeComponent;
var MyControls : array[0..3] of Control;
ts : DataGridTableStyle;
begin
Self.components := System.ComponentModel.Container.Create();
Self.dataGrid1 := System.Windows.Forms.DataGrid.Create();
Self.dataGrid2 := System.Windows.Forms.DataGrid.Create();
Self.statusBar1 := System.Windows.Forms.StatusBar.Create();
Self.customersDataSet1 := DataSet.Create();
Self.buttonLoad := System.Windows.Forms.Button.Create();
dataGrid1.BeginInit();
if ( dataGrid1.TableStyles.Count = 0 ) then
begin
ts := DataGridTableStyle.Create();
ts.MappingName:='Customers';
dataGrid1.TableStyles.Add(ts);
end;
Self.dataGrid1.Text := 'dataGrid1';
with dataGrid1.TableStyles['Customers'] do
PreferredRowHeight := 16;
Self.dataGrid1.TableStyles['Customers'].AlternatingBackColor := System.Drawing.Color.WhiteSmoke;
Self.dataGrid1.Size := System.Drawing.Size.Create(584, 300);
Self.dataGrid1.DataSource := customersDataSet1;
Self.dataGrid1.ForeColor := System.Drawing.Color.Navy;
Self.dataGrid1.TabIndex := 0;
Self.dataGrid1.Anchor := AnchorStyles( Integer(AnchorStyles.Top) or
Integer(AnchorStyles.Left) or
Integer(AnchorStyles.Right));
Self.dataGrid1.Location := System.Drawing.Point.Create(8, 8);
Self.dataGrid1.BackColor := System.Drawing.Color.Gainsboro;
if ( dataGrid2.TableStyles.Count = 0 ) then
begin
ts := DataGridTableStyle.Create();
ts.MappingName:='Orders';
dataGrid2.TableStyles.Add(ts);
end;
Self.dataGrid2.Text := 'dataGrid2';
with dataGrid2.TableStyles['Orders'] do
PreferredRowHeight := 16;
Self.dataGrid2.TableStyles['Orders'].AlternatingBackColor := System.Drawing.Color.WhiteSmoke;
Self.dataGrid2.Size := System.Drawing.Size.Create(584, 250);
Self.dataGrid2.DataSource := customersDataSet1;
Self.dataGrid2.ForeColor := System.Drawing.Color.Navy;
Self.dataGrid2.TabIndex := 0;
Self.dataGrid2.Anchor := AnchorStyles( Integer(AnchorStyles.Top) or
Integer(AnchorStyles.Bottom) or
Integer(AnchorStyles.Left) or
Integer(AnchorStyles.Right));
Self.dataGrid2.Location := System.Drawing.Point.Create(8, 320);
Self.dataGrid2.BackColor := System.Drawing.Color.Gainsboro;
Self.AutoScaleBaseSize := System.Drawing.Size.Create(5, 13);
Self.Text := 'Customer and Order Details';
Self.AcceptButton := buttonLoad as IButtonControl;
Self.ClientSize := System.Drawing.Size.Create(600, 653);
Self.statusBar1.BackColor := System.Drawing.SystemColors.Control;
Self.statusBar1.Location := System.Drawing.Point.Create(0, 600);
Self.statusBar1.Size := System.Drawing.Size.Create(600, 16);
Self.statusBar1.TabIndex := 2;
Self.statusBar1.Text := 'Click on Load';
Self.buttonLoad.Anchor := AnchorStyles( Integer(AnchorStyles.Right) or Integer(AnchorStyles.Bottom));
Self.buttonLoad.add_click(button1_Click);
Self.buttonLoad.FlatStyle := System.Windows.Forms.FlatStyle.Flat;
Self.buttonLoad.Location := System.Drawing.Point.Create(480, 602);
Self.buttonLoad.Size := System.Drawing.Size.Create(112, 32);
Self.buttonLoad.TabIndex := 1;
Self.buttonLoad.Text := '&Load';
MyControls[0] := Self.statusBar1;
MyControls[1] := Self.buttonLoad;
MyControls[2] := dataGrid1;
MyControls[3] := dataGrid2;
Self.Controls.AddRange(MyControls);
Self.dataGrid1.EndInit();
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -