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

📄 zfrm_reportdisku.pas

📁 专业的评标管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{
'┌───────────────────────────────────┐
'│**********************************************************************│
'│*** 文件名称:zfrm_ReportDiskU                                       *│
'│*** 功能描述:                                                       *│
'│*** 编写人员:朱华                                *│
'│*** 编写日期:2001-06-06                             *│
'│*** 修改人员:                                    *│
'│*** 修改日期:                                                       *│
'│**********************************************************************│
'└───────────────────────────────────┘
}

unit zfrm_ReportDiskU;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ImgList, ComCtrls, ExtCtrls, Buttons,Commctrl,uProcSBP, Db,
  DBTables,zmod_commonDateU;
const
  PriNumeric=['0','1','2','3','4','5','6','7','8','9','.'];
  InValideChar=[#22];
type
  Tzfrm_ReportDisk = class(TForm)
    ImageList1: TImageList;
    Panel1: TPanel;
    Label1: TLabel;
    Image1: TImage;
    GroupBox2: TGroupBox;
    GroupBox1: TGroupBox;
    ListView1: TListView;
    GroupBox5: TGroupBox;
    TreeView1: TTreeView;
    BitBtn2: TBitBtn;
    Edit1: TEdit;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    GroupBox3: TGroupBox;
    GroupBox4: TGroupBox;
    ListView2: TListView;
    ComboBox1: TComboBox;
    Query1: TQuery;
    Query2: TQuery;
    Query3: TQuery;
    Query4: TQuery;
    Query5: TQuery;
    Query6: TQuery;
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure ListView2Click(Sender: TObject);
    procedure TreeView1Click(Sender: TObject);
  private
    { Private declarations }
    FNodeState:array  [0..1] of TStringList;
    //树型节点状态
    FUnitName:string;
    FPriNode:TTreeNode;
    FListConValue:Array [0..1] of TStringLIst;
    //保存确认的数据
    ValueList:array [0..4] of TStringList;
    //0_节点Text
    //1_关系
    //2_如果关系为1。。1则位值 否则为名称
    //3关系为1。则为 空 else is area
    //4关系为1 is '' else is content
    ReportValueList:array [0..4] of TStringList;
    //0_节点Text
    //1_关系
    //2_如果关系为1。。1则位置 否则为名称
    //3关系为1。则为 空 else is area
    //4关系为1 is '' else is content

    procedure SaveDataToList;
    procedure RefreshListCheck;
    procedure AddRepData;
    function SaveDataTotable:boolean;
  public
    { Public declarations }
  end;

var
  zfrm_ReportDisk: Tzfrm_ReportDisk;
  Procedure ShowRForm;
implementation
uses
zfrm_MainBiddingU;
{$R *.DFM}
{$I Version.inc}
//----------------------
Procedure ShowRForm;
begin
     zfrm_ReportDisk:=Tzfrm_ReportDisk.Create(nil);
     Try
      with zfrm_ReportDisk do
      begin
        Label1.Caption := z_pi_projectnameS ;
        ShowModal ;
      end;
     finally
         zfrm_ReportDisk.Free;
     end;
end;
procedure Tzfrm_ReportDisk.SaveDataToList;
var
   FTreinfo:TTreeNodeInfo;//树型节点Data
   Ind,m,j,k:integer;

   Str:string;
begin
    if FPriNode.Data<> nil then
    begin
         FTreinfo:=PTreeInfo(FPriNode.Data)^ ;
         case FTreinfo.Ralat of
         0,2:
         begin
            Ind:=ValueList[0].IndexOf(Trim(FPriNode.Text));
            if Ind>=0 then
            begin
               ValueList[2].Strings[Ind]:=ComBoBox1.Text;

            end
            else
            begin
               ValueList[0].Add(FTreinfo.StrNodeName);
               ValueList[1].Add(IntToStr(FTreinfo.Ralat));
               ValueList[2].Add(ComBoBox1.Text);
               ValueLIst[3].Add('-1');
               ValueLIst[4].Add('-1');
            end;
            Edit1.Text:=ComboBox1.Text;
            //PTreeInfo(FPriNode.Data)^.StrValue:=ComBoBox1.Text;

         end ;
         1:
         begin
           str:='';
           for j:=0 to ListView2.Items.Count-1 do
           begin
                  m:=-1;
                  for k:=0 to ValueList[0].Count-1 do
                  begin
                      if  (ValueList[2].Strings[k]=Trim(ListView1.Items[j].Caption)) and (ValueLIst[0].Strings[k]=FTreinfo.StrNodeName) then
                      begin
                          m:=k;
                          break;
                      end;
                  end;

                  if (not ListView2.Items[j].Checked) and (m<>-1) then
                  begin

                       ValueLIst[0].Delete(m);
                       ValueLIst[1].Delete(m);
                       ValueLIst[2].Delete(m);
                       ValueLIst[3].Delete(m);
                       ValueLIst[4].Delete(m);

                  end ;



                  if  (ListView2.Items[j].Checked) and (m=-1)then
                  begin
                       ValueList[0].Add(FTreinfo.StrNodeName);
                       ValueList[1].Add(IntToStr(FTreinfo.Ralat));
                       ValueList[2].Add(ListView2.Items[j].Caption);
                       ValueLIst[3].Add(ListView2.Items[j].SubItems.Strings[0]);
                       ValueLIst[4].Add(ListView2.Items[j].SubItems.Strings[1]);
                  end;
                  if ListView2.Items[j].Checked then
                       str:=Str+'@'+Trim(ListView1.Items[j].Caption)+'@'+Trim(ListView1.Items[j].SubItems.Strings[0])+'@'+Trim(ListView1.Items[j].SubItems.Strings[1]);

           end;//for
           if  FListConValue[0].IndexOf(FTreinfo.StrNodeName)<0 then
           begin
                FListConValue[0].Add(FTreinfo.StrNodeName);
                FListConValue[1].Add(Str);
           end
           else
           begin
               FListConValue[1].Strings[FListConValue[0].IndexOf(FTreinfo.StrNodeName)]:=Str;
           end;



         end;
         end//case
    end; //if
end;

procedure Tzfrm_ReportDisk.RefreshListCheck;
var
  i,m,k:integer;
  FTreinfo:TTreeNodeinfo;
  v:double;
begin
    v:=0;
    for i:=0 to ListView2.Items.Count-1 do
    begin
        FTreinfo:=PTreeInfo(FPriNode.Data)^ ;
        m:=-1;
        for k:=0 to ValueList[0].Count-1 do
        begin
            if  (ValueList[2].Strings[k]=Trim(ListView1.Items[i].Caption)) and (ValueLIst[0].Strings[k]=FTreinfo.StrNodeName) then
            begin
                m:=k;
                break;
            end;
        end;
        if (m<>-1) then
               ListView2.Items[i].Checked:=True;
        if ListView2.Items[i].Checked then
            V:=V+StrToFloat(ListView2.Items[i].SubItems.Strings[0]);
    end;
    ComBoBox1.Text:=FloatToStr(V);
end;

procedure Tzfrm_ReportDisk.AddRepData;
var
  FTreinfo:TTreeNodeinfo;
  i:integer;
begin

    if FPriNode<>nil then
    begin
        FTreinfo:=PTreeInfo(FPriNode.Data)^ ;
        if ReportValueList[0].IndexOf(FTreinfo.StrNodeName)<0 then
        begin
            case FTreinfo.Ralat of
            0,2:
            begin
                 ReportValueList[0].Add(FTreinfo.StrNodeName);
                 ReportValueList[1].Add(IntToStr(FTreinfo.Ralat));
                 ReportValueList[2].Add(Trim(FTreinfo.StrValue));
                 ReportValueList[3].Add('-1');
                 ReportValueList[4].Add('-1');
            end;
            1:
            begin
                for i:=0 to ListView1.Items.Count-1 do
                begin
                       ReportValueList[0].Add(FTreinfo.StrNodeName);
                       ReportValueList[1].Add(IntToStr(FTreinfo.Ralat));
                       ReportValueList[2].Add(ListView2.Items[i].Caption);
                       ReportValueList[3].Add(ListView2.Items[i].SubItems.Strings[0]);
                       ReportValueList[4].Add(ListView2.Items[i].SubItems.Strings[1]);

                end;
            end;
            end//case
        end;//if
    end;
end;

function Tzfrm_ReportDisk.SaveDataTotable: boolean;
{功能描述:    将投标数据写入数据库
 输入    :    无
 输出    :     如果成功返回True
               else false

 描述    :
}
Label TZPoint;
var
  i,Ind,Ind2,d,m,k,l,p,q:integer;
  CruNode:TTreeNode;
  FTreinfo:TTreeNodeinfo   ;
  Str:String;
  pID,Did,Ie:integer;
  //PID:项目编号
  //DID:数据编号
  ConData,ReData:String;
  //Condata:确认数据
  //ReData:上报数据
  DataId,DStr:string;
  RData,CData:Double;
  NameList:TStringlist;
begin
   //Values(:PAID,:PUID,:PIID,:PVA,:PX,:PAD)
   //FTreinfo:=PTreeInfo(FPriNode.Data)^ ;   TTreeNodeinfo
   NameList:=TStringList.Create;
   CData:=0;

   result:=true;
   try
         for i:= 0 to TreeView1.Items.Count-1 do
         begin
               DataID:='GE_AD_ID';
               did:=zh_GetNewIdF(DataId);
               CruNode:=TreeView1.Items[i];
               FTreinfo:=PTreeInfo(CruNode.Data)^ ;
               with query3 do
               begin
                  ParamByName('PNAME').AsString:=Trim(FTreinfo.StrNodeName);
                  Open;
                  PID:=Fields[0].AsInteger;
                  Close;
               end ;
               with Query6 do
               begin
                  ParamByName('ANAME').AsString:=Trim(FTreinfo.StrNodeName);
                  Open;
                  if RecordCount>0 then
                  begin
                      NameList.Free;
                      Result:=False;
                      Exit;
                  end;
                  Close;
               end;
               case FTreinfo.Ralat of
               0:
               begin
                   with Query2 do
                   begin
                        Close;
                        ind:=ValueList[0].Indexof(FTreinfo.StrNodeName);
                        if Ind>=0 then
                        begin
                              ConData:=ValueList[2].Strings[IND];
                              Try
                                 StrToFloat(Trim(ConData));
                              except
                                 ConData:='0';
                              end;
                              ind2:=ReportValueList[0].Indexof(FTreinfo.StrNodeName);
                              ReData:=ReportValueList[2].Strings[ind2];
                              try
                                  StrToFloat(Trim(ReData));
                              except
                                 ReData:='0';
                              end;
                              ParamByName('PAID').AsInteger:=DID;
                              ParamByName('PUID').AsString:=FUnitName;
                              ParamByName('PIID').AsInteger:=PID;
                              ParamByName('PVA').AsString:=ReData;
                              ParamByName('PX').AsString:=ConData;         //ValueList
                              ParamByName('PAD').AsString:=IntToStr(FTreinfo.Ralat+1);       //ReportValueList
                              ExecSql;
                              for d:=0 to 4 do
                              begin
                                  ValueList[d].Delete(ind);
                                  ReportValueList[d].Delete(ind2);
                              end;
                        end;
                   end;
               end;
               1:
               begin
                   with Query2 do
                   begin
                        Close;
                        ind:=ValueList[0].Indexof(FTreinfo.StrNodeName);
                        if Ind>=0 then
                        begin
                              ConData:='0';
                              ReData:='0';
                              ReData:='0';
                              ParamByName('PAID').AsInteger:=DID;
                              ParamByName('PUID').AsString:=FUnitName;
                              ParamByName('PIID').AsInteger:=PID;
                              ParamByName('PVA').AsString:=ReData;
                              ParamByName('PX').AsString:=ConData;         //ValueList
                              ParamByName('PAD').AsString:=IntToStr(FTreinfo.Ralat+1);       //ReportValueList
                              ExecSql;
                              //加入上报数据//values ( :PID,:PNAME,:PTV,:PDT)
                              m:=0;
                              NameList.Clear;
                              k:=0;

                              with Query4 do
                              begin
                                Str:=FTreinfo.StrValue;
                                 RData:=0;
                                 while Pos('@',Str)<>0 do
                                 begin      //( :PID,:PCO,:PNAME,:PTV,:PDT)
                                      L:=Length(Str);
                                      Str:=Copy(str,2,L);
                                      Ie:=Pos('@',Str);
                                      DStr:=Copy(Str,1,Ie-1);
                                      p:=m mod ListView1.Columns.Count;
                                      if p=0 then k:=k+1;
                                      Close;
                                      ParamByName('PID').AsInteger:=DID;
                                      ParamByName('PCO').AsInteger:=K;
                                      ParamByName('PNAME').AsString:=ListView1.Columns[p].Caption;
                                      ParamByName('PTV').AsString:=Dstr;
                                      if p=1 then
                                      begin
                                         Try

⌨️ 快捷键说明

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