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

📄 unitorder2.pas

📁 远程抄表系统的客户端程序 安徽六安项目-客户端程序 0 开发环境 Delphi 7.0 所需控件 mxOutlookBar 数 据 库 Sybase 11.5 1 04-12-
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  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 + -