📄 unitorder2.pas
字号:
if (SelectedNode <> nil) and (SelectedNode.Parent <> nil)then
begin
BianTaiStr := SelectedNode.Text;
iPos := Pos(')', BianTaiStr);
BianTaiID := Copy(BianTaiStr, 2, iPos-2);
BianTaiName := Copy(BianTaiStr, iPos+1, length(BianTaiStr));
ListItem := FormOrder2.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 TFormOrder2.ListRemoveAll(Sender: TObject);
begin
ListView.Clear;
end;
procedure TFormOrder2.ListRemoveCurrSel(Sender: TObject);
begin
if ListView.Selected <> nil then
begin
ListView.Selected.Delete();
end;
end;
procedure TFormOrder2.ListRemoveAllSel(Sender: TObject);
begin
if ListView.Selected <> nil then
begin
ListView.DeleteSelected;
end;
end;
procedure TFormOrder2.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;
Function TFormOrder2.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 TFormOrder2.WriteTB_Order(strLineID:string; strBianTaiID:string; strOrderIndex:string; strOrderType:string; strVal:string; strDateTime:string);
var
strDateTime1 : string;
begin
with MyModule.AdoQuery do
begin//with
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);
strDateTime1 := format('''%s''',[strDateTime]);
SQL.Add(',');
SQL.Add(strDateTime1);
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 TFormOrder2.SendOrderToServer();
var
OrderStr : string;
begin
OrderStr := char($EB) + char($90) + char($91) + '指令:' + IntToStr(OrderIndex) + ':' + IntToStr(OrderType) + ':';
MyModule.UDPClient.Send(OrderStr);
end;
procedure TFormOrder2.ShowLastMsg(StrMsg : string);
begin
//Self.Close();
//FormOrder.WindowState:=wsMaximized; //窗体最大化显示
//FormOrder.BorderStyle:=bsNone; //不要标题栏
//FormOrder.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 TFormOrder2.SendUdpOrder(OrderType : Integer; StrMsg : string; strVal:string=''; strDateTime:string='');
var
i : Integer;
begin
//得到最大指令号
OrderIndex := GetMaxOrderIndex();
//指令序号
//写入指令库
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),
strVal,
strDateTime);
end;
//发送 '指令:1:1' 到服务器端
SendOrderToServer();
//显示指令处理结构信息视图
StrMsg := '第' + IntToStr(OrderIndex) + '号' + StrMsg + ' 共计:' + IntToStr(ListView.Items.Count) + '台区';
ShowLastMsg(StrMsg);
end;
procedure TFormOrder2.BtnDayCurrClick(Sender: TObject);
var
StrMsg : string;
begin
if ListView.Items.Count = 0 then
exit;
FormOrderPara.PanelMsg1.Caption := '取实时负荷数据';
FormOrderPara.CheckMsg2.Caption := '';
FormOrderPara.EditSum.Text := '';
FormOrderPara.ComboHistory.Visible := false;
FormOrderPara.DateTimePicker1.Visible := false;
FormOrderPara.DateTimePicker2.Visible := false;
FormOrderPara.CheckMsg2.Visible := false;
FormOrderPara.EditSum.Visible := false;
FormOrderPara.MyPos.iLeft := Panel3.ClientOrigin.X;
FormOrderPara.MyPos.iTop := Panel3.ClientOrigin.Y;
FormOrderPara.Width := Panel3.Width;
FormOrderPara.Height := Panel3.Height;
FormOrderPara.ShowModal();
if FormOrderPara.iBtnClick = 1 then
begin
OrderType := 31;
OrderDelay:= 20;
StrMsg := '指令:客户端向服务器发送指令(31):取实时负荷数据';
SendUdpOrder(OrderType, StrMsg);
end;
end;
procedure TFormOrder2.BtnDayHistoryClick(Sender: TObject);
var
StrMsg : string;
strDateTime : string;
strVal : string;
begin
if ListView.Items.Count = 0 then
exit;
FormOrderPara.PanelMsg1.Caption := '取历史负荷数据,选择起始日期';
FormOrderPara.CheckMsg2.Caption := '输入个数';
FormOrderPara.EditSum.Text := '1';
FormOrderPara.EditSum.Enabled := False;
FormOrderPara.ComboHistory.Visible := false;
FormOrderPara.DateTimePicker1.Visible := true;
FormOrderPara.DateTimePicker2.Visible := true;
//FormOrderPara.DateTimePicker1.DateTime:= Now;
FormOrderPara.CheckMsg2.Visible := True;
FormOrderPara.EditSum.Visible := true;
FormOrderPara.MyPos.iLeft := Panel3.ClientOrigin.X;
FormOrderPara.MyPos.iTop := Panel3.ClientOrigin.Y;
FormOrderPara.Width := Panel3.Width;
FormOrderPara.Height := Panel3.Height;
FormOrderPara.ShowModal();
if FormOrderPara.iBtnClick = 1 then
begin
{
if FormOrderPara.EditSum.Text = '1' then
begin
OrderType := 32;
OrderDelay:= 20;
StrMsg := '指令:客户端向服务器发送指令(32):取 ' +
DateToStr(FormOrderPara.DateTimePicker1.Date) +
' '+
TimeToStr(FormOrderPara.DateTimePicker2.Time)+ ' 负荷数据';
end
else
}
if (FormOrderPara.EditSum.Text = 'FFFF') or (FormOrderPara.EditSum.Text = 'ffff') then
begin
OrderType := 33;
OrderDelay:= 20;
StrMsg := '指令:客户端向服务器发送指令(33):取' +
DateToStr(FormOrderPara.DateTimePicker1.Date) +
' ' +
TimeToStr(FormOrderPara.DateTimePicker2.Time)+
'之后[所有]负荷数据';
end
else begin
OrderType := 33;
OrderDelay:= 20;
StrMsg := '指令:客户端向服务器发送指令(33):取' +
DateToStr(FormOrderPara.DateTimePicker1.Date) +
' ' +
TimeToStr(FormOrderPara.DateTimePicker2.Time)+
'之后[' +
FormOrderPara.EditSum.Text +
']个负荷数据';
end;
strDateTime := DateToStr(FormOrderPara.DateTimePicker1.Date) + ' ' + TimeToStr(FormOrderPara.DateTimePicker2.Time);
strVal := Format('%04s',[FormOrderPara.EditSum.Text]);
//ShowMessage(strVal);
//ShowMessage(strDateTime + strVal);
SendUdpOrder(OrderType, StrMsg, strVal, strDateTime);
end;
end;
procedure TFormOrder2.BtnDrqCurrClick(Sender: TObject);
var
StrMsg : string;
begin
if ListView.Items.Count = 0 then
exit;
FormOrderPara.PanelMsg1.Caption := '取实时电容器投切前后数据';
FormOrderPara.CheckMsg2.Caption := '';
FormOrderPara.EditSum.Text := '';
FormOrderPara.ComboHistory.Visible := false;
FormOrderPara.DateTimePicker1.Visible := false;
FormOrderPara.DateTimePicker2.Visible := false;
FormOrderPara.CheckMsg2.Visible := false;
FormOrderPara.EditSum.Visible := false;
FormOrderPara.MyPos.iLeft := Panel3.ClientOrigin.X;
FormOrderPara.MyPos.iTop := Panel3.ClientOrigin.Y;
FormOrderPara.Width := Panel3.Width;
FormOrderPara.Height := Panel3.Height;
FormOrderPara.ShowModal();
if FormOrderPara.iBtnClick = 1 then
begin
OrderType := 34;
OrderDelay:= 20;
StrMsg := '指令:客户端向服务器发送指令(34):取实时电容器投切前后数据';
SendUdpOrder(OrderType, StrMsg, '0');
end;
end;
procedure TFormOrder2.BtnDrqHistoryClick(Sender: TObject);
var
strMsg : string;
i : integer;
begin
if ListView.Items.Count = 0 then
exit;
FormOrderPara.PanelMsg1.Caption := '取电容器投切前后数据,请选择:';
FormOrderPara.CheckMsg2.Caption := '';
FormOrderPara.EditSum.Text := '';
FormOrderPara.ComboHistory.Items.Clear;
for i:=1 to 24 do
begin
strMsg := format('第%02d组', [i]);
FormOrderPara.ComboHistory.Items.Add(strMsg );
end;
FormOrderPara.ComboHistory.ItemIndex := 0;
FormOrderPara.CheckMsg2.Caption := '';
FormOrderPara.EditSum.Text:= '';
FormOrderPara.ComboHistory.Visible := true;
FormOrderPara.DateTimePicker1.Visible := false;
FormOrderPara.DateTimePicker2.Visible := false;
FormOrderPara.CheckMsg2.Visible := false;
FormOrderPara.EditSum.Visible := false;
FormOrderPara.MyPos.iLeft := Panel3.ClientOrigin.X;
FormOrderPara.MyPos.iTop := Panel3.ClientOrigin.Y;
FormOrderPara.Width := Panel3.Width;
FormOrderPara.Height := Panel3.Height;
FormOrderPara.ShowModal();
if FormOrderPara.iBtnClick = 1 then
begin
OrderType := 34;
OrderDelay:= 20;
StrMsg := '指令:客户端向服务器发送指令(34:取' +
FormOrderPara.ComboHistory.Text +
'电容器投切前后数据';
SendUdpOrder(OrderType, StrMsg, IntToStr(FormOrderPara.ComboHistory.ItemIndex + 1));
end;
end;
procedure TFormOrder2.BtnXieboCurrClick(Sender: TObject);
var
StrMsg : string;
strVal : string;
begin
if ListView.Items.Count = 0 then
exit;
FormOrderPara.PanelMsg1.Caption := '取实时谐波数据,请选择:';
FormOrderPara.CheckMsg2.Caption := '';
FormOrderPara.EditSum.Text := '';
FormOrderPara.ComboHistory.Items.Clear;
FormOrderPara.ComboHistory.Items.Add('B相电压' );
FormOrderPara.ComboHistory.Items.Add('B相电流' );
FormOrderPara.ComboHistory.ItemIndex := 0;
FormOrderPara.ComboHistory.Visible := True;
FormOrderPara.DateTimePicker1.Visible := false;
FormOrderPara.DateTimePicker2.Visible := false;
FormOrderPara.CheckMsg2.Visible := false;
FormOrderPara.EditSum.Visible := false;
FormOrderPara.MyPos.iLeft := Panel3.ClientOrigin.X;
FormOrderPara.MyPos.iTop := Panel3.ClientOrigin.Y;
FormOrderPara.Width := Panel3.Width;
FormOrderPara.Height := Panel3.Height;
FormOrderPara.ShowModal();
if FormOrderPara.iBtnClick = 1 then
begin
if FormOrderPara.ComboHistory.ItemIndex = 0 then
strVal := '30'
else
strVal := '31';
OrderType := 35;
OrderDelay := 20;
StrMsg := '指令:客户端向服务器发送指令(35:取实时'+
FormOrderPara.ComboHistory.Text +
'谐波数据';
SendUdpOrder(OrderType, StrMsg, strVal);
end;
end;
procedure TFormOrder2.BtnXieboHistoryClick(Sender: TObject);
var
StrMsg : string;
i : Integer;
begin
if ListView.Items.Count = 0 then
exit;
FormOrderPara.PanelMsg1.Caption := '取历史谐波数据,请选择:';
FormOrderPara.CheckMsg2.Caption := '';
FormOrderPara.EditSum.Text := '';
FormOrderPara.ComboHistory.Items.Clear;
for i:=1 to 30 do
begin
strMsg := format('第%02d组', [i]);
FormOrderPara.ComboHistory.Items.Add(strMsg );
end;
FormOrderPara.ComboHistory.ItemIndex := 0;
FormOrderPara.ComboHistory.Visible := true;
FormOrderPara.DateTimePicker1.Visible := false;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -