终于解决了TTreeView中Node更换图片的问题(Delphi)

2023-10-03 23:10

本文主要是介绍终于解决了TTreeView中Node更换图片的问题(Delphi),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Delphi的环境真的是有些难用。
TTreeView控件显示节点图片的时候,各种情况处理的方法不一致,如果点击节点,其有下级节点的时候,很好处理,就只需要在其OnExpended事件和OnCollapsed事件中,判断当前Node的ImageIndex然后进行更改处理就OK了,但是有一点,在加载树型菜单的时候,一定要给每个节点设置初始的节点图片,如:
    Node.ImageIndex := 1;
    Node.SelectedIndex := 1;
然后在OnExpended事件和OnCollapsed事件中进行处理,如:
  //设置节点图标状态
  if Node.ImageIndex = 1 then
  begin
    Node.ImageIndex := 0;
    Node.SelectedIndex := 0;
  end;
在此自己随意判断处理就OK了。

但是如果TTreeView控件没有展开节点,当然也就没有收缩了,每个节点都是根节点。那么以上两个事件就不起作用了。就只能是在OnClick事件中进行图片的更换问题,可是在Click事件中写好代码之后,问题又出现了,在点击节点时,第一次不会改变图片,当第二次点击的时候,才会改变状态,好像每个节点要激活一样。
想了想,可能是因为节点还不知道另一种图片的状态,然后就在树型菜单加载的时候,把所有的图片都给节点设置了一次,最后设置成初始图片,误打误撞的,问题就这样解决了,害得我调了半天!!!
我在加载树型菜单时这样写:
        //设置树型菜单目录图标
        ATreeNode.ImageIndex := 1;
        ATreeNode.SelectedIndex := 1;
        ATreeNode.ImageIndex := 0;
        ATreeNode.SelectedIndex := 0;
总之,把节点有的状态都加载了一遍,最后设置成初始状态。
在Click事件中这样写:
    CurTreeNode := tvTest.Selected;   
    if CurTreeNode <> OldTreeNode then//判断当前节点是否是前一节点
    begin
      OldTreeNode.ImageIndex := 0;
      OldTreeNode.SelectedIndex := 0; //设置前一选中节点图片 

      CurTreeNode.ImageIndex := 1;
      CurTreeNode.SelectedIndex := 1; //设置当前选中节点图片

      OldTreeNode := CurTreeNode;//将当前节点设置成前一节点
    end;
这样点击就正常了。

这篇关于终于解决了TTreeView中Node更换图片的问题(Delphi)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/867

相关文章

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

Redis 热 key 和大 key 问题小结

《Redis热key和大key问题小结》:本文主要介绍Redis热key和大key问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、什么是 Redis 热 key?热 key(Hot Key)定义: 热 key 常见表现:热 key 的风险:二、

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基