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

📄 unitorder1.pas

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

    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 + -