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

📄 zfrm_projectnewu.pas

📁 专业的评标管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{
'┌───────────────────────────────────┐
'│**********************************************************************│
'│*** 文件名称: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 + -