📄 unit3.pas
字号:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm3 = class(TForm)
TreeView1: TTreeView;
GroupBox1: TGroupBox;
add: TButton;
delete: TButton;
Button3: TButton;
Memo3: TMemo;
Memo2: TMemo;
Memo1: TMemo;
procedure addClick(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure deleteClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit4;
{$R *.dfm}
procedure TForm3.addClick(Sender: TObject);
var
f:file; //文件类型变量
rt:integer; //模式对话框返回值
nr:integer; //一次读文件字节数
s1,s2,s3:string[30];
node,node1,node2,node3:TTreeNode; //树节点
s:string[30];
begin
form4:=Tform4.Create(self); //创建添加用户对话框
rt:=form4.ShowModal; //以模式对话框形式显示
if rt=mrOk then
begin
treeView1.Items.Clear;
node:=treeView1.Items.Add(node,'用户名'); //添加根结点
node1:=treeview1.Items.AddChild(node,'管理员');
node2:=treeview1.Items.AddChild(node,'操作员');
node3:=treeview1.Items.AddChild(node,'访问者');
assignFile(f,'sys.ini');
reSet(f,1);
repeat //从配置文件中读用户信息
blockRead(f,s1,12,nr);
blockRead(f,s2,12,nr);
blockRead(f,s3,24,nr);
if nr>0 then
begin
if s3='管理员' then
treeView1.Items.AddChildFirst(node1,s1)//将读得得用户名加入树中显示
else if s3='操作员' then
treeView1.Items.AddChildFirst(node2,s1)
else if s3='访问者' then
treeView1.Items.AddChildFirst(node3,s1)
end;
until (nr=0);
closeFile(f);
treeView1.Select(node); //选中树的根结点
{权限说明不可见}
Memo1.Visible:=false;
Memo2.Visible:=false;
Memo3.Visible:=false;
end;
form3.close;
end;
procedure TForm3.Button3Click(Sender: TObject);
begin
close;
end;
procedure TForm3.FormCreate(Sender: TObject);
var
f:file;
nr:integer;
s1,s2,s3:string[30];
node,node1,node2,node3:TTreeNode; //声明一个树节点类型变量
s:string[30];
begin
node:=treeView1.Items.getfirstnode; //得到树的根节点
assignFile(f,'sys.ini'); //关联用户配置文件
reSet(f,1); //打开文件
repeat
blockRead(f,s1,12,nr);
blockRead(f,s2,12,nr);
blockRead(f,s3,24,nr);
if nr>0 then
treeview1.Items.AddChildFirst(node,s1);//在根节点下添加子结点
until (nr=0);
closeFile(f);
treeView1.Select(node); //选中根结点
{权限说明不显示}
Memo1.Visible:=false;
Memo2.Visible:=false;
Memo3.Visible:=false;
end;
procedure TForm3.deleteClick(Sender: TObject);
var
f,tmp:file;
s:string[60];
s1,s2,s3:string[60];
i:integer;
rt,nr:integer;
begin
i:=treeView1.Selected.AbsoluteIndex;
if i=0 then
exit;
s:=treeView1.Items.Item[i].Text; //获得树中选中节点所代表的用户名
{询问操作者是否一定要删除用户}
rt:=MessageDlg('一定要删除用户'+s+'?',mtWarning,[mbYes,mbNo],0);
if rt=mrNo then
exit;
assignFile(f,'sys.ini'); //关联用户配置文件
assignFile(tmp,'tmp.tmp'); //关联临时文件
{把配置文件中除所用户外的记录拷贝到临时文件中}
reSet(f,1);
reWrite(tmp,1);
while not eof(f) do
begin
blockRead(f,s1,12,nr);
blockRead(f,s2,12,nr);
blockRead(f,s3,24,nr);
if (s1<>s)and(nr>0)then
begin
blockWrite(tmp,s1,12,nr);
blockWrite(tmp,s2,12,nr);
blockWrite(tmp,s3,24,nr);
end;
end;
closeFile(f);
closeFile(tmp);
{将临时文件的内容覆盖用户配置文件}
reSet(tmp,1);
reWrite(f,1);
while not eof(tmp) do
begin
blockRead(tmp,s1,12,nr);
blockWrite(f,s1,12,nr);
blockRead(tmp,s2,12,nr);
blockWrite(f,s2,12,nr);
blockRead(tmp,s3,24,nr);
blockWrite(f,s3,24,nr);
end;
closeFile(f);
closeFile(tmp);
treeView1.Selected.Delete;
form3.Close; //删除树中选中的节点
end;
procedure TForm3.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
f:file;
s,s1,s2,s3:string[30];
i:integer;
nr:integer;
begin
i:=treeView1.Selected.AbsoluteIndex;
s:=treeView1.Items.Item[i].Text; //获得所选用户名
assignFile(f,'sys.ini'); //关联配置文件
reSet(f,1); //打开文件
while not eof(f) do
begin
blockRead(f,s1,12,nr);
blockRead(f,s2,12,nr);
blockRead(f,s3,24,nr);
if s=s1 then //在文件中找到匹配的用户名
begin
if s3='管理员' then //所选用户名是管理权限
begin
Memo3.Visible:=true;
Memo2.Visible:=false;
Memo1.Visible:=false;
end
else if s3='操作员' then //所选用户名是操作权限
begin
Memo3.Visible:=false;
Memo2.Visible:=true;
Memo1.Visible:=false;
end
else if s3='访问者' then //所选用户名是访问者权限
begin
Memo3.Visible:=false;
Memo2.Visible:=false;
Memo1.Visible:=true;
end;
closeFile(f);
exit;
end
else //选择的是根节点
begin
Memo1.Visible:=false;
Memo2.Visible:=false;
Memo3.Visible:=false;
end;
end;
closeFile(f);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -