您的位置:程序门 -> .net技术 -> c#



〓在线等回复〓★★如何获得tpanel控件的子控件★★


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


〓在线等回复〓★★如何获得tpanel控件的子控件★★[已结贴,结贴人:julyseawind]
发表于:2007-03-19 23:07:20 楼主


情况是这样的:
程序a(不是我编写的)里面有个tpanel控件。
这个tpanel控件里面有一些静态文本信息供显示用
我想在vc   6.0   下用sdk函数将这些文本信息读取出来
可我用spy++发现这个tpanel控件窗口下面没有任何子窗体
这是怎么回事?是不是因为tpanel控件是delphi
或者c++   builder编写的缘故呢?

如果是的话,那该怎么办?

恳请高手指点!感激不尽
发表于:2007-03-19 23:11:031楼 得分:0
另外,如果这个tpanel控件其实跟panel一样,本来就看不到子控件的话
那应该怎么办呢?
sendmessage函数没有用武之地阿!
发表于:2007-03-19 23:55:062楼 得分:0
foreach(control   ctl   in   this.tpanel.controls)
{
      if(ctl   .gettype()   ==   typeof(textbox)){
            //这里做您想做的事
      }
}

在asp.net里面就提供了一个findcontrol的方法,用来查找子控件...
发表于:2007-03-20 00:34:533楼 得分:0
可以用api,enumchildwindows()遍历容器的子窗体
如果你要读取的是edit中的内容可以使用wm_gettext消息
但如要是要取得label中的内容就很麻烦...
因为label这类控件没有句柄,是容器paint的时候绘制上去的

踩一脚先
发表于:2007-03-20 00:53:404楼 得分:0
是要取得label中的内容。。。
enumchildwindows()可以遍历容器的子窗体,
但这个tpanel在spy++里面没有子窗体
老大,帮帮我啊
发表于:2007-03-20 14:08:045楼 得分:0
up
发表于:2007-03-20 14:34:546楼 得分:0
那个窗体就只是隐藏没有释放。
发表于:2007-03-20 14:40:037楼 得分:0
你可以确定一下哪个进程是哪个版本的vcl写的
然后用delphi同样的版本写一个带hook的dll可以得到
这个过程实现很麻烦

http://www.google.cn/search?complete=1&hl=zh-cn&newwindow=1&q=%e5%be%97%e5%88%b0%e5%85%b6%e4%bb%96%e8%bf%9b%e7%a8%8b+stringgrid&meta=

搜索“得到其他进程   stringgrid”关键字
参考写一个   -_-!!!
发表于:2007-03-20 16:07:118楼 得分:0
阿?这么麻烦啊
我在想,syslistview32   控件不也属于这种没有子控件的情况吗?
但却可以通过sendmessage(hwnd,   lvm_getitem,   (wparam)iitem,   pitem)
这种方法来得到某个列表项,难道panel就不行?
发表于:2007-03-20 17:28:219楼 得分:0
up
发表于:2007-03-20 20:16:0110楼 得分:0
up
发表于:2007-03-21 15:48:0411楼 得分:0
遍历控件
发表于:2007-03-23 13:24:4212楼 得分:0
to   :   zswang(伴水清清),
你说的:   搜索“得到其他进程   stringgrid”关键字   参考写一个   -_-!!!

我照做了,可还是得不到tlabel的caption.
这个语句容易出错:destlabel   :=   tlabel(destpanel.components[i]);
偶尔不出错,destlabel.caption   的值也为空。
是不是这个办法还是对付不了label这种组件?
发表于:2007-03-23 13:32:2213楼 得分:50
if   destpanel.components[i]   is   tlabel   then   //   读取之前先确定是否为tlabel类型
    destlabel   :=   destpanel.components[i];
发表于:2007-03-24 00:28:4014楼 得分:0
to   zswang(伴水清清)(专家门诊清洁工):
我判断了,可还是不能转化类型。
发表于:2007-03-24 00:31:2815楼 得分:0
今天看了这个帖子:

重新设置指定label内容:
http://blog.csdn.net/jzj_jony/archive/2006/07/04/876672.aspx

把里面的代码稍微修改了一下,终于如愿得到了tlabel的内容

感谢楼上回复的热心人
尤其是zswang(伴水清清)(专家门诊清洁工)

25分奉上,别嫌少哈
发表于:2007-03-24 00:33:3316楼 得分:0
把分都给你吧,再次感谢!


快速检索

最新资讯
热门点击