CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

怎样把字符串转换成对象??请高手救命

楼主bJiao(乱搞)2001-12-14 11:12:55 在 VB / 基础类 提问

dim   str1,str2   as   string  
  str1="text1"  
  str2="setfocus"  
  callbyname   str1,str2,vbmethod  
  callbyname中str1是错误的,怎样才能把str1转换成对象让callbyname顺利调用 问题点数:29、回复次数:12Top

1 楼foolishtiger(冬蛩)回复于 2001-12-14 11:19:16 得分 10

Dim   str1   as   Object  
   
  set   str1=Text1Top

2 楼bJiao(乱搞)回复于 2001-12-14 11:28:07 得分 0

to   foolishtiger  
  这种方法不能解决问题,我得str1只能是string,是从其他字符串得到的,而callbyname调用的对象名是str1Top

3 楼foolishtiger(冬蛩)回复于 2001-12-14 11:41:51 得分 0

Dim   objTest   as   Object  
  Select   Case   str1  
  Case   "Text1"  
          Set   objTest=Text1  
  Case   "Text2"  
          Set   objTest=Text2  
  Case   Else  
          Set   objTest=Nothing  
  End   Select  
   
  然后引用objTest进行操作.Top

4 楼yangzhaoyu(老妖)回复于 2001-12-14 11:56:49 得分 10

参考这个  
  Private   Sub   Command1_Click()  
          Dim   objTest   As   Object  
          Dim   strT1   As   String  
          Dim   strT2   As   String  
          strT1   =   Text1.Text  
          strT2   =   Time  
          For   Each   objTest   In   Form1  
                  If   objTest.Name   =   strT1   Then  
                          w   ByVal   objTest,   strT2  
                          Exit   For  
                  End   If  
          Next  
  End   Sub  
  Private   Function   w(ByVal   l   As   Object,   l2   As   String)  
          l.Caption   =   l2  
  End   Function  
   
  Top

5 楼bJiao(乱搞)回复于 2001-12-14 12:15:32 得分 0

to   foolishtiger  
  case语句有多少分支是不知道的,所以这样也不能解决问题Top

6 楼foolishtiger(冬蛩)回复于 2001-12-14 12:21:30 得分 0

其实这个困难是由你的callbyname过程造成的.  
   
  你应该把精力花在怎么样把callbyname改得更合理.不要在这些牛角尖上浪费时间.Top

7 楼bJiao(乱搞)回复于 2001-12-14 12:26:10 得分 0

callbyname是微软的过程,如果能改的话就好了Top

8 楼yuminggang(独行侠)回复于 2001-12-14 12:36:03 得分 9

你甭找了,没有解决的办法。  
   
  不过yangzhaoyu(老妖) 的方法是可以的,我就是这么实现一个通用的增删改程序的。  
  不过最好把对象的名称,写到数据库里。Top

9 楼foolishtiger(冬蛩)回复于 2001-12-14 12:59:00 得分 0

完全可以避开用CallByName的.Top

10 楼bJiao(乱搞)回复于 2001-12-14 17:36:39 得分 0

我的问题和于明刚是一样,就是从数据库里取出对象的名称的,但取出时是STRING类型,所以就碰到怎样转换成对象的问题了。  
  于明刚能说得详细点吗?老妖的程序一时没有看懂Top

11 楼bJiao(乱搞)回复于 2001-12-14 17:39:33 得分 0

给大家发分了Top

12 楼yuminggang(独行侠)回复于 2001-12-17 13:15:08 得分 0

你可以这样做,把控件的名称写在一个表里,还有这个控件对应的方法(如果有必要的话)。  
  举个例子:比如说你有一个FORM,FORM里有一个控件名称是A,A有一个属性是TEXT,现在你要通过数据库里的记录和通用的程序给这个控件赋值。  
   
  那么,首先从数据库里按一定条件取出一条记录,得知控件的名称和属性,那么可以在此FORM里用FOR   EACH,来循环所有控件,用FORM里的每个控件的名称和数据库里取出的控件名称进行比较。如果相同那么使用CALLBYNAME,通过数据库里取出的控件名称和属性/方法,进行取值/赋值/调用方法的操作。  
   
  我个人体会是进行方法的调用是比较实际而可用的,进行通用增删改也是一种比较好的方法。  
  Top

相关问题

  • 怎样把一个字符串转换成一个对象名!
  • 请问怎样将字符串“20050102”转换成Date对象
  • 字符串变量怎样转换成对象变量,在线等待
  • 怎样将长字符串转换为包含"..."的字符串?
  • 怎样把字符串转换成ID?
  • 怎样将char* 指向的字符串转换成 wchar* 字符串?
  • 字符串转换
  • 字符串转换
  • 字符串转换
  • 请问怎么把字符串转换成时间对象

关键词

  • 控件
  • 数据库
  • 转换
  • 属性
  • 解决
  • objtest
  • callbyname
  • strt
  • 对象
  • 调用

得分解答快速导航

  • 帖主:bJiao
  • foolishtiger
  • yangzhaoyu
  • yuminggang

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo