![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
глюк ричедит ? [D5, D6, D7]
oleggar © (2006-07-05 13:50:00)я ищу текст в rtf с помощью trichedit.findtext ,и почему-то текст ищется только
английский.Это как-то лечится ?или придется использовать другие компоненты или загружать текст в массив ?
oleggar (2006-07-05 18:47:00) [1]спасибо
begin...end (2006-07-05 17:36:00) [2]> oleggar © (05.07.06 15:00) [2]
Вот код немного переделанного метода FindText. Он оформлен как функция, в которую нужно передавать ссылку на конкретный экземпляр RichEdit, но при желании можно создать наследника от TCustomRichEdit и добавить туда эту функцию как метод.
uses RichEdit;
function FindTextW(RichEdit: TCustomRichEdit; const SearchStr: WideString;
StartPos, Length: Integer; Options: TSearchTypes): Integer;
const
EM_FINDTEXTW = WM_USER + 123;
var
Find: TFindText W;
Flags: Integer;
begin
with Find.chrg do
begin
cpMin := StartPos;
cpMax := cpMin + Length;
end;
Flags := 0;
if stWholeWord in Options then Flags := Flags or FT_WHOLEWORD;
if stMatchCase in Options then Flags := Flags or FT_MATCHCASE;
Find.lpstrText := P WideChar(SearchStr);
Result := SendMessage(RichEdit.Handle, EM_FINDTEXTW, Flags, LongInt(@Find));
end
Изменения (по сравнению с обычным FindText) выделены. Как видите, их совсем немного.
:о)
oleggar (2006-07-05 15:00:00) [3]у меня НТ .если поделитесь реализацией ,буду рад до смерти
begin...end (2006-07-05 14:32:00) [4]Да, аналогичная проблема была, и здесь уже обсуждалась. Причём, если текущая раскладка клавиатуры -- русская, то русский текст ищется без проблем. Лечил собственной реализацией FindText с использованием EM_FINDTEXT W(т.е. сообщения для поиска текста в unicode-формате, описание см. в MSDN) вместо обычного EM_FINDTEXT. Работает это только в NT-системах, насколько я помню.