📄 unit1.pas
字号:
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 + -