📄 zfrm_reportdisku.pas
字号:
{
'┌───────────────────────────────────┐
'│**********************************************************************│
'│*** 文件名称: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 + -