📄 unitorder1.pas
字号:
iPos := Pos(')', BianTaiStr);
BianTaiID := Copy(BianTaiStr, 2, iPos-2);
BianTaiName := Copy(BianTaiStr, iPos+1, length(BianTaiStr));
ListItem := FormOrder1.ListView.Items.Add();
ListItem.Caption := BianTaiID;
ListItem.SubItems.Add(BianTaiName);
ListItem.SubItems.Add( GetLineID(SelectedNode.Parent.Text) );
ListItem.SubItems.Add( SelectedNode.Parent.Text );
end;
end;
procedure TFormOrder1.ListRemoveCurrSel(Sender: TObject);
begin
if ListView.Selected <> nil then
begin
ListView.Selected.Delete();
end;
end;
procedure TFormOrder1.ListRemoveAllSel(Sender: TObject);
begin
if ListView.Selected <> nil then
begin
ListView.DeleteSelected;
end;
end;
procedure TFormOrder1.ListDeleteReSel(Sender: TObject);
var
i : Integer;
j : Integer;
begin
for i:=(ListView.Items.Count-1) downto 0 do
for j:=0 to i-1 do
begin
if ListView.Items[i].Caption = ListView.Items[j].Caption then
begin
ListView.Items[i].Delete();
break;
end;
end;
end;
procedure TFormOrder1.ListSeekCurSel(Sender: TObject);
var
AutoSend : string;
DrqDataType : string;
iPos1 : Integer;
iPos2 : Integer;
FreezeDayHour : string;
FreezeDay : string;
FreezeHour : string;
begin
if ListView.Selected <> nil then
begin
with MyModule.AdoQuery do
begin
Close();
SQL.Clear();
SQL.Add('select * from tx_BianTai where fd_BianTaiID =' + ListView.Selected.Caption);
try
Open();
except
ExecSQL();
end;
if RecordCount <> 0 then
begin
FormBianTai.EditBianTaiID.Text := ListView.Selected.Caption;
//fd_DataCycle
FormBianTai.EditDataCycle.Text := Trim( FieldByName('fd_DataCycle').AsString );
//fd_AutoSend
case FieldByName('fd_AutoSend').AsInteger of
0: FormBianTai.ComboAutoSend.Text := '否';
1: FormBianTai.ComboAutoSend.Text := '是';
else FormBianTai.ComboAutoSend.Text := '否';
end;
//fd_DrqCycle
FormBianTai.EditDrqCycle.Text := Trim( FieldByName('fd_DrqCycle').AsString );
//fd_DrqDataType
case FieldByName('fd_DrqDataType').AsInteger of
0: FormBianTai.ComboDrqDataType.Text := '级数';
1: FormBianTai.ComboDrqDataType.Text := '容量';
else FormBianTai.ComboDrqDataType.Text := '级数';
end;
//fd_CT
FormBianTai.EditCT.Text := Trim( FieldByName('fd_CT').AsString );
//fd_PT
FormBianTai.EditPT.Text := Trim( FieldByName('fd_PT').AsString );
//18 fd_FreezeDay 冻结时间(日时)
FreezeDayHour := Trim( FieldByName('fd_FreezeDay').AsString );
iPos1 := Pos('日', FreezeDayHour);
iPos2 := Pos('时', FreezeDayHour);
FreezeDay := Copy(FreezeDayHour, 0, iPos1-1);
FreezeHour := Copy(FreezeDayHour, iPos1+2, iPos2-ipos1-2);
FormBianTai.EditFreezeDay.Text := FreezeDay;
FormBianTai.EditFreezeHour.Text := FreezeHour;
//fd_FreezeDN
FormBianTai.EditFreezeDN.Text := Trim( FieldByName('fd_FreezeDN').AsString );
//fd_Max_U
FormBianTai.EditMaxU.Text := Trim( FieldByName('fd_Max_U').AsString );
//fd_Min_U
FormBianTai.EditMinU.Text := Trim( FieldByName('fd_Min_U').AsString );
//fd_Max_I
FormBianTai.EditMaxI.Text := Trim( FieldByName('fd_Max_I').AsString );
//fd_Rated_I
FormBianTai.EditRatedI.Text := Trim( FieldByName('fd_Rated_I').AsString );
//ID
FormBianTai.EditBianTaiID.Text := ListView.Selected.Caption;
//Name
FormBianTai.EditName.Text := ListView.Selected.SubItems.Strings[0];
//ID2
FormBianTai.EditBianTaiID2.Text := ListView.Selected.Caption;
//Name2
FormBianTai.EditName2.Text := ListView.Selected.SubItems.Strings[0];
end;//end <> 0
//close();
end; //end with
FormBianTai.PageControl.Pages[0].TabVisible := false;
FormBianTai.PageControl.Pages[1].TabVisible := true;
FormBianTai.PageControl.Pages[2].TabVisible := false;
FormBianTai.Caption := '台区属性信息-修改并选择发送相应指令';
FormBianTai.iSetInfo := 1;
FormBianTai.ShowModal();
if FormBianTai.iBtnClick = 1 then
begin
with MyModule.AdoQuery do
begin//with
SQL.Clear();
SQL.Add('UPDATE tx_BianTai SET fd_DataCycle=');
SQL.Add(FormBianTai.EditDataCycle.Text);
SQL.Add(',');
if FormBianTai.ComboAutoSend.Text = '是' then
AutoSend := '1'
else if FormBianTai.ComboAutoSend.Text = '否' then
AutoSend := '0'
else
AutoSend := '0';
SQL.Add('fd_AutoSend=');
SQL.Add(AutoSend);
SQL.Add(',');
SQL.Add('fd_DrqCycle=');
SQL.Add(FormBianTai.EditDrqCycle.Text);
SQL.Add(',');
if FormBianTai.ComboDrqDataType.Text = '级数' then
DrqDataType := '0'
else if FormBianTai.ComboDrqDataType.Text = '容量' then
DrqDataType := '1'
else
DrqDataType := '0';
SQL.Add('fd_DrqDataType=');
SQL.Add(DrqDataType);
SQL.Add(',');
SQL.Add('fd_CT=''');
SQL.Add(FormBianTai.EditCT.Text);
SQL.Add(''',');
SQL.Add('fd_PT=''');
SQL.Add(FormBianTai.EditPT.Text);
SQL.Add(''',');
SQL.Add('fd_FreezeDay=''');
SQL.Add(FormBianTai.EditFreezeDay.Text+'日'+FormBianTai.EditFreezeHour.Text+'时');
SQL.Add(''',');
SQL.Add('fd_FreezeDN=''');
SQL.Add(FormBianTai.EditFreezeDN.Text);
SQL.Add(''',');
SQL.Add('fd_Max_U=');
SQL.Add(FormBianTai.EditMaxU.Text);
SQL.Add(',');
SQL.Add('fd_Min_U=');
SQL.Add(FormBianTai.EditMinU.Text);
SQL.Add(',');
SQL.Add('fd_Max_I=');
SQL.Add(FormBianTai.EditMaxI.Text);
SQL.Add(',');
SQL.Add('fd_Rated_I=');
SQL.Add(FormBianTai.EditRatedI.Text);
SQL.Add(' WHERE fd_BianTaiID=');
SQL.Add(ListView.Selected.Caption);
//ShowMessage(SQL.Text);
try
ExecSQL();
Finally
end; //finally
end; //with
end; //end if <> OK Click
end; //end if Select <> Nil
end;
procedure TFormOrder1.ListRemoveAll(Sender: TObject);
begin
ListView.Clear;
end;
Function TFormOrder1.GetMaxOrderIndex() : Integer;
var
MaxOrderIndex : Integer;
begin
MaxOrderIndex := 1;
with MyModule.AdoQuery do
begin//with
//得到 fd_OrderIndex 最大序号
Close();
SQL.Clear();
SQL.Add('select convert(char(6), isnull(max(fd_OrderIndex),0)+1) from tx_Order');
//ShowMessage(SQL.Text);
try
Open();
except
ExecSQL();
end;
if RecordCount <> 0 then
begin
MaxOrderIndex := StrToInt(Trim(Fields[0].AsString));
end; //end if
//close();
end; //with
result := MaxOrderIndex
end;
procedure TFormOrder1.WriteTB_Order(strLineID:string; strBianTaiID:string; strOrderIndex:string; strOrderType:string);
var
strVal : string;
begin
with MyModule.AdoQuery do
begin//with
Close();
SQL.Clear();
case OrderType of
1: //负荷数据存储间隔
begin
SQL.Add('select convert(char(6),fd_DataCycle) from tx_BianTai where fd_BianTaiID=');
SQL.Add(strBianTaiID);
end;
2: //是否主动上传
begin
SQL.Add('select convert(char(6),fd_AutoSend) from tx_BianTai where fd_BianTaiID=');
SQL.Add(strBianTaiID);
end;
3: //电容器投切存储间隔
begin
SQL.Add('select convert(char(6),fd_DrqCycle) from tx_BianTai where fd_BianTaiID=');
SQL.Add(strBianTaiID);
end;
4: //电容器数据类型
begin
SQL.Add('select convert(char(6),fd_DrqDataType) from tx_BianTai where fd_BianTaiID=');
SQL.Add(strBianTaiID);
end;
5: //CT变比
begin
SQL.Add('select fd_CT from tx_BianTai where fd_BianTaiID=');
SQL.Add(strBianTaiID);
end;
6: //PT变比
begin
SQL.Add('select fd_PT from tx_BianTai where fd_BianTaiID=');
SQL.Add(strBianTaiID);
end;
7: //月冻结时间
begin
SQL.Add('select fd_FreezeDay from tx_BianTai where fd_BianTaiID=');
SQL.Add(strBianTaiID);
end;
8: //每天电能存储时刻
begin
SQL.Add('select fd_FreezeDN from tx_BianTai where fd_BianTaiID=');
SQL.Add(strBianTaiID);
end;
9: //电压上限
begin
SQL.Add('select convert(char(6),fd_Max_U) from tx_BianTai where fd_BianTaiID=');
SQL.Add(strBianTaiID);
end;
10: //电压下限
begin
SQL.Add('select convert(char(6),fd_Min_U) from tx_BianTai where fd_BianTaiID=');
SQL.Add(strBianTaiID);
end;
11: //电流上限
begin
SQL.Add('select convert(char(6),fd_Max_I) from tx_BianTai where fd_BianTaiID=');
SQL.Add(strBianTaiID);
end;
12: //额定电流
begin
SQL.Add('select convert(char(6),fd_Rated_I) from tx_BianTai where fd_BianTaiID=');
SQL.Add(strBianTaiID);
end;
else
strVal := '';
end; //end case
if SQL.Text <> '' then
begin
try
Open();
except
ExecSQL();
end;
//ShowMessage(sql.Text);
if RecordCount <> 0 then
begin
strVal := Trim(Fields[0].AsString) ;
end;//end if
//close();
end; //SQL <> ''
SQL.Clear();
SQL.Add('Insert tx_Order(fd_SysTime, fd_LineID, fd_BianTaiID, fd_Time, fd_OrderIndex, fd_OrderType, fd_Val, fd_OrderFlag)Values(getdate(),');
SQL.Add(strLineID);
SQL.Add(',');
SQL.Add(strBianTaiID);
SQL.Add(','''',');
SQL.Add(strOrderIndex);
SQL.Add(',');
SQL.Add(strOrderType);
SQL.Add(',''');
SQL.Add(strVal);
SQL.Add(''',0)');
try
ExecSQL();
finally
end; //finally
end; //end with
end;
procedure TFormOrder1.SendOrderToServer();
var
OrderStr : string;
begin
OrderStr := char($EB) + char($90) + char($91) + '指令:' + IntToStr(OrderIndex) + ':' + IntToStr(OrderType) + ':';
MyModule.UDPClient.Send(OrderStr);
end;
procedure TFormOrder1.ShowLastMsg(StrMsg : string);
begin
//Self.Close();
//FormOrder3.WindowState:=wsMaximized; //窗体最大化显示
//FormOrder3.BorderStyle:=bsNone; //不要标题栏
//FormOrder3.Parent:=Panel; //父亲窗口
FormOrder3.Parent := FormMain.Panel;
FormOrder3.Width := FormMain.Panel.Width;
FormOrder3.Height := FormMain.Panel.Height;
FormOrder3.OrderIndex := OrderIndex;
FormOrder3.OrderType := OrderType;
FormOrder3.ListView.Items.Clear();
FormOrder3.OrderCount := ListView.Items.Count;
FormOrder3.OrderDelay := (FormMain.iWaitTime * 4);
//FormOrder3.ResetListColumnsTitle();
FormOrder3.ResetTabSheetVisible();
//FormOrder3.MemoMsg.Lines.Clear();
//FormOrder3.MemoMsg.Lines.Add(StrMsg);
FormOrder3.MemoMsg.Lines.Insert(0, StrMsg);
//定时器定时更新数据标志打开
FormOrder3.bTimerRefresh := True;
FormOrder3.Show();
end;
procedure TFormOrder1.SendUdpOrder(OrderType : Integer; StrMsg : string);
var
i : Integer;
begin
//得到最大指令号
OrderIndex := GetMaxOrderIndex();
//指令序号
//OrderType := 1;
//写入指令库
for i:=0 to ListView.Items.Count-1 do
begin
WriteTB_Order(ListView.Items[i].SubItems.Strings[1],
ListView.Items[i].Caption,
IntToStr(OrderIndex),
IntToStr(OrderType));
end;
//发送 '指令:1:1' 到服务器端
SendOrderToServer();
//显示指令处理结构信息视图
StrMsg := '第' + IntToStr(OrderIndex) + '号' + StrMsg + ' 共计:' + IntToStr(ListView.Items.Count) + '台区';
ShowLastMsg(StrMsg);
end;
procedure TFormOrder1.BtnDataCycleClick(Sender: TObject);
var
StrMsg : string;
begin
if ListView.Items.Count = 0 then
exit;
FormOrderMsg.PanelMsg.Caption := '设负荷数据存储间隔时间(分钟)';
FormOrderMsg.MyPos.iLeft := BtnDataCycle.ClientOrigin.X;
FormOrderMsg.MyPos.iTop := BtnDataCycle.ClientOrigin.Y;
FormOrderMsg.Width := 250;
FormOrderMsg.EditPara.Visible := False;
FormOrderMsg.ShowModal();
if FormOrderMsg.iBtnClick = 1 then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -