如何实现以下功能??

52r 2004-09-25 10:08:27
英语考研复习中,自己想做个适合自己的单词记忆软件
但是有些功能不能实现,望高手指点

1.数据库中单词排列按长度,和按字母顺序排列的相互转换

2.单词模糊查询功能的实现,即,在combobox输入a后,下拉显示a开头单词,输入ab显示ab开头的单词

请高手指点一二,小弟不胜感激

如果这里说不清楚请加小弟QQ:8142997
...全文
101 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
52r 2004-09-26
  • 打赏
  • 举报
回复
谢谢两位的讲解
northwolves 2004-09-25
  • 打赏
  • 举报
回复
如果嫌添加长度字段简单,可以直接按字符串长度排序,参考:

http://community.csdn.net/Expert/topic/3214/3214394.xml?temp=.5714685
lxcc 2004-09-25
  • 打赏
  • 举报
回复
楼上的好,单词一共6000多个,长度字段自己加??
//存到数据库里面,Form_Load循环AddItem
52r 2004-09-25
  • 打赏
  • 举报
回复
楼上的好,单词一共6000多个,长度字段自己加??
lxcc 2004-09-25
  • 打赏
  • 举报
回复
' *************Declarations
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 WM_SETREDRAW As Long = &HB&
Private Const CB_FINDSTRING As Long = &H14C&

' *************Here is the sub that will implement auto search

Public Sub SearchCombo(InControl As Object)
On Error GoTo trap

Dim StrPos As Long
Dim lPos As Long
Dim SearchStr As String

If TypeOf InControl Is ComboBox Then
StrPos = InControl.SelStart
SearchStr = Left$(InControl.Text, StrPos)

lPos = SendMessage(InControl.hwnd, CB_FINDSTRING, 0, ByVal SearchStr)

If lPos >= 0 Then
InControl.Text = InControl.List(lPos)
InControl.ListIndex = lPos
End If

With InControl
.SelStart = StrPos
.SelLength = Len(InControl.Text)
End With
End If
Exit Sub
trap:
MsgBox Err.Description
End Sub

'**************Implement it like this************
Private Sub Combo1_Change()
Call SearchCombo(Combo1) '<--pass the combo box to the sub by name
End Sub

Private Sub Form_Load()
Combo1.AddItem "asdasd"
Combo1.AddItem "fsdasd"
Combo1.AddItem "bsdasd"
Combo1.AddItem "ssdasd"
Combo1.AddItem "rsdasd"
End Sub
northwolves 2004-09-25
  • 打赏
  • 举报
回复
1.设一个单词长度字段。
2 设COMBOBOX SORT为TRUE
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 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

sString = CStr(Left(Combo1.Text, iStart))
Combo1.ListIndex = SendMessage(Combo1.hwnd, &H14C, -1, ByVal CStr(Left(Combo1.Text, iStart)))

If Combo1.ListIndex = -1 Then iLeftOff = Len(sString): Combo1.Text = sString
If Combo1.Text <> "" Then SendMessage Combo1.hwnd, &H14F, True, 0

Combo1.SelStart = iStart
Combo1.SelLength = 0
iLeftOff = 0

End Sub
Private Sub Form_Load()
Dim i As Long
For i = 1 To 500
Randomize
Combo1.AddItem Chr(Int(Rnd * 26) + 97) & Chr(Int(Rnd * 26) + 97) & Chr(Int(Rnd * 26) + 97) & Chr(Int(Rnd * 26) + 97) & Chr(Int(Rnd * 26) + 97)
Next
Combo1.Text = ""
End Sub

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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