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

📄 zfrm_reportdisku.pas

📁 专业的评标管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
                                            RData:=RData+StrToFloat(DStr);

                                         except
                                            RData:=RData+0;;
                                         end;
                                      end;
                                      ParamByName('PDT').AsString:='上报数据';
                                      if p=0 then
                                      begin
                                         NameList.Add(Dstr);

                                      end;
                                      Str:=Copy(Str,Ie,L)  ;
                                      if    Pos('@',Str)=0 then
                                      begin
                                         ParamByName('PTV').AsString:=Str;
                                      end;
                                      ExecSql;

                                      m:=m+1;
                                 end;
                              end;

                              //加入确认数据
                              q:=FListConValue[0].Indexof(FTreinfo.StrNodeName);
                              if q>=0 then
                              begin
                                    m:=0;
                                    k:=1;
                                    with Query4 do
                                    begin
                                      Str:=FListConValue[1].Strings[q];

                                       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;
                                            Close;
                                            ParamByName('PID').AsInteger:=DID;
                                            ParamByName('PNAME').AsString:=ListView1.Columns[p].Caption;
                                            if p=0 then
                                                k:=NameList.IndexOf(Dstr)+1;
                                            ParamByName('PCO').AsInteger:=K;
                                            ParamByName('PTV').AsString:=Dstr;
                                            ParamByName('PDT').AsString:='确认数据';
                                            if p=1 then
                                            begin
                                               Try
                                                  CData:=CData+StrToFloat(DStr);

                                               except
                                                  CData:=CData+0;
                                               end;
                                            end;

                                            Str:=Copy(Str,Ie,L)  ;
                                            if    Pos('@',Str)=0 then
                                            begin
                                               ParamByName('PTV').AsString:=Str;
                                            end;
                                            ExecSql;
                                            m:=m+1;
                                       end;
                                    end;
                              end ;
                              with Query5 do
                              begin
                                    Close;
                                    ParamByName('PID').AsInteger:=DID;
                                    ParamByName('RData').AsString:=FloatToStr(RData);
                                    ParamByName('CData').AsString:=FloatToStr(CData);
                                    ExecSql;
                                    Close;
                              end;

                        end;//if

                   end;
               end;
               2:
               begin
                   with Query2 do
                   begin
                        Close;
                        ind:=ValueList[0].Indexof(FTreinfo.StrNodeName);
                        if Ind>=0 then
                        begin
                              ConData:=ValueList[2].Strings[ind];
                              if ConData='是' then
                                 ConData:='1'
                              else
                                 ConData:='0';
                              ind2:=ReportValueList[0].Indexof(FTreinfo.StrNodeName);
                              ReData:=ReportValueList[2].Strings[ind2];
                              if ReData='是' then
                                 ReData:='1'
                              else
                                 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;
                              for d:=0 to 4 do
                              begin
                                  ValueList[d].Delete(ind);
                                  ReportValueList[d].Delete(ind2);
                              end;

                        end;
                   end;

               end;
               end;

         end;
   except
       Result:=False;
   end;

   NameLISt.Free;


end;


//----------------------
procedure Tzfrm_ReportDisk.ComboBox1KeyPress(Sender: TObject;
  var Key: Char);
begin
    if PTreeInfo(FPriNode.Data)^.Ralat=0 then
    begin
          if (not (Key in PriNumeric)) and (Key<>#8) then
              Key:=#0;
          if (Pos('.',(SenDer As TComBoBox).Text)>0) and (Key='.') then
          begin
              Key:=#0;
          end;
    end;
    if ( (Key in InValideChar))  then
    begin
        Application.MessageBox(PChar('不能输入['+Key+']'),'提示信息', MB_OK+MB_ICONASTERISK);
        Key:=#0;
    end;

end;

procedure Tzfrm_ReportDisk.FormCreate(Sender: TObject);
begin
  //
  TreeView1.Items[0].Expanded := True ;
  //
end;

procedure Tzfrm_ReportDisk.Button2Click(Sender: TObject);
begin
  // 取消
  Close ;
  //
end;

procedure Tzfrm_ReportDisk.Button1Click(Sender: TObject);
begin
  // 确认
  if Not SaveDataTotable then
      Application.MessageBox('此上报数据已经导入,不能进行二次导入!','提示信息', MB_OK+MB_ICONASTERISK);
  Close ;
  //
end;

procedure Tzfrm_ReportDisk.ComboBox2Change(Sender: TObject);
begin
  //
  BitBtn2.Enabled := True ;
  //
end;

procedure Tzfrm_ReportDisk.BitBtn2Click(Sender: TObject);
begin
  //
  SaveDataToList;
  FNodeState[1].Strings[FNodeState[0].Indexof(FPriNode.Text)]:='1';

  RefreshState(FNodeState[1],FNodeState[0],TreeView1);
  if GetNodeState(TreeView1.Items[0])=1 then
     Button1.Enabled:=True
  else
     Button1.Enabled:=False;
  //BitBtn2.Enabled := False ;
  //
end;

procedure Tzfrm_ReportDisk.FormShow(Sender: TObject);
var
  i:integer;
  Des,WarStr:string;
begin
    {$ifDEf RELEASE}
        Des:='A:\';
        WArStr:='请将上报盘插入A:后按[是]';
    {$Else}
        Des:='D:\';
        WarStr:='请检查D:下是否存在Report.out文件';
    {$EndIF}


    if  Application.MessageBox(PChar(WarStr),'提示信息', MB_YESNO+MB_ICONASTERISK)=ID_YES then
    begin
          if not CopyFile(PChar(Des+FFileName),PCHar(FuGetFilePath+FFileName),False) then
          begin
               Application.MessageBox('无法读取源文件。请您检查源文件!','提示信息', MB_OK+MB_ICONASTERISK);
               PostMessage(Handle,WM_CLOSE,0,0);
               Exit;
          end;
    end
    else
    begin
         PostMessage(Handle,WM_CLOSE,0,0);
         Exit;
    end;

    for i:=0 to 1 do
    begin
       FNodeState[i]:=TStringList.Create;
       FListConValue[i]:=TStringList.Create;
    end;
    for i:=0 to 4 do
    begin
       ValueList[i]:=TStringList.Create;
       ReportValueList[i]:=TStringList.Create;
    end;

   //给树型控件加入checkbox
   SetWindowLong(TreeView1.Handle,GWL_STYLE ,GetWindowLong(TreeView1.Handle,GWL_STYLE) + TVS_CHECKBOXES);

   //从文件中读入信息
   if FileExists(DEs+FFileName) then
   begin
     InfoLoadFormFile(Des+FFileName,TreeView1,Label2,FUnitName);
     TreeView1.Items[0].Expanded := True ;
   end;

   if Label2.Caption<>Label1.Caption then
   begin
      TreeView1.Items.Clear;
      Label2.Caption:='';
   end
   else
   begin
       with Query1 do
       begin
           ParamByName('CO').AsString:=FUnitName;
           Open;
           Label2.Caption:=FieldByName('UI_NAME').asString;
       end;
   end;
   FPriNode:=nil;
   //
   for i:=0 to TreeView1.Items.Count-1 do
   begin
       FNodeState[0].Add(Trim(TreeView1.Items[i].Text));
       FNodeState[1].Add(IntToStr(GetNodeState(TreeView1.Items[i])));
   end;
   TreeView1.FullExpand;
   if TreeView1.Items.Count=0 then
   begin
       Application.MessageBox('所选文件与该工程不能对应,请重新选择文件!','提示信息', MB_OK+MB_ICONASTERISK);
       PostMessage(Handle,WM_CLOSE,0,0);
   end;   
end;

procedure Tzfrm_ReportDisk.FormClose(Sender: TObject;
  var Action: TCloseAction);
var
  i:integer;
begin

     for i:=0 to 1 do
     begin
       FNodeState[i].Free;
       FListConValue[i].Free;
     end;
    for i:=0 to 4 do
    begin
       ValueList[i].Free;
       ReportValueList[i].Free;
    end;
    for i:=0 to TreeView1.Items.Count-1 do
    begin
        if TreeView1.Items[i].Data<>nil then
           Freemem(TreeView1.Items[i].Data);
    end;
   
end;

procedure Tzfrm_ReportDisk.TreeView1Change(Sender: TObject;
  Node: TTreeNode);
var
   FTreinfo:TTreeNodeInfo;//树型节点Data
begin
    ComBoBox1.Text:='';
    Edit1.Text:='';
    ComboBox1.Items.Clear;
    ListView1.Items.Clear;
    ListView2.Items.Clear;
    FPriNode:=Node;
    if Node.Data<>nil then
    begin
      AddRepData;
      FTreinfo:=PTreeInfo(Node.Data)^;
      //判断关系类型
      case FTreInfo.Ralat of
      0:         //1..1
      begin
           ComboBox1.Enabled:=True;
           ComboBox1.Style:=csDropDown;
           Edit1.Enabled:=True;
           Edit1.Text:=Trim(FTreinfo.StrValue);
           ListView1.Enabled:=False;
           BitBtn2.Enabled:=True;
           if  ValueList[0].IndexOf(FTreInfo.StrNodeName)>=0 then
               ComboBox1.Text:=ValueList[2].Strings[ValueList[0].IndexOf(FTreInfo.StrNodeName)]
           else
               ComboBox1.Text:=Trim(FTreinfo.StrValue)
      end;
      1:        //1..n
      begin
           ComboBox1.Enabled:=False;
           ListView1.Enabled:=True;
           ComboBox1.Style:=csDropDown;
           readListContent(FTreinfo.StrValue,ListView1);
           readListContent(FTreinfo.StrValue,ListView2);
           ProcAddValue(ListView1,ComBoBox1);
           Edit1.Text:=ComBoBox1.text;
           BitBtn2.Enabled:=True;
           RefreshListCheck;
      end;
      2:       //选择
      begin
           ComboBox1.Enabled:=True;
           ComboBox1.Text:=Trim(FTreinfo.StrValue);
           ComboBox1.Style:=csDropDownList;
           Edit1.Enabled:=True;
           Edit1.Text:=Trim(FTreinfo.StrValue);
           Combobox1.Items.Add('是');
           Combobox1.Items.Add('否');
           if  ValueList[0].IndexOf(FTreInfo.StrNodeName)>=0 then
               ComboBox1.ItemIndex:=ComboBox1.Items.IndexOf(ValueList[2].Strings[ValueList[0].IndexOf(FTreInfo.StrNodeName)])
           else
               ComboBox1.ItemIndex:=ComboBox1.Items.IndexOf(Trim(FTreinfo.StrValue));

           ListView1.Enabled:=False;
           BitBtn2.Enabled:=True;
      end
      else           //其他处理
      begin
           ComboBox1.Enabled:=False;
           ListView1.Enabled:=False;
           Edit1.Enabled:=False;
           BitBtn2.Enabled:=False
      end;
      end;

    end;

end;



procedure Tzfrm_ReportDisk.ListView2Click(Sender: TObject);
var
  i:integer;
  V:Double;
begin
    V:=0;
    if LIstView2.Items.count=0 then exit;
    for i:=0 to LIstView2.Items.count-1 do
    begin
         if ListView2.Items[i].Checked then
            V:=V+StrToFloat(ListView2.Items[i].SubItems.Strings[0]);
    end;
    ComBoBox1.Text:=FloatToStr(V);

end;



procedure Tzfrm_ReportDisk.TreeView1Click(Sender: TObject);
begin
    RefreshState(FNodeState[1],FNodeState[0],TreeView1);
end;

end.

⌨️ 快捷键说明

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