准备开源两个delphi组件,想听听大家的意见
2013-05-11 02:08
344 查看
自己写的组件中最有价值的两个,一个叫TFieldEdit,一个叫TSQLCmd
上面图中的Edit, ListBox, Memo其实都同是一个组件,有统一的数据访问接口。同时TFieldEdit组件还进行数据合法性检查,比如是否required,数据类型,长度等等。支持MaskEdit,支持正则表达式验证。目前支持的数据类型有:
TDataType = (dtString, dtInteger, dtFloat, dtMoney, dtHex, dtBinary,
//字符串,整型,浮点型,货币,十六进制,二进制
dtList, dtComboList, dtCheckList, dtDateStr, dtTimeStr, dtPassword, dtNumber, dtMemo,
//单选列表,组合列表,多选列表,日期字符串,时间字符串,密码,数字,备注框
dtDate, dtTime);
//日期,时间
另外一个组件是TSQLCmd,目的是封装数据库的操作,贴一段代码给大家看:
单行录入:
with SQLCmd1 do begin
CmdStr[0] := 'NewCustomerCommit';
CmdStr[1] := Location.ID;
CmdStr[2] := Oper.Opid;
CmdStr[3] := self.FETitle.TmpStr;
CmdStr[4] := self.FEFirstName.TmpStr;
CmdStr[5] := self.FEMiddleName.TmpStr;
CmdStr[6] := self.FELastName.TmpStr;
CmdStr[7] := self.FECompany.TmpStr;
CmdStr[8] := TFunc.BoolToStr(self.CheckBoxCompany.Checked,'0','1');
CmdStr[9] := self.FEAddress1.TmpStr;
CmdStr[10] := self.FEAddress2.TmpStr;
CmdStr[11] := self.FECity.TmpStr;
CmdStr[12] := self.FEState.TmpStr;
CmdStr[13] := self.FEZipcode.TmpStr;
CmdStr[14] := self.FEHomePhone.TmpStr;
CmdStr[15] := self.FEWorkPhone.TmpStr;
CmdStr[16] := self.FECellPhone.TmpStr;
CmdStr[17] := self.FEFax.TmpStr;
CmdStr[18] := self.FEBirthMonth.TmpStr+self.FEBirthDay.TmpStr;
CmdStr[19] := self.FEEmail.TmpStr;
CmdStr[20] := TFunc.BoolToStr(self.CheckBoxReceiveAD.Checked,'0','1');
CmdStr[21] := self.FEKnowUsWay.TmpStr;
CmdStr[22] := self.FEOther.TmpStr;
CmdStr[23] := FReferBy;
CmdStr[24] := FEPrintBy.TmpStr;
CmdStr[25] := FENote.TmpStr;
CmdStr[26] := TFunc.BoolToStr(self.CheckBoxTax.Checked,'0','1');
CmdStr[27] := self.FEReferralCode.TmpStr;
CmdStr[28] := Self.FETerm.TmpStr;
CmdStr[29] := self.FETaxCode1.TmpStr;
CmdStr[30] := self.FETaxCode2.TmpStr;
CmdStr[31] := self.FETaxCode3.TmpStr;
CmdCount := 32;
if ExecuteCommand then begin
result := true;
ShowStatusHintMsg('Commit OK!');
TFieldEdit.Clear(self.PanelTop);
SetEditDefaultValue;
if FormStyle=fsNormal then
ModalResult := mrOK;
end
else begin
ShowStatusHintMsg('Commit Error!');
end;
end;
多行录入:
with SQLCmd1 do begin
ClearCmdData;
//Cmd: 1-location,2-operid,3-orderno,4-invoice,5-vendor,6-end date,7-ship method,8-tracking,9-subtotal
// 10-shipping,11-amount,12-paid by,13-note,14-serviceno,15-busitype,
CmdStr[0] := 'NewOrderCommit';
CmdStr[1] := FELocation.TmpStr;
CmdStr[2] := Oper.Opid;
CmdStr[3] := FEOrderNo.TmpStr;
CmdStr[4] := FEInvoice.TmpStr;
CmdStr[5] := FEVendor.TmpStr;
CmdStr[6] := FEEndDate.TmpStr;
CmdStr[7] := FEShipMethod.TmpStr;
CmdStr[8] := FETrackCode.TmpStr;
CmdStr[9] := FESubTotal.TmpStr;
CmdStr[10] := FormatFloat('0.00',FEShipping.AsFloat);
CmdStr[11] := FEAmount.TmpStr;
CmdStr[12] := FEPaidBy.TmpStr;
CmdStr[13] := FENote.TmpStr;
CmdStr[14] := FEServiceNo.TmpStr;
CmdStr[15] := FEServiceNo.Hint; //busitype
CmdStr[16] := IntToStr(Round(AdvStringGridItem.ColumnSum(2,1,AdvStringGridItem.RowCount-1)));
CmdCount := 17;
AddCmdRow;
//Item: 1-itemid,2-name,3-qty,4-rate,5-amount,6-tsf,7-memo,8-kind,9-orderno,10-location
with self.AdvStringGridItem do begin
for iRow:=1 to RowCount-1 do begin
CmdStr[0] := 'Item';
CmdStr[1] := GridCells[0,iRow]; //itemid
CmdStr[2] := GridCells[1,iRow]; //name
CmdStr[3] := GridCells[2,iRow]; //qty
CmdStr[4] := GridCells[3,iRow]; //rate
CmdStr[5] := GridCells[4,iRow]; //amount
CmdStr[6] := GridCells[5,iRow]; //tsf
CmdStr[7] := GridCells[6,iRow]; //memo
CmdStr[8] := GridCells[7,iRow]; //kind
CmdStr[9] := FEOrderNo.TmpStr;
CmdStr[10] := FELocation.TmpStr;
CmdCount := 11;
AddCmdRow;
end;
end;
if ExecuteCommandM then begin
TFieldEdit.Clear(PanelEdit);
self.AdvGroupBoxSpecialOrder.CheckBox.Checked := false;
self.FEOrderNo.Clear;
self.InitScreen;
end;
end;
基本上这个组件封装了所有的数据库查询和更新操作,以及事务。使得整个项目中统一数据库的访问接口。组件背后是TADOQuery
想听听大家的意见,如果没人感兴趣,就只好留着自己用了。
上面图中的Edit, ListBox, Memo其实都同是一个组件,有统一的数据访问接口。同时TFieldEdit组件还进行数据合法性检查,比如是否required,数据类型,长度等等。支持MaskEdit,支持正则表达式验证。目前支持的数据类型有:
TDataType = (dtString, dtInteger, dtFloat, dtMoney, dtHex, dtBinary,
//字符串,整型,浮点型,货币,十六进制,二进制
dtList, dtComboList, dtCheckList, dtDateStr, dtTimeStr, dtPassword, dtNumber, dtMemo,
//单选列表,组合列表,多选列表,日期字符串,时间字符串,密码,数字,备注框
dtDate, dtTime);
//日期,时间
另外一个组件是TSQLCmd,目的是封装数据库的操作,贴一段代码给大家看:
单行录入:
with SQLCmd1 do begin
CmdStr[0] := 'NewCustomerCommit';
CmdStr[1] := Location.ID;
CmdStr[2] := Oper.Opid;
CmdStr[3] := self.FETitle.TmpStr;
CmdStr[4] := self.FEFirstName.TmpStr;
CmdStr[5] := self.FEMiddleName.TmpStr;
CmdStr[6] := self.FELastName.TmpStr;
CmdStr[7] := self.FECompany.TmpStr;
CmdStr[8] := TFunc.BoolToStr(self.CheckBoxCompany.Checked,'0','1');
CmdStr[9] := self.FEAddress1.TmpStr;
CmdStr[10] := self.FEAddress2.TmpStr;
CmdStr[11] := self.FECity.TmpStr;
CmdStr[12] := self.FEState.TmpStr;
CmdStr[13] := self.FEZipcode.TmpStr;
CmdStr[14] := self.FEHomePhone.TmpStr;
CmdStr[15] := self.FEWorkPhone.TmpStr;
CmdStr[16] := self.FECellPhone.TmpStr;
CmdStr[17] := self.FEFax.TmpStr;
CmdStr[18] := self.FEBirthMonth.TmpStr+self.FEBirthDay.TmpStr;
CmdStr[19] := self.FEEmail.TmpStr;
CmdStr[20] := TFunc.BoolToStr(self.CheckBoxReceiveAD.Checked,'0','1');
CmdStr[21] := self.FEKnowUsWay.TmpStr;
CmdStr[22] := self.FEOther.TmpStr;
CmdStr[23] := FReferBy;
CmdStr[24] := FEPrintBy.TmpStr;
CmdStr[25] := FENote.TmpStr;
CmdStr[26] := TFunc.BoolToStr(self.CheckBoxTax.Checked,'0','1');
CmdStr[27] := self.FEReferralCode.TmpStr;
CmdStr[28] := Self.FETerm.TmpStr;
CmdStr[29] := self.FETaxCode1.TmpStr;
CmdStr[30] := self.FETaxCode2.TmpStr;
CmdStr[31] := self.FETaxCode3.TmpStr;
CmdCount := 32;
if ExecuteCommand then begin
result := true;
ShowStatusHintMsg('Commit OK!');
TFieldEdit.Clear(self.PanelTop);
SetEditDefaultValue;
if FormStyle=fsNormal then
ModalResult := mrOK;
end
else begin
ShowStatusHintMsg('Commit Error!');
end;
end;
多行录入:
with SQLCmd1 do begin
ClearCmdData;
//Cmd: 1-location,2-operid,3-orderno,4-invoice,5-vendor,6-end date,7-ship method,8-tracking,9-subtotal
// 10-shipping,11-amount,12-paid by,13-note,14-serviceno,15-busitype,
CmdStr[0] := 'NewOrderCommit';
CmdStr[1] := FELocation.TmpStr;
CmdStr[2] := Oper.Opid;
CmdStr[3] := FEOrderNo.TmpStr;
CmdStr[4] := FEInvoice.TmpStr;
CmdStr[5] := FEVendor.TmpStr;
CmdStr[6] := FEEndDate.TmpStr;
CmdStr[7] := FEShipMethod.TmpStr;
CmdStr[8] := FETrackCode.TmpStr;
CmdStr[9] := FESubTotal.TmpStr;
CmdStr[10] := FormatFloat('0.00',FEShipping.AsFloat);
CmdStr[11] := FEAmount.TmpStr;
CmdStr[12] := FEPaidBy.TmpStr;
CmdStr[13] := FENote.TmpStr;
CmdStr[14] := FEServiceNo.TmpStr;
CmdStr[15] := FEServiceNo.Hint; //busitype
CmdStr[16] := IntToStr(Round(AdvStringGridItem.ColumnSum(2,1,AdvStringGridItem.RowCount-1)));
CmdCount := 17;
AddCmdRow;
//Item: 1-itemid,2-name,3-qty,4-rate,5-amount,6-tsf,7-memo,8-kind,9-orderno,10-location
with self.AdvStringGridItem do begin
for iRow:=1 to RowCount-1 do begin
CmdStr[0] := 'Item';
CmdStr[1] := GridCells[0,iRow]; //itemid
CmdStr[2] := GridCells[1,iRow]; //name
CmdStr[3] := GridCells[2,iRow]; //qty
CmdStr[4] := GridCells[3,iRow]; //rate
CmdStr[5] := GridCells[4,iRow]; //amount
CmdStr[6] := GridCells[5,iRow]; //tsf
CmdStr[7] := GridCells[6,iRow]; //memo
CmdStr[8] := GridCells[7,iRow]; //kind
CmdStr[9] := FEOrderNo.TmpStr;
CmdStr[10] := FELocation.TmpStr;
CmdCount := 11;
AddCmdRow;
end;
end;
if ExecuteCommandM then begin
TFieldEdit.Clear(PanelEdit);
self.AdvGroupBoxSpecialOrder.CheckBox.Checked := false;
self.FEOrderNo.Clear;
self.InitScreen;
end;
end;
基本上这个组件封装了所有的数据库查询和更新操作,以及事务。使得整个项目中统一数据库的访问接口。组件背后是TADOQuery
想听听大家的意见,如果没人感兴趣,就只好留着自己用了。
相关文章推荐
- 幸福框架:准备抽象NHibernate和EntityFramework,大家给点意见
- Delphi开源组件SynEdit
- Delphi开源SQLite组件:
- 关于在项目中使用开源项目的疑惑,恳请大家给点意见!
- 在职java程序员一枚,专科毕业,想自考本科,想听听大家的意见
- 关于考研的问题?想听听大家的意见.
- 一个开源Delphi分类组件推荐网页
- Delphi开源组件SynEdit
- 开源一个组件, Clover.Proxy, 请大家指正
- 写了个组件 让大家给点意见(里面有N多BUG)
- 谁说delphi没有IOCP库,delphi新的IOCP类库,开源中: DIOCP组件JSON流模块说明
- 准备将《C/C++函数与算法速查手册》改版,欢迎大家多提宝贵意见,有什么错误欢迎指正,谢谢
- (delphi)程序运行过程中等待对话框的自定义组件源码(包含两个提示,进度条,AVI)
- 推荐两个开源的ERP系统,希望大家能参考一下.
- 《零基础学Qt 4编程》准备再版,近期重印。请大家提宝贵意见,谢谢。
- [征询意见]准备采用“创作共用”协议保护大家的原创作品
- 呵呵,最近准备换电话,大家给点意见
- Delphi 开源组件
- delphi 开源email客户端 和 indy组件演示程序
- Delphi FastReport组件下载,包含多个版本,自己选择