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

bJiao 2001-12-14 11:12:55
dim str1,str2 as string
str1="text1"
str2="setfocus"
callbyname str1,str2,vbmethod
callbyname中str1是错误的,怎样才能把str1转换成对象让callbyname顺利调用
...全文
217 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuminggang 2001-12-17
  • 打赏
  • 举报
回复
你可以这样做,把控件的名称写在一个表里,还有这个控件对应的方法(如果有必要的话)。
举个例子:比如说你有一个FORM,FORM里有一个控件名称是A,A有一个属性是TEXT,现在你要通过数据库里的记录和通用的程序给这个控件赋值。

那么,首先从数据库里按一定条件取出一条记录,得知控件的名称和属性,那么可以在此FORM里用FOR EACH,来循环所有控件,用FORM里的每个控件的名称和数据库里取出的控件名称进行比较。如果相同那么使用CALLBYNAME,通过数据库里取出的控件名称和属性/方法,进行取值/赋值/调用方法的操作。

我个人体会是进行方法的调用是比较实际而可用的,进行通用增删改也是一种比较好的方法。
foolishtiger 2001-12-14
  • 打赏
  • 举报
回复
完全可以避开用CallByName的.
yuminggang 2001-12-14
  • 打赏
  • 举报
回复
你甭找了,没有解决的办法。

不过yangzhaoyu(老妖) 的方法是可以的,我就是这么实现一个通用的增删改程序的。
不过最好把对象的名称,写到数据库里。
bJiao 2001-12-14
  • 打赏
  • 举报
回复
callbyname是微软的过程,如果能改的话就好了
foolishtiger 2001-12-14
  • 打赏
  • 举报
回复
其实这个困难是由你的callbyname过程造成的.

你应该把精力花在怎么样把callbyname改得更合理.不要在这些牛角尖上浪费时间.
bJiao 2001-12-14
  • 打赏
  • 举报
回复
to foolishtiger
case语句有多少分支是不知道的,所以这样也不能解决问题
yangzhaoyu 2001-12-14
  • 打赏
  • 举报
回复
参考这个
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

foolishtiger 2001-12-14
  • 打赏
  • 举报
回复
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进行操作.
bJiao 2001-12-14
  • 打赏
  • 举报
回复
to foolishtiger
这种方法不能解决问题,我得str1只能是string,是从其他字符串得到的,而callbyname调用的对象名是str1
foolishtiger 2001-12-14
  • 打赏
  • 举报
回复
Dim str1 as Object

set str1=Text1
bJiao 2001-12-14
  • 打赏
  • 举报
回复
给大家发分了
bJiao 2001-12-14
  • 打赏
  • 举报
回复
我的问题和于明刚是一样,就是从数据库里取出对象的名称的,但取出时是STRING类型,所以就碰到怎样转换成对象的问题了。
于明刚能说得详细点吗?老妖的程序一时没有看懂

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