mainpas.pas

来自「DELPHI 编写个人工作计划事务管理软件」· PAS 代码 · 共 1,690 行 · 第 1/5 页

PAS
1,690
字号
var FSB_CheckOk : Boolean;
    FSB_Str : TStrings;
    TempDate, StartDate, EndDate : TDate;            //==== 用于标记两极端天数 ====//
    FSB_SqlStr : String;
begin
  //==== 上一周按钮单击时代码 ====//
  Share_Str.Clear;                          //==== 清空全局字串列表 ====//
  StatusBar.Panels[0].Text := '统计';
  StatusBar.Panels[1].Text := '';
  StatusBar.Panels[2].Text := '上一周统计';
  FWeekSpeedBut.Enabled := FALSE;               //==== 上一周按钮不可操作 ====//
  LWeekSpeedBut.Enabled := FALSE;               //==== 下一周按钮不可操作 ====//

  if Share_Level < 2 then  begin
    FSB_SqlStr := 'SELECT JihuaName FROM JihuaTable Group by JihuaName ORDER BY JihuaName';
    FSB_CheckOk := DataBaseSearch(FSB_SqlStr, 1);
    if FSB_CheckOk = FALSE then begin
      StatusBar.Panels[2].Text := '提取姓名出错';
      Exit;
    end else begin
      With ADOQuery do begin
        First;
        While(Not Eof) do begin
          Share_Str.Add(Trim(FieldByName('JihuaName').AsString));
          Next;
        end;
        Share_Str.Add('ALL USES');
        Close;
      end;
    end;
  end else begin
    Share_Str.Add(Share_LogName);
  end;
  FSB_Str := TStringList.Create;                //==== 创建字段名称字串 ====//
  CountSelForm := TCountSelForm.Create(Application);
  Try
    Share_SqlStr := '';                         //==== 清空全局查询字串 ====//
    TempDate := Date() - 7;
    StartDate := TempDate - GetWeekDiffDay(FormatDateTime('ddd', TempDate));
    EndDate := TempDate + (7- GetWeekDiffDay(FormatDateTime('ddd', TempDate)));

    CountSelForm.ShowModal;
    if CountSelForm.ModalResult = mrOK then begin
      Share_SqlStr := Share_SqlStr + ' AND CreateDate>=''';
      Share_SqlStr := Share_SqlStr + FormatDateTime('yyyyMMdd', StartDate) + ''' AND CreateDate<''';
      Share_SqlStr := Share_SqlStr + FormatDateTime('yyyyMMdd', EndDate) + '''';
      {------------------- 建立查询周字串 --------------}
      FSB_CheckOk := DataBaseSearch(Share_SqlStr, 1);
      if FSB_CheckOk = FALSE then begin
        FileOutput.Enabled := FALSE;
        StatusBar.Panels[1].Text := '上一周统计统计出错';
        //Application.MessageBox('上一周统计数据库记录时出错啦!!!', '提示', MB_OK);
      end else begin
        FlushListView(FALSE);                     //==== 刷新信息显示控件 ====//
        FlushResultInfo(FALSE);
        FlushDBGridWith();
        FileOutput.Enabled := TRUE;
        NWeekSpeedBut.Enabled := TRUE;        //==== 本周按钮变可操作 ====//
        StatusBar.Panels[1].Text := '#Recode : ' + IntToStr(ADOQuery.RecordCount) + ' 条';
        ADOQuery.Fields.GetFieldNames(FSB_Str);
        CB_RecordSort.Items.AddStrings(FSB_Str);
      end;
    end;
  Finally
    CountSelForm.Free;
    FSB_Str.Free;                           //==== 释放字段名称字串 ====//
  end;
end;

procedure TMainForm.NWeekSpeedButClick(Sender: TObject);
begin
  //==== 本周按钮单击时代码 ====//
  CountWeekClick(CountWeek);
end;

procedure TMainForm.LWeekSpeedButClick(Sender: TObject);
var LSB_CheckOk : Boolean;
    LSB_Str : TStrings;
    TempDate, StartDate, EndDate : TDate;            //==== 用于标记两极端天数 ====//
    LSB_SqlStr : String;
begin
  //==== 下一周按钮单击时代码 ====//
  Share_Str.Clear;                          //==== 清空全局字串列表 ====//
  StatusBar.Panels[0].Text := '统计';
  StatusBar.Panels[1].Text := '';
  StatusBar.Panels[2].Text := '下一周统计';
  FWeekSpeedBut.Enabled := FALSE;        //==== 上一周按钮不可操作 ====//
  LWeekSpeedBut.Enabled := FALSE;        //==== 下一周按钮不可操作 ====//

  if Share_Level < 2 then  begin
    LSB_SqlStr := 'SELECT JihuaName FROM JihuaTable Group by JihuaName ORDER BY JihuaName';
    LSB_CheckOk := DataBaseSearch(LSB_SqlStr, 1);
    if LSB_CheckOk = FALSE then begin
      StatusBar.Panels[2].Text := '提取姓名出错';
      Exit;
    end else begin
      With ADOQuery do begin
        First;
        While(Not Eof) do begin
          Share_Str.Add(Trim(FieldByName('JihuaName').AsString));
          Next;
        end;
        Share_Str.Add('ALL USES');
        Close;
      end;
    end;
  end else begin
    Share_Str.Add(Share_LogName);
  end;

  LSB_Str := TStringList.Create;            //==== 创建字段名称字串 ====//
  CountSelForm := TCountSelForm.Create(Application);
  Try
    Share_SqlStr := '';                     //==== 清空全局查询字串 ====//
    TempDate := Date() + 7;
    StartDate := TempDate - GetWeekDiffDay(FormatDateTime('ddd', TempDate));
    EndDate := TempDate + (7- GetWeekDiffDay(FormatDateTime('ddd', TempDate)));

    CountSelForm.ShowModal;
    if CountSelForm.ModalResult = mrOK then begin
      Share_SqlStr := Share_SqlStr + ' AND CreateDate>=''';
      Share_SqlStr := Share_SqlStr + FormatDateTime('yyyyMMdd', StartDate) + ''' AND CreateDate<''';
      Share_SqlStr := Share_SqlStr + FormatDateTime('yyyyMMdd', EndDate) + '''';
      {------------------- 建立查询周字串 --------------}
      LSB_CheckOk := DataBaseSearch(Share_SqlStr, 1);
      if LSB_CheckOk = FALSE then begin
        FileOutput.Enabled := FALSE;
        StatusBar.Panels[1].Text := '下一周统计统计出错';
        //Application.MessageBox('下一周统计数据库记录时出错啦!!!', '提示', MB_OK);
      end else begin
        FlushListView(FALSE);                     //==== 刷新信息显示控件 ====//
        FlushResultInfo(FALSE);
        FlushDBGridWith();
        FileOutput.Enabled := TRUE;
        NWeekSpeedBut.Enabled := TRUE;        //==== 本周按钮变可操作 ====//
        StatusBar.Panels[1].Text := '#Recode : ' + IntToStr(ADOQuery.RecordCount) + ' 条';
        ADOQuery.Fields.GetFieldNames(LSB_Str);
        CB_RecordSort.Items.AddStrings(LSB_Str);
      end;
    end;
  Finally
    CountSelForm.Free;
    LSB_Str.Free;                           //==== 释放字段名称字串 ====//
  end;
end;

procedure TMainForm.CB_ResultInfoChange(Sender: TObject);
begin
  //---- 列表改变时的代码 -----//
  FlushResultListView(CB_ResultInfo.ItemIndex + 1);
  ShowInfoTree(Trim(CB_ResultInfo.Text));
end;

procedure TMainForm.LeftRightSplitterCanResize(Sender: TObject;
  var NewSize: Integer; var Accept: Boolean);
begin
  if NewSize > 240 then Accept := FALSE
  else Accept := TRUE;
end;

procedure TMainForm.PageControlChange(Sender: TObject);
begin
  if PageControl.TabIndex = 0 then FlushResultInfo(FALSE)
  else begin
    FlushResultInfo(TRUE);
    FlushResultListView(1);
    ShowInfoTree(Trim(CB_ResultInfo.Text));
  end;
end;

procedure TMainForm.TreeViewClick(Sender: TObject);
var TVC_Str : TStringList;
    TVC_TempStr, Temp_Str, Parent_Str : String;
begin
  //==== 单击时运行的代码 ====//
  if TreeView.Items.Count > 0 then begin
    if TreeView.Selected.Level >= 1 then begin
      TVC_TempStr := GetInfoStr(Trim(CB_ResultInfo.Text));
      ResultListView.Clear;
      TVC_Str := TStringList.Create;           //==== 设置字符串列表内存空间 ====//
      Try
        if ADOQuery.Active = TRUE then begin
          With ADOQuery do begin
            First;
            While(Not Eof) do begin
              Parent_Str := Trim(FieldByName('JihuaName').AsString);;
              if CompareText(TVC_TempStr, 'CreateDate') = 0then
                Temp_Str := FormatDateTime('yyyy-MM-dd', FieldByName('CreateDate').AsDateTime)
              else if CompareText(TVC_TempStr, 'LevelStatus') = 0 then
                Temp_Str := GetLevelString(FieldByName('LevelStatus').AsInteger)
              else Temp_Str := Trim(FieldByName(TVC_TempStr).AsString);
              if Temp_Str = '' then Temp_Str := 'NULL';

              if(CompareText(Trim(TreeView.Selected.Text), Temp_Str) = 0)and
                (CompareText(Trim(TreeView.Selected.Parent.Text), Parent_Str) = 0)then begin
                GetLineDateStr(TVC_Str);         //==== 获取一行数据到字符列表 ====//
                ShowDateToView(TVC_Str);         //==== 把一行数据加入结果信息 ====//
              end;
              Next;
              Application.ProcessMessages;
            end;
          end;
        end;
      Finally
        TVC_Str.Free;                          //==== 释放字符串列表内存空间 ====//
      end;
    end;
  end;
end;

procedure TMainForm.ToolShowNowButClick(Sender: TObject);
begin
  //==== 快速显示个人当天计划 ====//
  SearchNowClick(SearchNow);
end;

procedure TMainForm.SearchNowClick(Sender: TObject);
var SNC_Str : TStringList;
    SNC_CheckOk : Boolean;
begin
  //==== 查询当天的工作计划 ====//
  FlushListView(TRUE);                     //==== 刷新信息显示控件 ====//
  FlushResultInfo(FALSE);
  FlushSortBox(FALSE);                     //==== 隐藏排序操作控件 ====//
  FlushWeekParle(FALSE);                   //==== 隐藏周统计面板件 ====//
  JihuaListView.Clear;

  StatusBar.Panels[0].Text := '显示';
  StatusBar.Panels[1].Text := '';
  StatusBar.Panels[2].Text := '显示当天计划';
  SNC_Str := TStringList.Create;               //==== 记录数据字段名称 ====//
  Try
    Share_SqlStr:= '';                         //==== 清空全局查询变量 ====//
    Share_SqlStr := 'SELECT * From JihuaTable WHERE CreateDate>=''';
    Share_SqlStr := Share_SqlStr + FormatDateTime('yyyyMMdd', Date()) + ''' AND CreateDate<''';
    Share_SqlStr := Share_SqlStr + FormatDateTime('yyyyMMdd', Date() + 1) + ''' AND JihuaName=''';
    Share_SqlStr := Share_SqlStr + Share_LogName + ''' ORDER BY ID';

    SNC_CheckOk := DataBaseSearch(Share_SqlStr, 1);
    if SNC_CheckOk = FALSE then begin
      FileOutput.Enabled := FALSE;
      StatusBar.Panels[0].Text := '错误';
      StatusBar.Panels[2].Text := '显示当天任务出错';
      //Application.MessageBox('查询当天计划任务记录时出错啦!!!', '提示', MB_OK);
    end else begin
      if ADOQuery.RecordCount >= 1 then begin
        With ADOQuery do begin
          //Share_DateCount := RecordCount;
          StatusBar.Panels[1].Text := '#Record : ' + IntToStr(RecordCount) + ' 条';
          First;
          While(Not Eof) do begin
            DataToString(SNC_Str);         //==== 把单行记录输入数组 ====//
            DataInsToView(SNC_Str);        //==== 把数组记录输入列表 ====//
            Next;
            Application.ProcessMessages;
          end;
        end;
      end else begin
        if Application.MessageBox(PChar('用户' + Share_LogName + '当天没有任务,是否要建立'), '确定', MB_YESNO) = ID_YES then
          FileNewsClick(FileNews);
      end;
      FileOutput.Enabled := TRUE;
    end;
  Finally
    SNC_Str.Free;                              //==== 释放字段名称字串 ====//
  end;
end;

procedure TMainForm.SearchOtherClick(Sender: TObject);
var SOC_Str : TStringList;
    SOC_CheckOk : Boolean;
begin
  //==== 查询昨天的工作计划 ====//
  FlushListView(TRUE);                     //==== 刷新信息显示控件 ====//
  FlushResultInfo(FALSE);
  FlushSortBox(FALSE);                     //==== 隐藏排序操作控件 ====//
  FlushWeekParle(FALSE);                   //==== 隐藏周统计面板件 ====//
  JihuaListView.Clear;

  StatusBar.Panels[0].Text := '显示';
  StatusBar.Panels[1].Text := '';
  StatusBar.Panels[2].Text := '显示昨天计划';
  SOC_Str := TStringList.Create;               //==== 记录数据字段名称 ====//
  Try
    Share_SqlStr:= '';                         //==== 清空全局查询变量 ====//
    Share_SqlStr := 'SELECT * From JihuaTable WHERE CreateDate>=''';
    Share_SqlStr := Share_SqlStr + FormatDateTime('yyyyMMdd', Date() - 1) + ''' AND CreateDate<''';
    Share_SqlStr := Share_SqlStr + FormatDateTime('yyyyMMdd', Date()) + ''' AND JihuaName=''';
    Share_SqlStr := Share_SqlStr + Share_LogName + ''' ORDER BY ID';

    SOC_CheckOk := DataBaseSearch(Share_SqlStr, 1);
    if SOC_CheckOk = FALSE then begin
      FileOutput.Enabled := FALSE;
      StatusBar.Panels[0].Text := '错误';
      StatusBar.Panels[2].Text := '显示昨天任务出错';
      //Application.MessageBox('查询昨天计划任务记录时出错啦!!!', '提示', MB_OK);
    end else begin
      With ADOQuery do begin
        //Share_DateCount := RecordCount;
        StatusBar.Panels[1].Text := '#Record : ' + IntToStr(RecordCount) + ' 条';
        First;
        While(Not Eof) do begin
          DataToString(SOC_Str);         //==== 把单行记录输入数组 ====//
          DataInsToView(SOC_Str);        //==== 把数组记录输入列表 ====//
          Next;
          Application.ProcessMessages;
        end;
      end;
      FileOutput.Enabled := TRUE;
    end;
  Finally
    SOC_Str.Free;                              //==== 释放字段名称字串 ====//
  end;
end;

procedure TMainForm.SearchWeekClick(Sender: TObject);
var SWC_CheckOk : Boolean;
    StartDate, EndDate : TDate;
    SWC_Str : TStringList;
    SWC_String : String;
begin
  //==== 查询一周内工作计划 ====//
  FlushListView(TRUE);                     //==== 刷新信息显示控件 ====//
  FlushWeekParle(FALSE);                   //==== 隐藏周统计面板件 ====//
  FlushResultInfo(FALSE);
  FlushSortBox(FALSE);                     //==== 隐藏排序操作控件 ====//
  JihuaListView.Clear;

  StatusBar.Panels[0].Text := '显示';
  StatusBar.Panels[1].Text := '';
  StatusBar.Panels[2].Text := '显示一周计划';

  if CompareText('星期一', FormatDateTime('ddd', Date())) = 0 then
    StartDate := Date() - 7 - GetWeekDiffDay(FormatDateTime('ddd', Date()))
  else StartDate := Date() - GetWeekDiffDay(FormatDateTime('ddd', Date()));
  EndDate := Date() + (7- GetWeekDiffDay(FormatDateTime('ddd', Date())));

  SWC_Str := TStringList.Create;                 //

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?