mainpas.pas

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

PAS
1,690
字号
  //==== 新建个人计划的过程代码 ====//
  FlushListView(TRUE);                     //==== 刷新信息显示控件 ====//
  FlushResultInfo(FALSE);
  FlushSortBox(FALSE);                     //==== 隐藏排序操作控件 ====//
  FlushWeekParle(FALSE);                   //==== 隐藏周统计面板件 ====//

  StatusBar.Panels[0].Text := '新建';
  StatusBar.Panels[1].Text := '';
  StatusBar.Panels[2].Text := '';

  //---------------- 创建新建窗口 ----------------//
  FNC_Str := TStringList.Create;             //==== 创建字符串内存空间 ====//
  NewsForm := TNewsForm.Create(Application);
  Try
    Share_SqlStr := '';                      //==== 清空全局查询字串 ====//
    Share_Str.Clear;                         //==== 全局字串列表清空 ====//
    NewsForm.ShowModal;
    if NewsForm.ModalResult = mrOK then begin
      FileOutput.Enabled := TRUE;
      FNC_SqlStr := Share_SqlStr;
      Share_SqlStr := '';                    //==== 清空全局查询字串 ====//
      for I := 0 to Share_Str.Count - 1 do begin
        FNC_CheckOk := DataBaseSearch(Trim(Share_Str[I]), 2);
        if FNC_CheckOk = FALSE then begin
          StatusBar.Panels[1].Text := '总任务数 : ' + IntToStr(Share_DateCount);
          StatusBar.Panels[2].Text := '新任务未保存';
          //Application.MessageBox('插入数据库记录时出错啦!!!', '提示', MB_OK);
        end else begin
          Inc(Share_DateCount);
          StatusBar.Panels[1].Text := '总任务数 : ' + IntToStr(Share_DateCount);
          StatusBar.Panels[2].Text := '新添加任务 : ' + IntToStr(I+1) + ' 条';
          {---- 增加数据显示 ----}
          FNC_SqlStr := UnLineString(FNC_SqlStr, ':=', FNC_TempStr);
          DecodeString(FNC_TempStr, ';', FNC_Str);
          DataInsToView(FNC_Str);            //==== 把数组记录输入列表 ====//
        end;
      end;
    end;
  Finally
    FNC_Str.Free;                            //==== 释放字符串内存空间 ====//
    NewsForm.Free;                           //==== 释放新建控件内存 ====//
  end;
end;

procedure TMainForm.FileModifyClick(Sender: TObject);
var FMC_CheckOk : Boolean;
begin
  //==== 修改个人工作计划的过程代码 ====//
  if Share_Str.Count = 11 then begin
      StatusBar.Panels[0].Text := '修改';
      ModifyForm := TModifyForm.Create(Application);
      Try
        Share_SqlStr := '';                    //==== 清空全局查询变量 ====//
        ModifyForm.ShowModal;                  //==== 显示修改控件面板 ====//
        if ModifyForm.ModalResult = mrOK then begin
          FMC_CheckOk := DataBaseSearch(Share_SqlStr, 2);
          if FMC_CheckOk = FALSE then begin
            StatusBar.Panels[2].Text := '修改任务 : ' + Trim(Share_Str[0]) + ' 出错';
            //Application.MessageBox('修改数据库记录时出错啦!!!', '提示', MB_OK);
          end else begin
            StatusBar.Panels[2].Text := '修改记录 : ' + Trim(Share_Str[0]);
            {--------- 显示更新数据 --------}
            ModifyListView(Share_Str);        //==== 用全局字串列表显示 ====//
          end;
        end;
      Finally
        ModifyForm.Free;
      end;
  end;
end;

procedure TMainForm.FileDeleteClick(Sender: TObject);
var FDC_SqlStr : String;
    FDC_CheckOk : Boolean;
