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

📄 unit1.pas

📁 数据库封装原代码 1. 该代码可以免费使用, 该代码的名字暂时定为"哲别" 2. 如果你需要使用该代码, 请注明该代码的原来作者: Jacky Zhou 3. 如果你发现该代码有bug,可以自己修改
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, CtrSample, EtyList, EtyUser, EtyCondition, EtyRule, EtySumAge;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    txtUserName: TEdit;
    Label2: TLabel;
    txtAddress: TEdit;
    Label3: TLabel;
    txtAge: TEdit;
    cmdAdd: TButton;
    cmdUpdateAddress1: TButton;
    cmdDelete1: TButton;
    cmdQueryName1: TButton;
    gdUser: TStringGrid;
    cmdQueryAll: TButton;
    cmdClear: TButton;
    cmdQueryLargeAge: TButton;
    cmdUpdateAge: TButton;
    cmdUpdateAllAge: TButton;
    cmdDeleteAll: TButton;
    cmdDeleteAgeLarge20: TButton;
    cmdDelete2: TButton;
    cmdUpdateAddress2: TButton;
    cmdQueryName2: TButton;
    Button1: TButton;
    cmdStoreProcedure: TButton;
    Label4: TLabel;
    txtFromAge: TEdit;
    Label5: TLabel;
    txtToAge: TEdit;
    Label6: TLabel;
    txtSumAge: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure cmdQueryAllClick(Sender: TObject);
    procedure cmdClearClick(Sender: TObject);
    procedure cmdQueryName1Click(Sender: TObject);
    procedure cmdQueryLargeAgeClick(Sender: TObject);
    procedure cmdUpdateAddress1Click(Sender: TObject);
    procedure cmdUpdateAgeClick(Sender: TObject);
    procedure cmdUpdateAllAgeClick(Sender: TObject);
    procedure gdUserSelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure cmdDelete1Click(Sender: TObject);
    procedure cmdUpdateAddress2Click(Sender: TObject);
    procedure cmdDelete2Click(Sender: TObject);
    procedure cmdDeleteAgeLarge20Click(Sender: TObject);
    procedure cmdDeleteAllClick(Sender: TObject);
    procedure cmdQueryName2Click(Sender: TObject);
    procedure cmdAddClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure cmdStoreProcedureClick(Sender: TObject);
  private
    m_CtrSample : TCtrSample;
    m_listUser : TEtyList;
    
    procedure InitGrid();
    procedure RefreshGrid();
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Entity;

{$R *.dfm}

//-----------------------------------------------------------------------------
//                               FormCreate
//-----------------------------------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
begin
  m_CtrSample := TCtrSample.Create;
  m_listUser := TEtyList.Create(TEtyUser.Create);

  //load all users from database
  m_CtrSample.LoadEntityList(m_listUser);

  InitGrid;
  RefreshGrid;
end;

//-----------------------------------------------------------------------------
//                               InitGrid
//-----------------------------------------------------------------------------
procedure TForm1.InitGrid();
begin
  gdUser.FixedRows := 1;
  gdUser.FixedCols := 1;

  //set columons
  gdUser.ColCount := gdUser.FixedCols + 3;

  //set columns' name
  gdUser.Cells[0, 0] := 'Seq';
  gdUser.Cells[1, 0] := 'User Name';
  gdUser.Cells[2, 0] := 'Address';
  gdUser.Cells[3, 0] := 'Age';

  //set gdUser's height and width
end;

//-----------------------------------------------------------------------------
//                               RefreshGrid
//-----------------------------------------------------------------------------
procedure TForm1.RefreshGrid();
var
  i, nCol, nRow : Integer;
  nRowCount : Integer;
  etyUser: IEntity;
begin
  //clear data
  for nRow := gdUser.FixedRows to gdUser.RowCount - 1 do
    for nCol := 0 to gdUser.ColCount - 1 do
      gdUser.Cells[nCol, nRow] := '';

  nRowCount := m_listUser.GetEntityCount;
  if nRowCount = 0 then
  begin
    gdUser.RowCount := gdUser.FixedRows + 1;
    Exit;
  end;
  gdUser.RowCount := gdUser.FixedRows + nRowCount;

  for i := 0 to nRowCount - 1 do
  begin
    //map row
    nRow := i + gdUser.FixedRows;

    //get ety
    etyUser := m_listUser.GetEntity(i);

    //set seq
    gdUser.Cells[0, nRow] := IntToStr(i + 1);

    //set user name
    gdUser.Cells[1, nRow] := etyUser.GetAttributeValue(FD_USER_NAME);

    //set address
    gdUser.Cells[2, nRow] := etyUser.GetAttributeValue(FD_ADDRESS);

    //set age
    gdUser.Cells[3, nRow] := etyUser.GetAttributeValue(FD_AGE);
  end;
end;

//-----------------------------------------------------------------------------
//                               gdUserSelectCell
//-----------------------------------------------------------------------------
procedure TForm1.gdUserSelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
var
  etyUser : IEntity;
begin
  if (gdUser.ColCount <= 0) or (ARow = 0) then
    exit;

  if m_listUser.GetEntityCount = 0 then
    exit;

  etyUser := m_listUser.GetEntity(ARow - gdUser.FixedRows);
  if (etyUser = nil) then
    exit;

  //display user information
  txtUserName.Text := etyUser.GetAttributeValue(FD_USER_NAME);
  txtAddress.Text := etyUser.GetAttributeValue(FD_ADDRESS);
  txtAge.Text := IntToStr(etyUser.GetAttributeValue(FD_AGE));
end;

//-----------------------------------------------------------------------------
//                               cmdClearClick
//-----------------------------------------------------------------------------
procedure TForm1.cmdClearClick(Sender: TObject);
begin
  m_listUser.Clear;

  gdUser.RowCount := gdUser.FixedRows + 1;

  gdUser.Cells[1, 1] := '';
  gdUser.Cells[2, 1] := '';
  gdUser.Cells[3, 1] := '';
end;

//-----------------------------------------------------------------------------
//                              Add Entity
//-----------------------------------------------------------------------------
procedure TForm1.cmdAddClick(Sender: TObject);
var
  etyUser : IEntity;
begin
  //get user name condition
  if txtUserName.Text = '' then
  begin
    Application.MessageBox('please input user name', 'Error');
    exit;
  end;

  etyUser := TEtyUser.Create;

  etyUser.SetAttributeValue(FD_USER_NAME, txtUserName.Text);
  if txtAddress.Text <> '' then
    etyUser.SetAttributeValue(FD_ADDRESS, txtAddress.Text);
  if txtAge.Text <> '' then
    etyUser.SetAttributeValue(FD_AGE, StrToInt(txtAge.Text));

  m_CtrSample.InsertEntity(@etyUser);

  //refresh
  cmdQueryAllClick(Sender);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  etyUser : IEntity;
begin
  //delete all data first
  cmdDeleteAllClick(Sender);

  etyUser := TEtyUser.Create;

  //add jacky
  etyUser.ClearValue;
  etyUser.SetAttributeValue(FD_USER_NAME, 'Jacky Zhou');
  etyUser.SetAttributeValue(FD_ADDRESS, 'Shenzhen');
  etyUser.SetAttributeValue(FD_AGE, 33);
  m_CtrSample.InsertEntity(@etyUser);

  //add didi
  etyUser.ClearValue;
  etyUser.SetAttributeValue(FD_USER_NAME, 'Didi Lei');
  etyUser.SetAttributeValue(FD_ADDRESS, 'Shenzhen');
  etyUser.SetAttributeValue(FD_AGE, 26);
  m_CtrSample.InsertEntity(@etyUser);

  //add dangdang
  etyUser.ClearValue;
  etyUser.SetAttributeValue(FD_USER_NAME, 'Dangdang');
  etyUser.SetAttributeValue(FD_ADDRESS, 'xinJiang');
  etyUser.SetAttributeValue(FD_AGE, 2);
  m_CtrSample.InsertEntity(@etyUser);

  //refresh
  cmdQueryAllClick(Sender);
end;

//-----------------------------------------------------------------------------
//                              Query Entity
//-----------------------------------------------------------------------------
procedure TForm1.cmdQueryName1Click(Sender: TObject);
var
  etyUser : IEntity;
begin
  //get user name condition
  if txtUserName.Text = '' then
  begin
    Application.MessageBox('please select one row', 'Error');
    exit;
  end;

  //query
  etyUser := TEtyUser.Create;

  //这里没有条件参数, 所以必须给etyUser的PK赋值
  etyUser.SetAttributeValue(FD_USER_NAME, txtUserName.Text);
  m_CtrSample.LoadEntity(@etyUser);

  //clear first
  cmdClearClick(Sender);

  //display user infromation
  gdUser.Cells[1, 1] := etyUser.GetAttributeValue(FD_USER_NAME);
  gdUser.Cells[2, 1] := etyUser.GetAttributeValue(FD_ADDRESS);
  gdUser.Cells[3, 1] := IntToStr(etyUser.GetAttributeValue(FD_AGE));

  //add it to list
  m_listUser.AddEntity(etyUser);
end;

procedure TForm1.cmdQueryName2Click(Sender: TObject);
var
  etyCondition : TEtyCondition;
  listCondition : TEtyList;
  etyUser : IEntity;
begin
  //get user name condition
  if txtUserName.Text = '' then
  begin
    Application.MessageBox('please select one row', 'Error');
    exit;
  end;

  etyCondition := TEtyCondition.Create;
  //这里FD_USER_NAME的值是EtyUser.xml文件的<EntityFieldName>
  etyCondition.SetAttributeValue(FD_ENTITY_FIELD_NAME, FD_USER_NAME);
  etyCondition.SetAttributeValue(FD_OPERATION, '=');
  etyCondition.SetAttributeValue(FD_VALUE, txtUserName.Text);

  listCondition := TEtyList.Create(TEtyCondition.Create);
  listCondition.AddEntity(etyCondition);

  //query
  etyUser := TEtyUser.Create;
  m_CtrSample.LoadEntity(@etyUser, listCondition);

  //clear first
  cmdClearClick(Sender);

  //display user infromation
  gdUser.Cells[1, 1] := etyUser.GetAttributeValue(FD_USER_NAME);
  gdUser.Cells[2, 1] := etyUser.GetAttributeValue(FD_ADDRESS);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -