51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4961|回复: 10
打印 上一主题 下一主题

如何从cb的第三方控件Tmemo中获取字符串(或文本内容)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-7-10 19:16:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
获取tmemo这个控件中的内容我一直都没有搞定,通过了不同的方式
obj_get_text();
obj_get_info();
。。。。

见插图,灰色部分“资料校验:该号码不存在或者已被占用”,和窗体下面的白色部分的内容都是在tmemo控件中
请问这种控件该如何获取
或者有没有其他方式获取里面的值?
麻烦各位高人给个解答,不胜感谢!

插图见附件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2007-7-11 09:28:54 | 只看该作者
自己顶下先,怎么没人来回答呢?
这个问题对高手来说很难么?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-7-11 11:44:14 | 只看该作者
lz先用gui spy查看一下这个弹出框的属性,感觉应该是win_get_text之类的函数可以
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-7-11 14:46:41 | 只看该作者
{
class: object,
MSW_class: TMemo,
location: 0
}

昨天忘说了,是obj对象,靠win_get_text是取不出来的
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-7-12 12:31:33 | 只看该作者
估计是取不出来了
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2007-7-12 19:54:29 | 只看该作者
肯定有办法的,如果这些字符串都取不出来,mi顺带着hp一起公司关掉算了!
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-7-14 00:56:12 | 只看该作者
小研究了下,自己写了个函数,通过把字符串读入记事本,把问题搞定了
1.定义一个test:a,目录 "D:\\wr\\a",
2.a中新增gui文件 a.gui,被learn的对象有"系统通知","记事本"的窗体
3.定义函数 tmemo_get_text(out text,guiFile),函数如下:

public function tmemo_get_text(out text,guiFile){

        GUI_close_all();
        GUI_load("D:\\wr\\a\\a.gui"); #Load the GUI file
       
        if(win_exists("系统通知")==E_OK){
                if(obj_exists("TMemo_1")==E_OK){
                        win_activate("系统通知");
                        set_window("系统通知");                       
                        obj_type ("TMemo_1","<kDown_E><kDown_E><kHome_E><kS_End_E><kCtrl_L-c>"); #仅需获取最后一行内容
                       
                        invoke_application("notepad.exe","","C:\\WINDOWS\\system32\\",SW_SHOW);
                        win_activate ("无标题 - 记事本");
                        set_window ("无标题 - 记事本", 1);
                        obj_type ("Edit","<kCtrl_L-v>");
                        edit_get_text("Edit",text);
                        obj_type ("Edit","<kCtrl_L-z><kAlt_L-kF4>");
                       
                        win_activate("系统通知");
                        set_window("系统通知");               
                }
                else{
                        text="There's no such control named Tmemo_1 !";
                        report_msg(text);
                }
        }
       
        else{
                text="There's no such window which you need !";
                report_msg(text);
        }
       
        GUI_close_all();
        GUI_load(guiFile);
};

在b 的test中调用:
GUI_close_all();
GUI_file=getvar("testname")&"\\b.gui";
GUI_load(GUI_file);

call "d:\\wr\\a"();
win_activate("系统通知");
set_window("系统通知");       

tmemo_get_text(text,GUI_file);
report_msg(text);       

从而获取了tmemo中的字符串,欢迎各位高手帮忙改进函数实现方式,小弟是新手,目前只会用这种比较老土的方法
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-7-14 15:39:45 | 只看该作者
obj_type ("TMemo_1","<kDown_E><kDown_E><kHome_E><kS_End_E><kCtrl_L-c>"); #仅需获取最后一行内容
这一行前面部分的键盘操作是什么意思?后面是一个复制的快捷键
另:强烈支持lz的这种自我解决问题的方法,自己编写函数以适应产品特性,加精!
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2007-7-14 20:45:25 | 只看该作者
哈哈哈,难得发一篇帖子就拿了精华,激动ing!感谢版主!
obj_type ("TMemo_1","<kDown_E><kDown_E><kHome_E><kS_End_E><kCtrl_L-c>");
这一行代码主要是针对我们自己的产品设计的,就我们的产品中,TMemo_1内部的提示信息有且只有3行
<kDown_E><kDown_E>表示将光标定位到TMemo_1上时候,将光标再往下移动2行,以保证取到的值肯定是最后一行
<kHome_E>表示将光标定位到行首home键,<kS_End_E>就是shift+end键,这两个键组合就是把这一行内容全部取到,最后复制下就ok了!
hoho,再次感谢版主,我想以后会有更多的精华贴出现的sdlkfj5
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-7-16 09:14:48 | 只看该作者
学习了。。。。佩服
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-7-16 11:23:30 | 只看该作者
想法挺新颖,不错
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-23 13:45 , Processed in 0.082639 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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