Посмотрел. В доработанном мной (на предмет multilevel undo) RichtextCtrl (устанавливается с qryConsole) поиск поломан. В оригинальном (приложен в архиве) поиск работает, но только с нерусскими буквами.
Человеческий поиск (EM_FINDTEXT) ищет всё в обоих случаях. Пример поиска на VB:
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 Type CHARRANGE
cpMin As Long
cpMax As Long
End Type
Private Type FINDTEXT
chrg As CHARRANGE
lpstrText As String
End Type
Const WM_USER = &H400
Const EM_FINDTEXT = WM_USER + 56
Const FR_DOWN = &H1
Const FR_WHOLEWORD = &H2
Const FR_MATCHCASE = &H4
Private Sub Command1_Click()
Dim cr As CHARRANGE
cr.cpMin = 0
cr.cpMax = -1
Dim ft As FINDTEXT
ft.chrg = cr
ft.lpstrText = Text1.Text
With RichTextBox1
.SelStart = SendMessage(.hwnd, EM_FINDTEXT, FR_DOWN, ft)
.SelLength = Len(Text1.Text)
.SelText = Text2.Text
End With
End Sub
Private Sub Form_Load()
RichTextBox1.LoadFile "Z:\pvase\RichtextCtrl_001\test.rtf"
End Sub
Для поиска русских букв должна быть включена русская раскладка клавиатуры.
Если чё:
Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long
Private Const kb_lay_ru As Long = 68748313
...
ActivateKeyboardLayout kb_lay_ru, 0
В общем, стоит написать обёртку, чтобы всё это спрятать. А если писать обёртку - интереснее использовать дотнетовский контрол.
Так что, если ты дочитал это до конца - забудь всё, что прочитал и..