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 + -
显示快捷键?