, EM_SCROLLCARET, 0, 0);;
При установці SelLength доводиться читати поточне положення курсору (перше повідомлення - EM_EXGETSEL), змінювати значення кінця виділення (cpMax: = cpMin + Value) і знову встановлювати курсор туди ж (друге повідомлення - EM_EXSETSEL), але з виділенням тексту. При цьому компонент знову перемалюю зображення, що б стало видно виділення. І, нарешті, третє повідомлення EM_SCROLLCARET змушує компонент призвести прокрутку зображення так, щоб курсор стало видно. p align="justify"> Метод FindText шукає рядок-зразок в зазначеному діапазоні тексту.
Метод повертає номер позиції шуканого зразка в тексті (від початку тексту, з 0), якщо зразок не знайдений, то повертає -1 (мінус один).
З перегляду вихідних текстів Unit з бібліотеки компонентів Delphi випливає, що TRichEdit успадковує метод FindText від свого найближчого предка TCustomRichEdit.
З файлу RTL WIN richedit.pas опис типу
type = record: Longint;
cpMax: LongInt;;
Цей тип потрібен для передачі кордонів тієї частини тексту, всередині якої буде проводитись пошук. Для Windows межі тексту вказується так, cpMin - перший символ, з якого починається пошук, аcpMax - останній символ, до якого проводиться пошук. br/>
TFindText = TFindTextA; = record: TCharRange;: PAnsiChar;;
Поле lpstrText це покажчик на null-terminated рядок (PAnsiChar звичайна PChar).
З файлу VCL comctrls.pas
TSearchType = (stWholeWord, stMatchCase);
TSearchTypes = set of TSearchType;
Даний тип визначає, яким чином має відбуватися пошук. Якщо встановлений stMatchCase, то при пошуку необхідно враховувати регістр букв (великі чи маленькі). Якщо встановлений stWholeWord, то необхідно, щоб знайдена послідовність була обмежена роздільниками (наприклад, пробілами). У OSR2rus це називається "тільки слово цілком", хоча слів може бути декілька. br/>
TCustomRichEdit = class (TCustomMemo) FindText (const SearchStr: string; StartPos, Length: Integer; Options: TSearchTypes): Integer;
Це описова частина класу і далі в розділі реалізації:
function TCustomRichEdit.FindText (const SearchStr: string; StartPos, Length: Integer; Options: TSearchTypes): Integer;: TFindText;: Integer; Find.chrg do: = StartPos;: = cpMin + Length ;;: = 0; stWholeWord in Options then Flags: = Flags or FT_WHOLEWORD; stMatchCase in Options then Flags: = Flags or FT_MATCHCASE;. lpstrText: = PChar (SearchStr);: = SendMessage (Handle, EM_FINDTEXT, Flags, LongInt (@ Find));
end;
Спочатку встановлюються межі діапазону пошуку, причому замість довжини використовується номер остан...