📄 note.pas
字号:
unit Note;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, Menus, ImgList, Buttons, ToolWin, ComCtrls, ExtCtrls, StdCtrls, QDialogs,
ShellApi;
type
TMainForm = class(TForm)
MainMenu1: TMainMenu;
ImageList1: TImageList;
Panel1: TPanel;
ToolBar: TToolBar;
NewBtn: TToolButton;
OptionBtn: TToolButton;
DelBtn: TToolButton;
SearchBtn: TToolButton;
PrintBtn: TToolButton;
OperateBtn: TToolButton;
ImageList2: TImageList;
Panel2: TPanel;
Label1: TLabel;
InputEdit: TEdit;
StatusBar: TStatusBar;
N1: TMenuItem;
NewName: TMenuItem;
NewDir: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
mOperate: TMenuItem;
M1: TMenuItem;
D1: TMenuItem;
I1: TMenuItem;
N19: TMenuItem;
A1: TMenuItem;
sToolBar: TMenuItem;
sStatus: TMenuItem;
N20: TMenuItem;
B1: TMenuItem;
N21: TMenuItem;
R1: TMenuItem;
N22: TMenuItem;
E1: TMenuItem;
O1: TMenuItem;
H1: TMenuItem;
N23: TMenuItem;
A2: TMenuItem;
D2: TMenuItem;
UndelBtn: TToolButton;
U1: TMenuItem;
N24: TMenuItem;
E2: TMenuItem;
N25: TMenuItem;
S1: TMenuItem;
PopupMenu1: TPopupMenu;
N26: TMenuItem;
N27: TMenuItem;
N28: TMenuItem;
N29: TMenuItem;
N30: TMenuItem;
N31: TMenuItem;
N32: TMenuItem;
N33: TMenuItem;
N34: TMenuItem;
N35: TMenuItem;
N36: TMenuItem;
N37: TMenuItem;
N38: TMenuItem;
E3: TMenuItem;
LargeImage: TImageList;
SmallImage: TImageList;
ListView: TListView;
N39: TMenuItem;
N40: TMenuItem;
N41: TMenuItem;
N42: TMenuItem;
N43: TMenuItem;
ToolButton1: TToolButton;
LookforBtn: TToolButton;
H2: TMenuItem;
MainMenu2: TMainMenu;
iLookfor: TMenuItem;
G3: TMenuItem;
G2: TMenuItem;
G1: TMenuItem;
G0: TMenuItem;
Timer1: TTimer;
F1: TMenuItem;
procedure sToolBarClick(Sender: TObject);
procedure sStatusClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure NewBtnClick(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure OptionBtnClick(Sender: TObject);
procedure DelBtnClick(Sender: TObject);
procedure UndelBtnClick(Sender: TObject);
procedure D1Click(Sender: TObject);
procedure M1Click(Sender: TObject);
procedure ListGridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure N13Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure E2Click(Sender: TObject);
procedure NewDirClick(Sender: TObject);
procedure S1Click(Sender: TObject);
procedure N22Click(Sender: TObject);
procedure InputEditKeyPress(Sender: TObject; var Key: Char);
procedure SearchBtnClick(Sender: TObject);
procedure N40Click(Sender: TObject);
procedure ListViewDblClick(Sender: TObject);
procedure ListViewKeyPress(Sender: TObject; var Key: Char);
procedure R1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure H2Click(Sender: TObject);
procedure A1Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure F1Click(Sender: TObject);
private
{ Private declarations }
UndoSeek:Integer;
SortIndex,SortStyle:Byte;
CanPaste:Boolean;
procedure DisplayHint(Sender:TObject);
procedure SortUser;
procedure SearchUser;
public
{ Public declarations }
procedure ListViewLoadData(IsModify:Boolean;Index:Integer);
procedure SetListViewColume;
end;
type
TMiss=record
Name:String[20];
PostCode:String[6];
// Bp:String[20];
MoveTel,HomeTel,Fax:String[15];
OfficeTel:String[19];
Company:String[50];
Address:String[100];
Birthday:String[10];
Email:String[50];
Web:String[100];
end;
const
NoteSize:Word=400;
FileFlag:Char='a';
CustomCount=10;
FileName:String[10]='Txl.dat';
StandardText:Array[0..10]of String=('姓名','生日','手机','宅电','办公','传真','公司','邮编','网页','电子邮件','地址');
var
MainForm: TMainForm;
NoteMess:TMiss;
MainFile,CfgFile,TotalUser:Integer;
Bitmap:TBitmap;
IsModify:Boolean;
CfgData,BtnWord,IsShowToolBar,IsShowStatus,FieldCount:Byte;
FieldShow:Array[0..10+CustomCount]of Byte;
FieldName:String[20];
Fields:Array of String[20];
TheList:TStringList;
FieldText:Array[0..CustomCount-1]of String[100];
implementation
uses Options, NewUser,SetMess,FindUser;
{$R *.DFM}
procedure TMainForm.DisplayHint(Sender:TObject);
begin
StatusBar.Panels[0].Text:=Application.Hint;
end;
procedure TMainForm.sToolBarClick(Sender: TObject);
begin
sToolBar.Checked:=not sToolBar.Checked;
ToolBar.Visible:=sToolBar.Checked;
IsShowToolBar:=(IsShowToolBar+1)mod 2;
end;
procedure TMainForm.sStatusClick(Sender: TObject);
begin
sStatus.Checked:=not sStatus.Checked;
StatusBar.Visible:=sStatus.Checked;
IsShowStatus:=(IsShowStatus+1)mod 2;
end;
procedure TMainForm.FormCreate(Sender: TObject);
var
Flags:Char;
IsTxlFile:Boolean;
i:Byte;
begin
TheList:=TStringList.Create;
TheList.Clear;
UndelBtn.Enabled:=False;
U1.Enabled:=False;
CanPaste:=False;
if FileExists('Config.dat') then
begin
CfgFile:=FileOpen('Config.dat',fmOpenReadWrite);
FileRead(CfgFile,CfgData,1);
FileRead(CfgFile,BtnWord,2);
FileRead(CfgFile,IsShowToolBar,1);
FileRead(CfgFile,IsShowStatus,1);
FileSeek(CfgFile,50,0);
FileRead(CfgFile,FieldCount,1);
SetLength(Fields,FieldCount);
for i:=1 to FieldCount do
begin
FileRead(CfgFile,FieldName,20);
Fields[i-1]:=FieldName;
end;
// for i:=0 to 11+CustomCount-1 do
// FieldShow[i]:=1;
FileSeek(CfgFile,900,0);
FileRead(CfgFile,FieldShow,11+CustomCount);
end
else
begin
CfgFile:=FileCreate('Config.dat');
CfgData:=0;
BtnWord:=0;
IsShowToolBar:=0;
IsShowStatus:=0;
FieldCount:=0;
FileSeek(CfgFile,50,0);
FileSeek(Cfgfile,FieldCount,0);
SetLength(Fields,FieldCount);
for i:=0 to 11+CustomCount-1 do
FieldShow[i]:=0;
end;
ListView.ViewStyle:=TViewStyle(CfgData);
Case CfgData of
0:N40.Checked:=True;
1:N41.Checked:=True;
2:N42.Checked:=True;
3:N43.Checked:=True;
end;
G0.Checked:=N40.Checked;
G1.Checked:=N41.Checked;
G2.Checked:=N42.Checked;
G3.Checked:=N43.Checked;
if BtnWord=0 then
ToolBar.ShowCaptions:=True
else ToolBar.ShowCaptions:=False;
if IsShowToolBar=0 then
begin
ToolBar.Visible:=True;
sToolBar.Checked:=True;
end
else begin
ToolBar.Visible:=False;
sToolBar.Checked:=False;
end;
if IsShowStatus=0 then
begin
StatusBar.Visible:=True;
sStatus.Checked:=True;
end
else begin
StatusBar.Visible:=False;
sStatus.Checked:=False;
end;
Application.OnHint:=DisplayHint;
IsModify:=False;
// Bitmap:=TBitmap.Create;
// Bitmap.Handle:=LoadBitmap(hInstance,'WARN');
{ ListGrid.Cells[0,0]:=' 姓名';
ListGrid.Cells[1,0]:=' 电子邮件';
ListGrid.Cells[2,0]:=' 办公电话';
ListGrid.Cells[3,0]:=' 家庭电话';
ListGrid.Cells[4,0]:=' 手机';}
IsTxlFile:=False;
if FileExists(FileName) then
begin
MainFile:=FileOpen(FileName,fmOpenReadWrite);
FileRead(MainFile,Flags,1);
if Ord(Flags)-40=Ord('a') then
begin
IsTxlFile:=True;
FileRead(MainFile,TotalUser,4);
// if TotalUser>1 then ListGrid.RowCount:=TotalUser+1;
SetListViewColume;
ListViewLoadData(False,0);
end;
end;
if not IsTxlFile then
begin
MainFile:=FileCreate(FileName);
Flags:=Chr(Ord('a')+40);
FileWrite(MainFile,Flags,1);
TotalUser:=0;
FileWrite(Mainfile,TotalUser,4);
end;
end;
procedure TMainForm.NewBtnClick(Sender: TObject);
var
i:Word;
begin
Application.CreateForm(TNewUserf, NewUserf);
with NewUserf do
begin
LoadMessages;
for i:=0 to ComponentCount-1 do
if Components[i] is TEdit then
TEdit(Components[i]).Text:='';
AddressEdit.Text:='';
ShowModal;
end;
end;
procedure TMainForm.N10Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TMainForm.OptionBtnClick(Sender: TObject);
begin
if ListView.Selected<>nil then
begin
FileSeek(MainFile,5+NoteSize*TheList.IndexOf(ListView.Selected.Caption),0);
FileRead(MainFile,NoteMess,NoteSize);
FileSeek(CfgFile,1000+1000*TheList.IndexOf(ListView.Selected.Caption),0);
FileRead(CfgFile,FieldText,1000);
Application.CreateForm(TNewUserf,NewUserf);
NewUserf.LoadMessages;
NewUserf.Caption:='联系人属性';
NewUserf.Button2.Visible:=False;
NewUserf.ShowModal;
end
else
MessageDlg('未选定联系人!',mtInformation,[mbOk],0);
end;
procedure TMainForm.DelBtnClick(Sender: TObject);
var
i:Integer;
CurNoteMess:TMiss;
begin
if ListView.Selected<>nil then
if MessageDlg('警告','您确实要删除联系人'''+ListView.Selected.Caption+'''的全部信息吗?',
mtWarning,[mbYes,mbNo],0,mbNo,nil)=3 then
begin
UndoSeek:=ListView.Selected.Index;
FileSeek(MainFile,5+NoteSize*(ListView.Selected.Index),0);
FileRead(MainFile,NoteMess,NoteSize);
for i:=ListView.Selected.Index+1 to TotalUser-1 do
begin
FileSeek(MainFile,5+NoteSize*i,0);
FileRead(MainFile,CurNoteMess,NoteSize);
FileSeek(MainFile,-2*NoteSize,1);
FileWrite(MainFile,CurNoteMess,NoteSize);
end;
Dec(TotalUser);
FileSeek(MainFile,1,0);
FileWrite(MainFile,TotalUser,4);
UndelBtn.Enabled:=True;
U1.Enabled:=True;
ListView.Items.Delete(ListView.Selected.Index);
{ for i:=ListGrid.Row+1 to ListGrid.RowCount-1 do
ListGrid.Rows[i-1]:=ListGrid.Rows[i];
if TotalUser=0 then
begin
DelBtn.Enabled:=False;
for i:=0 to ListGrid.ColCount-1 do
ListGrid.Rows[1].Strings[i]:='';
ListGrid.RowCount:=TotalUser+2;
end
else ListGrid.RowCount:=TotalUser+1; }
end;
end;
procedure TMainForm.UndelBtnClick(Sender: TObject);
var
i:Integer;
j:Byte;
CurNoteMess:TMiss;
CurItem:TListItem;
begin
for i:=TotalUser-1 Downto UndoSeek do
begin
FileSeek(MainFile,5+NoteSize*i,0);
FileRead(MainFile,CurNoteMess,NoteSize);
FileWrite(MainFile,CurNoteMess,NoteSize);
end;
FileSeek(MainFile,UndoSeek*NoteSize+5,0);
FileWrite(MainFile,NoteMess,NoteSize);
Inc(TotalUser);
FileSeek(MainFile,1,0);
FileWrite(MainFile,TotalUser,4);
{ for i:=0 to ListGrid.ColCount-1 do
ListGrid.Cols[i].Insert(UndoSeek+1,' ');}
// ListGrid.RowCount:=TotalUser+1;
// for i:=TotalUser downto UndoSeek+1 do
// ListGrid.Rows[i]:=ListGrid.Rows[i-1];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -