鱼C论坛

 找回密码
 立即注册
查看: 2221|回复: 3

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

[复制链接]
发表于 2020-7-21 09:48:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您好,各位大爷:

请问怎么实现这两个功能:TreeView里面有3个节点,旁边有4个Edit组件,分别点击TreeView的3个节点,4个Edit组件会显示点击这个节点的汉字名称(如,点击第一个节点,第一个节点是5mm银色钢板锻造,旁边的4Edit组件就会显示:5mm,银色,钢板,锻造)
第二个功能,如改变第二个节点4Edit组件里的内容,TreeVieW第二个节点的内容也会改变,谢谢各位指教!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[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.

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-8-4 00:02:22 | 显示全部楼层
如果想添加Treeview的节点,还要多写些code
但是以上内容已经解决你所说的问题了

以上代码均用Delphi写出,执行过没问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-6 15:59:21 | 显示全部楼层
好的,谢谢,你辛苦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 23:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表