⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 很好地delphi书籍源码
💻 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 + -