⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 agni.grid.form.pas

📁 Delphi网络应用开发的源代码
💻 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 + -