📄 zfrm_projectnewu.pas
字号:
{
'┌───────────────────────────────────┐
'│**********************************************************************│
'│*** 文件名称:zfrm_ProjectNewU.pas 《新建工程模块》 *│
'│*** 功能描述:此摸块是- 新建工程,对《工程信息表"tm_customerinfo"》 *│
'│* 执行相应的处理 — (增) *│
'│*** 编写人员:朱华 *│
'│*** 编写日期:2001-06-08 *│
'│*** 修改人员: *│
'│*** 修改日期: *│
'│**********************************************************************│
'└───────────────────────────────────┘
}
unit zfrm_ProjectNewU;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ComCtrls, ExtCtrls, Db, DBTables,zmod_commonDateU,
Grids, DBGrids, DBCtrls;
const
//数字型常量
PriNumeric=['0','1','2','3','4','5','6','7','8','9','.'];
InValideChar=[#39] ;
type
TDictionary=record
FIsNull:Boolean; //字段是否可以空
FFieldName:String[20]; //字段名称
ChinName:string[30]; //中文名称
ComType:integer; //显示给字段的控件类型
end;
PDic=^TDictionary;
Tzfrm_ProjectNew = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Image1: TImage;
BitBtn1: TBitBtn;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Memo1: TMemo;
Edit7: TEdit;
DateTimePicker1: TDateTimePicker;
Label12: TLabel;
ComboBox3: TComboBox;
Button2: TButton;
Query2: TQuery;
Button3: TButton;
DataSource1: TDataSource;
Query3: TQuery;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Query1: TQuery;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit7KeyPress(Sender: TObject; var Key: Char);
procedure Edit4Exit(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
FCompentList:TList; //存放控件的List
FDicList:TList; //存放数据字典的list
FLxDate:TDateTime;
FIfInsert:Boolean;//如果位True 则代表为新增 否则为编辑
procedure Pro_Clear(FCom:TComponent);
//复位
function SaveData:boolean;
//保存数据
function CheckData:boolean;
//校验数据
procedure SetFieldValue;
//写入各个字段的值
public
{ Public declarations }
procedure AddListBox(Alist:TComboBox;StrSql:string);
//向ListBox加入内容
end;
var
zfrm_ProjectNew: Tzfrm_ProjectNew;
implementation
uses zmod_CommonFuncProcU, zfrm_ProjectSetup1U;
{$R *.DFM}
//----------------------自定义函数(begin)------------------------//
procedure Tzfrm_ProjectNew.AddListBox(Alist: TComboBox; StrSql: string);
{功能描述: 向combobox填入内容
输入 : Alist:指定要求填值的combobox
strsql:指定要取值的sql
输出 :无
描述 :
}
begin
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add(StrSql);
Query2.Open;
Alist.Items.Clear;
Query2.First;
while not Query2.Eof do
begin
Alist.Items.Add(Trim(Query2.Fields[0].AsString));
Query2.Next;
end;
end;
procedure Tzfrm_ProjectNew.Pro_Clear(FCom:TComponent);
{功能描述: 将各个输入框的值清空
输入 : FCom一般传入的是一个窗体
输出 : 没有
描述 :
}
var
i:integer;
begin
for i:= 0 to FCom.ComponentCount-1 do
begin
if FCom.Components[i] is TEdit then
(FCom.Components[i] as TEdit).Text:='';
if FCom.Components[i] is TComboBox then
(FCom.Components[i] as TComboBox).ItemIndex:=-1;
if FCom.Components[i] is TMemo then
(FCom.Components[i] as TMemo).Text:='';
if FCom.Components[i] is TDateTimePicker then
(FCom.Components[i] as TDateTimePicker).Date:=now;
end;
//Button1.Enabled:=False;
end;
function Tzfrm_ProjectNew.SaveData: boolean;
{功能描述:保存数据
输入 :无
输出 :如果保存成功,则返回True
否则返回False
描述 :
}
var
str:string;
begin
//判断是插入状态,还是编辑状态
if CheckData then
begin
if FIfInsert then
begin
Str:='INSERT INTO TM_PROJECTINFO ( G_PI_ID, PI_CODE, PI_NAME, PI_BIDUNIT, PI_BIDTYPE, PI_SENDTYPE, PI_PROJECTTYPE, PI_DATETIME, PI_OPENDATE, PI_COST, PI_TIMELIMIT, PI_QUALITY, PI_BUILDAREA, PI_DESCRIBE, PI_STATETYPE, PI_LOCKTYPE )'
+'values( :PG_PI_ID, :PPI_CODE, :PPI_NAME, :PPI_BIDUNIT, :PPI_BIDTYPE, :PPI_SENDTYPE, :PPI_PROJECTTYPE, '+'''now'''+', :PPI_OPENDATE, :PPI_COST, :PPI_TIMELIMIT, :PPI_QUALITY, :PPI_BUILDAREA, :PPI_DESCRIBE, :PPI_STATETYPE, :PPI_LOCKTYPE )';
end
else
begin
Str:='Update TM_PROJECTINFO '
+' Set PI_CODE=:PPI_CODE, PI_NAME=:PPI_NAME, PI_BIDUNIT=:PPI_BIDUNIT, PI_BIDTYPE=:PPI_BIDTYPE, PI_SENDTYPE=:PPI_SENDTYPE, PI_PROJECTTYPE=:PPI_PROJECTTYPE, PI_OPENDATE=:PPI_OPENDATE, PI_COST=:PPI_COST, PI_TIMELIMIT=:PPI_TIMELIMIT,'
+' PI_QUALITY=:PPI_QUALITY, PI_BUILDAREA=:PPI_BUILDAREA, PI_DESCRIBE=:PPI_DESCRIBE'
+' WHere PI_CODE=:PPI_CODE';
end;
with query1 do
begin
close;
Sql.Clear;
Sql.Add(Str);
try
//给个各字段负值
SetFieldValue;
ExecSQL;
Result:=True;
except
Application.MessageBox('此工程编号已经存在!','提示信息', MB_Ok+MB_ICONASTERISK);
if FIfInsert then
Edit1.SetFocus
else
Edit2.SetFocus;
Cancel;
result:=False
end;
end
end
else
begin
result:=False;
end;
end;
function Tzfrm_ProjectNew.CheckData: boolean;
{功能描述:判断输入值的合法性
输入 :无
输出 :如果全部合法则为True
否则为False;
描述 :
}
var
i:integer;
VStr:string;
S:String;
FDic:TDictionary;
begin
result:=true;
VStr:='''';
for i:=0 to FDicList.Count-1 do
begin
FDic:=PDic(FDicList.Items[i])^;
if not FDic.FIsNull then
begin
case FDic.ComType of
0:
begin
if Trim(TEdit(FCompentList.Items[i]).Text)='' then
begin
TEdit(FCompentList.Items[i]).SetFocus;
S:='请输入'+FDic.ChinName;
Application.MessageBox(PChar(s),'提示信息', MB_Ok+MB_ICONASTERISK);
result:=False;
break;
end
else
begin
if Pos(Pchar(VStr),PChar(TEdit(FCompentList.Items[i]).Text))>0 then
begin
S:=FDic.ChinName+'含有非法字符['+''''+']!';
Application.MessageBox(PChar(s),'提示信息', MB_Ok+MB_ICONASTERISK);
Result:=False;
Break;
end;
end;
end;
1:
begin
if Trim(TComboBox(FCompentList.Items[i]).Text)='' then
begin
TComboBox(FCompentList.Items[i]).SetFocus;
S:='请输入'+FDic.ChinName;
Application.MessageBox(PChar(s),'提示信息', MB_Ok+MB_ICONASTERISK);
result:=False;
break;
end;
end;
2:
begin
if FDic.FFieldName='pi_opendate' then
begin
if (TDateTimePicker(FCompentList.Items[i]).Date<FLxDate) then
begin
Application.MessageBox('开标时间不能小于立项时间!','提示信息', MB_OK+MB_ICONASTERISK);
Result:=False;
Break;
end;
end;
end;
3:
begin
if Trim(TMemo(FCompentList.Items[i]).Text)='' then
begin
TMemo(FCompentList.Items[i]).SetFocus;
S:='请输入'+FDic.ChinName;
Application.MessageBox(PChar(s),'提示信息', MB_Ok+MB_ICONASTERISK);
result:=False;
break;
end
else
begin
begin
if Pos(Pchar(VStr),PChar(TMemo(FCompentList.Items[i]).Text))>0 then
begin
S:=FDic.ChinName+'含有非法字符['+''''+']!';
Application.MessageBox(PChar(s),'提示信息', MB_Ok+MB_ICONASTERISK);
Result:=False;
Break;
end;
end;
end;
end;
end;
end
else
begin
end;
end;
end;
procedure Tzfrm_ProjectNew.SetFieldValue;
{功能描述:给字段负值
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -