kaituozhe 发表于 2020-7-21 09:48:06

TreeView里面有3个节点,旁边有4个Edit组件,要实现互访功能

您好,各位大爷:

请问怎么实现这两个功能:TreeView里面有3个节点,旁边有4个Edit组件,分别点击TreeView的3个节点,4个Edit组件会显示点击这个节点的汉字名称(如,点击第一个节点,第一个节点是5mm银色钢板锻造,旁边的4Edit组件就会显示:5mm,银色,钢板,锻造)
第二个功能,如改变第二个节点4Edit组件里的内容,TreeVieW第二个节点的内容也会改变,谢谢各位指教!

kaixin9611 发表于 2020-8-4 00:00:06

本帖最后由 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.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.Text := a; //向选中的Treeview1的节点写入内容,必须是选中的,没选中就没反应
    end;
end;
end;

end.

kaixin9611 发表于 2020-8-4 00:02:22

如果想添加Treeview的节点,还要多写些code
但是以上内容已经解决你所说的问题了

以上代码均用Delphi写出,执行过没问题

kaituozhe 发表于 2020-8-6 15:59:21

好的,谢谢,你辛苦!
页: [1]
查看完整版本: TreeView里面有3个节点,旁边有4个Edit组件,要实现互访功能