begin
  //---- 删除记录菜单单击代码 -----//
  if Share_Str.Count = 11 then begin
    StatusBar.Panels[0].Text := '删除';

    FDC_SqlStr := 'DELETE FROM JihuaTable WHERE ID=''';
    FDC_SqlStr := FDC_SqlStr + Trim(Share_Str[0]) + ''' AND JihuaName=''';
    FDC_SqlStr := FDC_SqlStr + Trim(Share_Str[2]) + ''' AND CreateDate=''';
    FDC_SqlStr := FDC_SqlStr + Trim(Share_Str[4]) + '''';

    FDC_CheckOk := DataBaseSearch(FDC_SqlStr, 2);
    if FDC_CheckOk = FALSE then begin
      StatusBar.Panels[2].Text := '删除任务 : ' + Trim(Share_Str[0]) + ' 出错';
      //Application.MessageBox('删除任务记录时出错啦!!!', '提示', MB_OK);
    end else begin
      //Share_DateCount := Share_DateCount - 1;
      StatusBar.panels[1].Text := '总任务数 : ' + IntToStr(Share_DateCount - 1) + ' 条';
      StatusBar.Panels[2].Text := '删除记录 : ' +  Trim(Share_Str[0]);
      JihuaListView.Selected.Delete;
    end;
  end;
end;

procedure TMainForm.OutputTextClick(Sender: TObject);
var OTC_Str : TStringList;
begin
  //==== 当输出数据为文本数据时的代码 ====//
  StatusBar.Panels[0].Text := '保存';
  OTC_Str := TStringList.Create;

  SaveFileDialog.DefaultExt := 'txt';
  SaveFileDialog.Filter := '文本文档(*.txt)|*.txt|所有格式文档(*.*)|*.*';
  if SaveFileDialog.Execute = TRUE then begin
    Try
        //==== 加入保存文本文档的过程代码 ====//
      if JihuaListView.Visible = TRUE then begin
        if JihuaListView.Items.Count > 0 then begin
          ListViewToString(JihuaListView,OTC_Str);
          OTC_Str.SaveToFile(SaveFileDialog.FileName);
        end;
      end else begin
        {------------- 保存统计数据表格中数据 ------------}
        if PageControl.TabIndex = 0 then begin
          DateRecordToStr(OTC_Str);
          OTC_Str.SaveToFile(SaveFileDialog.FileName);
        end else begin
        /////////// 加入如显示为信息面板中信息时的存盘 //////
          if ResultListView.Items.Count > 0 then begin
            ListViewToString(ResultListView,OTC_Str);
            OTC_Str.SaveToFile(SaveFileDialog.FileName);
          end;
        end;
      end;
    Except
      StatusBar.Panels[2].Text := SaveFileDialog.FileName + '文件未保存';
      Application.MessageBox('保存文本文档时出错啦!!!', '警告', MB_OK);
      Abort();
    end;
    StatusBar.Panels[2].Text := '文件保存成功';
    Application.MessageBox('文本文档保存成功!!!', '提示', MB_OK);
  end;
  OTC_Str.Free;
end;

procedure TMainForm.OutputExcelClick(Sender: TObject);
var OEC_Str : TStringList;
    I : Integer;
begin
  //==== 当输出数据为EXCEL格式数据时的代码 ====//
  OEC_Str := TStringList.Create;
  SaveFileDialog.DefaultExt := 'xls';
  SaveFileDialog.Filter := 'EXCEL文档(*.xls)|*.xls|所有格式文档(*.*)|*.*';
  if SaveFileDialog.Execute = TRUE then begin
    Try
      //==== 加入保存EXCEL文档的过程代码 ====//
      if JihuaListView.Visible = TRUE then begin
        if JihuaListView.Items.Count > 0 then begin
          ListViewToString(JihuaListView,OEC_Str);          //==== 取得信息字中列表 ====//
          For I := 0 to OEC_Str.Count - 1 do begin
          {---------------- 加入保存为EXCEL 文档记录 ---------------}
            ShowMessage('此功能还未做');
            Exit;
          end;
        end;
      end else begin
        {--------------- 保存数据表格中数据 ---------------}
      end;
    Except
      Application.MessageBox('保存EXCEL文档时出错啦!!!', '警告', MB_OK);
      Abort();
    end;
    Application.MessageBox('EXCEL文档保存成功!!!', '提示', MB_OK);
  end;
  OEC_Str.Free;
end;

procedure TMainForm.FileExitClick(Sender: TObject);
begin
  //==== 当单击退出命令菜单时的代码 ====//
  MainForm.Close;
end;

procedure TMainForm.ManageViewClick(Sender: TObject);
var MVC_SqlStr : String;
    MVC_CheckOk : Boolean;
    MVC_Str : TStringList;
begin
  //==== 当单击显示个人计划时的代码 ====//
  Share_Str.Clear;                            //==== 清空全局字串列表变量 ====//
  FlushListView(TRUE);                     //==== 刷新信息显示控件 ====//
  FlushResultInfo(FALSE);
  FlushSortBox(FALSE);                     //==== 隐藏排序操作控件 ====//
  FlushWeekParle(FALSE);                   //==== 隐藏周统计面板件 ====//
  JihuaListView.Clear;
  {------------  加入用户权限设置 ----------}
  StatusBar.Panels[0].Text := '查询';
  StatusBar.Panels[1].Text := '#Record : 0 条';
  StatusBar.Panels[2].Text := '#Select Row : 0 行';

  if Share_Level < 2 then  begin
    MVC_SqlStr := 'SELECT JihuaName FROM JihuaTable Group by JihuaName ORDER BY JihuaName';
    MVC_CheckOk := DataBaseSearch(MVC_SqlStr, 1);
    if MVC_CheckOk = FALSE then begin
      StatusBar.Panels[2].Text := '提取姓名出错';
      //Application.MessageBox('查询数据库记录时出错啦!!!', '提示', MB_OK);
      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;
  {-------------------- 显示查询选择的子窗体 ------------------}
  MVC_Str := TStringList.Create;        //==== 开设数组内存空间 ====//
  SearchForm := TSearchForm.Create(Application);
  Try
    Share_SqlStr := '';                     //==== 全局查询语名变量清空 ====//
    SearchForm.ShowModal;
    if SearchForm.ModalResult = mrOK then begin
      MVC_CheckOk := DataBaseSearch(Share_SqlStr, 1);
      if MVC_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(MVC_Str);         //==== 把单行记录输入数组 ====//
            DataInsToView(MVC_Str);        //==== 把数组记录输入列表 ====//
            Next;
            Application.ProcessMessages;
          end;
        end;
        FileOutput.Enabled := TRUE;
      end;
    end;
  Finally
    SearchForm.Free;                        //==== 释放窗体内存空间 ====//
    MVC_Str.Free;                           //==== 释放数组内存空间 ====//
  end;
end;

procedure TMainForm.CountDayClick(Sender: TObject);
var CDC_CheckOk : Boolean;
    CDC_Str : TStrings;
    CDC_SqlStr : String;
begin
  //==== 菜单一日统计 ====//
  Share_Str.Clear;                            //==== 清空全局字串列表 ====//
  StatusBar.Panels[0].Text := '统计';
  StatusBar.Panels[1].Text := '';
  StatusBar.Panels[2].Text := '日统计';

  if Share_Level < 2 then  begin
    CDC_SqlStr := 'SELECT JihuaName FROM JihuaTable Group by JihuaName ORDER BY JihuaName';
    CDC_CheckOk := DataBaseSearch(CDC_SqlStr, 1);
    if CDC_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;

  CDC_Str := TStringList.Create;               //==== 记录数据字段名称 ====//
  SelDayForm:= TSelDayForm.Create(Application);
  Try
    Share_SqlStr:= '';                         //==== 清空全局查询变量 ====//
    SelDayForm.ShowModal;
    if SelDayForm.ModalResult= mrOK then begin
      CDC_CheckOk := DataBaseSearch(Share_SqlStr, 1);
      if CDC_CheckOk = FALSE then begin
        FileOutput.Enabled := FALSE;
        StatusBar.Panels[1].Text := '日统计出错';
        //Application.MessageBox('日统计数据库记录时出错啦!!!', '提示', MB_OK);
      end else begin
        FlushListView(FALSE);                     //==== 刷新信息显示控件 ====//
        FlushResultInfo(FALSE);
        FlushSortBox(TRUE);                       //==== 隐藏排序操作控件 ====//
        FlushWeekParle(FALSE);                    //==== 隐藏周统计面板件 ====//
        FlushDBGridWith();
        FileOutput.Enabled := TRUE;
        StatusBar.Panels[1].Text := '#Recode : ' + IntToStr(ADOQuery.RecordCount) + ' 条';
        ADOQuery.Fields.GetFieldNames(CDC_Str);
        CB_RecordSort.Items.AddStrings(CDC_Str);
      end;
    end;
  Finally
    SelDayForm.Free;
    CDC_Str.Free;                                 //==== 释放字段名称字串 ====//
  end;
end;

procedure TMainForm.CountWeekClick(Sender: TObject);
var CWC_CheckOk : Boolean;
    CWC_Str : TStrings;
    CWC_SqlStr : String;
    StartDate, EndDate : TDate;             //==== 用于标记两极端天数 ====//
begin
  //==== 周统计过程代码 ====//
  Share_Str.Clear;                          //==== 清空全局字串列表 ====//
  StatusBar.Panels[0].Text := '统计';
  StatusBar.Panels[1].Text := '';
  StatusBar.Panels[2].Text := '本周统计';
  if Share_Level < 2 then  begin
    CWC_SqlStr := 'SELECT JihuaName FROM JihuaTable Group by JihuaName ORDER BY JihuaName';
    CWC_CheckOk := DataBaseSearch(CWC_SqlStr, 1);
    if CWC_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

⌨️ 快捷键说明

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