📄 zfrm_reportdisku.pas
字号:
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 + -