高手请进,问几个菜鸟级的问题

lgxysl 2003-08-22 11:28:16
高手请进,问几个菜鸟级的问题。
问题1:对于一个记录集recordset,如何得知它是多少列和多少行?
问题2:怎样设置textbox控件和combo控件,使得它们中的文本处于全选状态(即蓝底白字)?
问题3:对于一个combo控件,如何使它在获得焦点时自动展开选项?如何使它能够自动识别文本,如选项列表中有一项是“我是中国人”,在combo中只要键入“我”字,就自动展开跳到“我是中国人”处?这些功能在ACCESS2000中是很容易办到,但VB6却好似不支持。
...全文
32 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lingll 2003-08-26
  • 打赏
  • 举报
回复
问题3如果不要求展开cobom的下拉列表,其实是可以仅用vb的功能实现的,
大概想法如下
可以先将cobom list中的内容排序
在输入改变时,查找列表,找出前面部分与输入内容相同的字窜,
让cobom.text=该字窜
但让后面的部分处于被选择状态,

例如,输入的是 abcd
找到的是 abcdefg
那么让cobom.text="abcdefg", 并且,cobom.selstart=4,cobom.sellength=3
lingll 2003-08-26
  • 打赏
  • 举报
回复
3.
下面是不知哪里抄来的一段代码,好像比前面的精短,绝对运行通过

Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal
hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
As Long
Public Const CB_FINDSTRING = &H14C
Private Sub Combo1_Change()
Dim iStart As Integer
Dim sString As String
Static iLeftOff As Integer
iStart = 1
iStart = Combo1.SelStart
If iLeftOff <> 0 Then
Combo1.SelStart = iLeftOff
iStart = iLeftOff
End If
sString = CStr(Left(Combo1.Text, iStart))
Combo1.ListIndex = SendMessage(Combo1.hwnd,B_FINDSTRING, -1, ByVal CStr(
Left( ombo1.Text, iStart)))
 
If Combo1.ListIndex = -1 Then
iLeftOff = Len(sString)
combo1.Text = sString
End If
Combo1.SelStart = iStart
iLeftOff = 0
End Sub
静态变量 iLeftOff 指定了字符长度。


ACCESS2000可以做到而vb做不到,是因为两个工具面向的对象不同,
两个的级别似乎本来就不一样,一个是开发工具,一个是应用程序,
vb相对于access2000处于底层的位置,
不要老想着什么功能都由开发工具来实现,然后自己将这些功能组合起来就完事了,
许多东西是需要自己制作的,并且也确实可以自己完成,

可能曲解了楼主的意思,若是,在此抱歉,
以上的话,只是发发牢骚,因为经常看见一些帖子问,
什么什么功能该如何实现啊,有没有控件可以实现这些功能啊,
而,往往问题都不难解决,利用vb本来的功能即可,只要动脑

再次抱歉
lgxysl 2003-08-26
  • 打赏
  • 举报
回复
多谢!
原来是这么难的呀。
道素 2003-08-26
  • 打赏
  • 举报
回复
附加
Private Declare Function SendMessageLong Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const CB_GETEXTENDEDUI = &H156
Private Const CB_SETEXTENDEDUI = &H155
Public Property Let ComboExtendedUI( _
ByRef cboThis As ComboBox, ByVal bState As Boolean _
)
SendMessageLong cboThis.hwnd, CB_SETEXTENDEDUI, Abs(bState), 0
End Property
Public Property Get ComboExtendedUI( _
ByRef cboThis As ComboBox _
) As Boolean
ComboExtendedUI = (SendMessageLong(cboThis.hwnd, CB_GETEXTENDEDUI, 0, 0) <> 0)
End Property

Private Sub Check1_Click()
ComboExtendedUI(Combo1) = (Check1.Value = Checked)
End Sub

以上实现的功能是当combobox获得焦点后,按键盘的下箭头建自动下拉列表(VB默认不下拉)
道素 2003-08-26
  • 打赏
  • 举报
回复
气死我了,写了一堆没发成功,重写一遍
1。对于打开的记录的连接是默认的adUseServer (mconn.CursorLocation =adUseServer )
类型打开记录集时要用adOpenStatic或者adOpenKeyset
或者将mconn.CursorLocation =adUseServer 改成mconn.CursorLocation =adUseClient
那么用adOpenDynamic也可以,这时调用rs.RecordCount 就可以获得行数
2。可以象 cuizm(射天狼)的做法也可以发消息
3。用消息实现
Private Const CB_SHOWDROPDOWN = &H14F
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Long) As Long

Private Sub Combo1_KeyPress(KeyAscii As Integer)
SendMessage Combo1.hwnd, CB_SHOWDROPDOWN, 1, ByVal 0&
End Sub
自动下来

下面是自动完成功能

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) _
As Long

Private Const CB_FINDSTRING As Long = &H14C
Public Sub ComboAutoComplete(ByRef SourceCtl As VB.ComboBox, _
ByRef KeyAscii As Integer, ByRef LeftOffPos As Long)
Dim iStart As Long
Dim sSearchKey As String

With SourceCtl
'If text entered so far matches item(s) in the list, use autocomplete
Select Case Chr$(KeyAscii)
Case vbBack
'Let backspace characters process as usual; otherwise try to match text
Case Else
If Chr$(KeyAscii) <> vbBack Then
.SelText = Chr$(KeyAscii)

iStart = .SelStart

If LeftOffPos <> 0 Then
.SelStart = LeftOffPos
iStart = LeftOffPos
End If

sSearchKey = CStr(Left$(.Text, iStart))
.ListIndex = SendMessage(.hWnd, CB_FINDSTRING, -1, _
ByVal CStr(Left$(.Text, iStart)))

If .ListIndex = -1 Then
LeftOffPos = Len(sSearchKey)
End If

.SelStart = iStart
.SelLength = Len(.Text)
LeftOffPos = 0

KeyAscii = 0
End If
End Select
End With
End Sub
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Static iLeftOff As Long

ComboAutoComplete Combo1, KeyAscii, iLeftOff
End Sub
lgxysl 2003-08-23
  • 打赏
  • 举报
回复
“Combo控件本身没有这个功能,你自己编吧”,怎么编呢?
对于问题2,对于textbox控件怎么办?如果combox的style=0怎么办?
射天狼 2003-08-23
  • 打赏
  • 举报
回复
1. rs.RecordCount '行数,不过要想取这个行数,打开的时候记录集必须为adOpenStatic,静态的才可以
rs.Fields.Count '列数
2. Combo1.SelStart = 0
Combo1.SelLength = Len(Combo1.Text)
Combo1.SetFocus
'如果这么用,Combo控件的Style属性必须为1才行.
3. Combo控件本身没有这个功能,你自己编吧
程序介绍: ◎前言:这是应一个MM的要求,搞了一个类似于知识库的系统,为了方便她快速搜索到需要的文章和答案,因此就做成了现在这样的搜索为主的cms,里面存放了大约3000篇以上的知识量,涉及到3大类10几个层面,涵盖了衣食住行、生活娱乐、电脑知识、动植物等,甚至是三国演义和西游记全篇,这个文件这么大,就是因为数据库内容太多了!不过这样大家一下下来就能用了! ◎特点:系统用了智能拆分关键字查询和分类别查询,主要就用到3个文件,包括一个错误提示页!后台可要可不要,自己掂量掂量看看是否需要就是! ◎设计:界面比较漂亮,完全是down 别人的,因为过年了,设计师都忙着回家,没空帮我,不过的确很不错,希望你会和我一样喜欢!logo和head 都留空,你可以自己进images修改它,想取什么名称就取什么名称, ◎安全:因为我也要回家过年,而且这本身就只针对MM个人电脑使用,本人没怎么认真对待,(惭愧~~~)但对于普通的菜鸟,应该是没的,如果你是入侵高手,建议自己在检测和修缮下,如果可以,到我们的论坛发表下! ◎其他:后台可以设置这个站点的名称和网站开关,也可以屏蔽指定的IP访,由于我是拷贝CMS的config,因为没有删除其他的内容,(再次惭愧~~,)貌似没什么影响!如果你需要本地测试,建议把数据库备份,然后删除2500篇内容,不然会影响你测试速度,尤其是服务器配置不好的同志! ◎最后:本程序是小治技术社区的坏孩子作品,感谢社区的编程高手对本人给与技术上的指点!发布此版本旨在与众网友交流学习,整理过程中较为仓促,难免有疏漏,请大家提出指正。
============================== Copyright (C) 2003-2008 Script Written by 坏孩子 程序名称: 百科知识搜索系统 Ver 1.0 BETA 版 软件类别: ASP源码 / 搜索CMS 软件语言: 简体中文 授权方式: 免费版 系统平台: ASP+Access 程序下载: http://www.baidu.com.cn/s?wd=%B0%D9%BF%C6%D6%AA%CA%B6%CB%D1%CB%F7%CF%B5%CD%B3 官方网址: http://qbar.qq.com/ah4m5a7z/ (QQ论坛) 程序开发: 小治技术 研发中心 EMAIL:xiaovshzi@126.com ============================== 小治技术QQ群:9575165 作者QQ:270612779 ============================== 默认用户:admin 密码:admin(放到网上,建议更改) 数据库链接文件:inc/mdb.asp(第一次使用请设置) 数据库文件:@@3$/bkss.mdb(放到网上,建议更改) 有些功能还没实现 代码也没有优化~~测试用的版本~~ 先放出来 大家自己研究玩吧~~等我自己把组织论坛的搞完了就开始写BETA 2版(用大后台支持) 有人也我是否可以加了采集的功能,可恨本人才疏学浅,无法满足,希望有高手不惜赐教~~~ 界面版权:www.openv.com ============================== 程序介绍: ◎前言:这是应一个MM的要求,搞了一个类似于知识库的系统,为了方便她快速搜索到需要的文章和答案,因此就做成了现在这样的搜索为主的cms,里面存放了大约3000篇以上的知识量,涉及到3大类10几个层面,涵盖了衣食住行、生活娱乐、电脑知识、动植物等,甚至是三国演义和西游记全篇,这个文件这么大,就是因为数据库内容太多了!不过这样大家一下下来就能用了! ◎特点:系统用了智能拆分关键字查询和分类别查询,主要就用到3个文件,包括一个错误提示页!后台可要可不要,自己掂量掂量看看是否需要就是! ◎设计:界面比较漂亮,完全是down 别人的,因为过年了,设计师都忙着回家,没空帮我,不过的确很不错,希望你会和我一样喜欢!logo和head 都留空,你可以自己进images修改它,想取什么名称就取什么名称, ◎安全:因为我也要回家过年,而且这本身就只针对MM个人电脑使用,本人没怎么认真对待,(惭愧~~~)但对于普通的菜鸟,应该是没的,如果你是入侵高手,建议自己在检测和修缮下,如果可以,到我们的论坛发表下! ◎其他:后台可以设置这个站点的名称和网站开关,也可以屏蔽指定的IP访,由于我是拷贝CMS的config,因为没有删除其他的内容,(再次惭愧~~,)貌似没什么影响!如果你需要本地测试,建议把数据库备份,然后删除2500篇内容,不然会影响你测试速度,尤其是服务器配置不好的同志! ◎最后:本程序是小治技术社区的坏孩子作品,感谢社区的编程高手对本人给与技术上的指点!发布此版本旨在与众网友交流学习,整理过程中较为仓促,难免有疏漏,请大家提出指正。 ============================== -小治技术QQ群:9575165

7,763

社区成员

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

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