本帖最后由 kaixin9611 于 2020-8-4 00:13 编辑
利用ini配置文件进行储存的基础上实现Treeview和Edit互访功能
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
Vcl.ComCtrls, Vcl.StdCtrls, System.IniFiles, System.StrUtils;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure TreeWrite();//Treeview1节点写入
procedure TreeRead();//Treeview1节点读入
procedure Button1Click(Sender: TObject);//这个按钮是用来修改Edit后更新Treeview1内容的
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
TreeWrite();
TreeRead();
end;
procedure TForm1.FormCreate(Sender: TObject);
var
ini: TIniFile;
I: Integer;
a: string;
begin
//创建ini文件,初始化ini
ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + '\Config.ini');
//判断ini文件是否存在,如果不存在就写入ini文件内容
if FileExists(ExtractFilePath(ParamStr(0)) + '\Config.ini') = False then
begin
ini.WriteString('P0', 'Edit1', '5mm');
ini.WriteString('P0', 'Edit2', '银色');
ini.WriteString('P0', 'Edit3', '钢板');
ini.WriteString('P0', 'Edit4', '锻造');
end;
//计次循环读出ini文件的内容
for I := 1 to 4 do
begin
a := a + ini.ReadString('P0', 'Edit' + IntToStr(I), '');
TEdit(FindComponent('Edit' + IntToStr(I))).Text := ini.ReadString('P0', 'Edit' + IntToStr(I), ''); //这句比较有意思,根据Edit名字寻找Edit控件组,并批量赋值
end;
TreeView1.Items.AddChild(nil, a); //程序第一次读出并写入Treeview1节点内容
TreeView1.Items.Item[0].Selected := True; //选中Treeview1第一个节点
end;
procedure TForm1.TreeWrite();
var
ini: TIniFile;
I: Integer;
begin
//创建ini文件,初始化ini
ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + '\Config.ini');
//判断ini文件是否存在,如果存在就写入ini文件内容
if FileExists(ExtractFilePath(ParamStr(0)) + '\Config.ini') = True then
begin
//计次循环写入到ini文件内容
for I := 1 to 4 do
begin
ini.WriteString('P0', 'Edit' + IntToStr(I), TEdit(FindComponent('Edit' + IntToStr(I))).Text);
end;
end;
end;
procedure TForm1.TreeRead();
var
ini: TIniFile;
I: Integer;
a: string;
begin
ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + '\Config.ini');
if FileExists(ExtractFilePath(ParamStr(0)) + '\Config.ini') = True then
begin
//如果选中的话,-1就是不选中
if TreeView1.Selected.Index <> -1 then
begin
//计次循环读取ini文件节点内容
for I := 1 to 4 do
begin
a := a + ini.ReadString('P0', 'Edit' + IntToStr(I), ''); //把内容依次读入局部变量a
TEdit(FindComponent('Edit' + IntToStr(I))).Text := ini.ReadString('P0', 'Edit' + IntToStr(I), '');
end;
TreeView1.Items.Item[TreeView1.Selected.Index].Text := a; //向选中的Treeview1的节点写入内容,必须是选中的,没选中就没反应
end;
end;
end;
end.
|