📄 main.pas
字号:
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Trayicon, IniFiles, StdCtrls, ExtCtrls, Buttons, ComCtrls, DB,
ADODB, Message, XPMan;
type
TMainForm = class(TForm)
TrayIcon: TTrayIcon;
Panel1: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
Label1: TLabel;
FilterCB: TComboBox;
StatusBar1: TStatusBar;
TasksLV: TListView;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
SpeedButton8: TSpeedButton;
Timer1: TTimer;
ADOQuery2: TADOQuery;
XPManifest1: TXPManifest;
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure TrayIconClick(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure FilterCBChange(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
public
FCanClose: Boolean;
procedure LoadIniFile;
procedure SaveIniFile;
procedure LoadTasks;
procedure UpdateStatus;
end;
var
MainForm: TMainForm;
implementation
uses Task, About, Options;
{$R *.dfm}
{ TMainForm }
procedure TMainForm.LoadIniFile;
var
I: TIniFile;
j: Integer;
begin
I:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'taskalert.ini');
top:=strtoint(i.ReadString('Main','Top','10'));
Left:=strtoint(i.ReadString('Main','Left','10'));
width:=strtoint(i.ReadString('Main','Width','750'));
height:=strtoint(i.ReadString('Main','Height','600'));
if i.ReadString('Main','State','NORMAL')='MAXIMIZED' then WindowState:=wsMaximized;
for j := 0 to TasksLV.Columns.Count - 1 do
TasksLV.Columns[j].Width := I.ReadInteger('TasksLV', 'C' + IntToStr(j), TasksLV.Columns[j].Width);
I.Free;
end;
procedure TMainForm.SaveIniFile;
var I: TIniFile;
j: Integer;
begin
I:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'taskalert.ini');
if WindowState=wsNormal then Begin
i.WriteString('Main','Top',inttostr(top));
i.WriteString('Main','Left',inttostr(Left));
i.WriteString('Main','Width',inttostr(Width));
i.WriteString('Main','Height',inttostr(Height));
end;
if WindowState=wsMaximized then i.WriteString('Main','State','MAXIMIZED')
else i.WriteString('Main','State','NORMAL');
for j := 0 to TasksLV.Columns.Count - 1 do
I.WriteInteger('TasksLV', 'C' + IntToStr(j), TasksLV.Columns[j].Width);
with TaskForm do begin
if WindowState=wsNormal then Begin
i.WriteString('TaskForm','Top',inttostr(top));
i.WriteString('TaskForm','Left',inttostr(Left));
i.WriteString('TaskForm','Width',inttostr(Width));
i.WriteString('TaskForm','Height',inttostr(Height));
end;
if WindowState=wsMaximized then i.WriteString('TaskForm','State','MAXIMIZED')
else i.WriteString('TaskForm','State','NORMAL');
end;
I.Free;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
ADOConnection1.Close;
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
ExtractFilePath(ParamStr(0)) + 'db.mdb;Persist Security Info=False';
ADOConnection1.Open;
FCanClose := false;
FilterCB.ItemIndex := 2;
LoadTasks;
Timer1.Enabled := true;
end;
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=FCanClose;
if not CanClose
then
begin
Hide;
TrayIcon.Active:=true;
end
else SaveIniFile;
end;
procedure TMainForm.TrayIconClick(Sender: TObject);
begin
TrayIcon.Active := false;
Show;
end;
procedure TMainForm.SpeedButton7Click(Sender: TObject);
begin
FCanClose := true;
Close;
end;
procedure TMainForm.LoadTasks;
var S, S2: String;
begin
TasksLV.Items.BeginUpdate;
try
TasksLV.Items.Clear;
case FilterCB.ItemIndex of
0: S := '';
1: S := 'where Result>0';
2: S := 'where Result=0';
end;
ADOQuery1.SQL.Text := 'select * from tasks ' + S +
' order by DateBegin';
ADOQuery1.Open;
while not ADOQuery1.Eof do begin
with TasksLV.Items.Add do begin
Data := Pointer(ADOQuery1.FieldByName('ID').AsInteger);
Caption := ADOQuery1.FieldByName('DateBegin').AsString;
SubItems.Add(ADOQuery1.FieldByName('Name').AsString);
SubItems.Add(ADOQuery1.FieldByName('DateEnd').AsString);
if ADOQuery1.FieldByName('Result').AsInteger = 0 then S := '湾
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -