📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ExtCtrls, ToolWin, ImgList, Buttons, Spin, StdCtrls, Menus;
type
Address=record
Name:string[10];
Sex: String[4];
Duty:string[10];
Age: Word;
State:String[6];
end;
TForm1 = class(TForm)
ListView1: TListView;
TreeView1: TTreeView;
Splitter1: TSplitter;
StatusBar1: TStatusBar;
ImageList1: TImageList;
AddPanel: TPanel;
Label1: TLabel;
NameEdit: TEdit;
Label2: TLabel;
SexRG: TRadioGroup;
Label3: TLabel;
DutyCB: TComboBox;
Label4: TLabel;
AgeSE: TSpinEdit;
AddOk: TSpeedButton;
Cancel: TSpeedButton;
Label9: TLabel;
StateCB: TComboBox;
PopupMenu1: TPopupMenu;
AddMenu: TMenuItem;
ModMenu: TMenuItem;
DelMenu: TMenuItem;
ExitMenu: TMenuItem;
TitlePanel: TPanel;
ModOk: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure AddOkClick(Sender: TObject);
procedure CancelClick(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
procedure ModOkClick(Sender: TObject);
procedure AddMenuClick(Sender: TObject);
procedure ModMenuClick(Sender: TObject);
procedure DelMenuClick(Sender: TObject);
procedure ExitMenuClick(Sender: TObject);
private
{ Private declarations }
procedure LoadRecord;
procedure ListViewAll;
procedure AddToTree(a:Address);
procedure ListViewPart(S:string);
procedure UpdateTree;
procedure MenuChoice(AddM,ModM,DelM:boolean);
public
{ Public declarations }
end;
var
Form1: TForm1;
AddrFile: File of Address;
AddreData,AddreData0:Address;
FName:string;
CurRec:Longint;
implementation
{$R *.DFM}
var
Node:array[0..7] of TTreeNode;
Const
Per:array[0..7] of string=
('行政人员','教师','初一','初二','初三','高一','高二','高三');
procedure TForm1.FormCreate(Sender: TObject);
begin
TitlePanel.Caption:='今天是 ' + DateToStr(Date);
UpdateTree;
end;
procedure TForm1.UpdateTree;
var
i:byte;
Node0,Node1:TTreeNode;
begin
TreeView1.Items.Clear;
Node0:=TreeView1.Items.AddFirst(nil,'青岛一中人员信息库');
Node0.ImageIndex:=0;
Node0.SelectedIndex:=0;
for i:=0 to 7 do
begin
Node1:=TreeView1.Items.AddChild(Node0,Per[i]);
Node1.ImageIndex:=1;
Node1.SelectedIndex:=1;
end;
LoadRecord;
end;
procedure TForm1.AddOkClick(Sender: TObject);
begin
Reset(AddrFile);
repeat
CurRec:=CurRec+1;
Seek(AddrFile,CurRec);
until Eof(AddrFile);
with AddreData do
begin
Name:=NameEdit.Text;
Duty:=DutyCB.Text;
if SexRG.ItemIndex=0 then Sex:='男' else Sex:='女';
Age:=AgeSE.Value;
State:=StateCB.Text;
end;
Write(AddrFile,AddreData);
AddToTree(AddreData);
CloseFile(AddrFile);
AddPanel.Visible:=false;
end;
procedure TForm1.CancelClick(Sender: TObject);
begin
AddPanel.Visible:=false;
end;
procedure TForm1.TreeView1Click(Sender: TObject);
var
mNode:TTreeNode;
begin
if TreeView1.Selected<>nil then mNode:=TreeView1.Selected
else exit;
if mNode.ImageIndex=0 then
begin
ListViewAll;
MenuChoice(false,false,false);
end else if mNode.ImageIndex=1 then
begin
ListViewPart(mNode.Text);
MenuChoice(true,false,false);
end else if mNode.ImageIndex=2 then
MenuChoice(false,true,true);
end;
procedure TForm1.LoadRecord;
begin
CurRec:=0;
FName:='AddRess.dat';
AssignFile(AddrFile,FName);
if FileExists(FName) then
begin
Reset(AddrFile);
while not Eof(AddrFile) do
begin
Read(AddrFile,AddreData);
AddToTree(AddreData);
end;
end else
Rewrite(AddrFile);
CloseFile(AddrFile);
end;
procedure TForm1.AddToTree(a:Address);
var
mNode:TTreeNode;
i:byte;
begin
for i:=0 to 7 do
if a.Duty=TreeView1.Items[i].Text then
begin
mNode:=TreeView1.Items.AddChild(TreeView1.Items[i],a.Name);
mNode.ImageIndex:=2;
mNode.SelectedIndex:=2;
break;
end;
end;
procedure TForm1.ListViewPart(S:string);
var
mItem:TListItem;
begin
Reset(AddrFile);
ListView1.Items.Clear;
Seek(AddrFile,0);
while not Eof(AddrFile) do
begin
Read(AddrFile,AddreData);
if AddreData.Duty=S then
begin
mItem:=ListView1.Items.Add();
mItem.Caption:=AddreData.Name;
mItem.SubItems.Add(AddreData.Sex);
mItem.SubItems.Add(AddreData.Duty);
mItem.SubItems.Add(IntToStr(AddreData.Age));
mItem.SubItems.Add(AddreData.State);
end;
end;
CloseFile(AddrFile);
end;
procedure TForm1.ListViewAll;
var
mItem:TListItem;
begin
Reset(AddrFile);
ListView1.Items.Clear;
Seek(AddrFile,1);
while not Eof(AddrFile) do
begin
Read(AddrFile,AddreData);
mItem:=ListView1.Items.Add();
mItem.Caption:=AddreData.Name;
mItem.SubItems.Add(AddreData.Sex);
mItem.SubItems.Add(AddreData.Duty);
mItem.SubItems.Add(IntToStr(AddreData.Age));
mItem.SubItems.Add(AddreData.State);
end;
CloseFile(AddrFile);
end;
procedure TForm1.ModMenuClick(Sender: TObject);
begin
if TreeView1.Selected=nil then exit;
AddPanel.Visible:=true;
Reset(AddrFile);
CurRec:=0;
//定位到需要修改的记录
repeat
Read(AddrFile,AddreData);
CurRec:=CurRec+1;
if AddreData.Name=TreeView1.Selected.Text then
break;
until Eof(AddrFile);
NameEdit.Text:=AddreData.Name;
DutyCB.text:=AddreData.Duty;
if AddreData.Sex='男' then SexRG.ItemIndex:=0
else SexRG.ItemIndex:=1;
AgeSE.Value:=AddreData.Age;
StateCB.Text:=AddreData.State;
AddOk.Enabled:=false;
ModOk.Enabled:=true;
end;
procedure TForm1.ModOkClick(Sender: TObject);
begin
with AddreData do
begin
Name:=NameEdit.Text;
Duty:=DutyCB.text;
if SexRG.ItemIndex=0 then Sex:='男'
else Sex:='女';
Age:=AgeSE.Value;
State:=StateCB.Text;
end;
Seek(AddrFile,CurRec-1);
Write(AddrFile,AddreData);
CloseFile(AddrFile);
UpdateTree;
AddPanel.Visible:=false;
end;
procedure TForm1.MenuChoice(AddM,ModM,DelM:boolean);
begin
AddMenu.Enabled:=AddM;
ModMenu.Enabled:=ModM;
DelMenu.Enabled:=DelM;
end;
procedure TForm1.AddMenuClick(Sender: TObject);
begin
AddPanel.Visible:=true;
NameEdit.Text:='';
DutyCB.Text:=TreeView1.Selected.Text ;
SexRG.ItemIndex:=0;
AgeSE.Value:=20;
StateCB.Text:='';
AddOk.Enabled:=true;
ModOk.Enabled:=false;
end;
procedure TForm1.DelMenuClick(Sender: TObject);
var
TempFile:File of Address;
begin
if TreeView1.Selected=nil then exit;
AssignFile(TempFile,'Temp.dat');
Rewrite(TempFile);
Reset(AddrFile);
while not Eof(AddrFile) do
begin
Read(AddrFile,AddreData);
if AddreData.Name<>TreeView1.Selected.Text then
Write(TempFile,AddreData);
end;
CloseFile(AddrFile);
CloseFile(TempFile);
DeleteFile('AddRess.dat');
ReNameFile('Temp.dat','AddRess.dat');
TreeView1.Selected.Delete;
UpdateTree;
end;
procedure TForm1.ExitMenuClick(Sender: TObject);
begin
Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -