|
<< Нажмите, чтобы показать Содержание >> TCustomRichView.GetWordAt, GetWordAtA, GetWordAtW |
Возвращает слово по заданным координатам.
procedure GetWordAt(X,Y: TRVCoord;
out RVData: TCustomRVFormattedData; out ItemNo: Integer;
out Word: TRVUnicodeString); overload;
function GetWordAtA(X,Y: TRVCoord): TRVAnsiString;
function GetWordAtW(X,Y: TRVCoord): TRVUnicodeString
function GetWordAt(X,Y: TRVCoord): String;
Входные параметры:
(X,Y) – клиентские координаты (относительно левого верхнего угла клиентской области окна компонента).
Выходные параметры:
Word (или возвращаемое значение в упрощённых версиях метода) получает слово (если это текстовый элемент) или имя нетестового элемента. «Слово» определяется как часть строки между разделителями. Разделители указаны в свойстве Delimiters.
ItemNo получает номер элемента, находящегося по координатам (X,Y), или -1, если по данным координатам нет элемента. Это номер элемента в документе RVData (это может быть основной документ, ячейка таблицы или документ редактора ячейки).
Примечание про Юникод:
В компоненте строки хранятся в юникодном формате. GetWordAtA (и GetWordAt в неюникодных версиях Delphi) конвертирует юникодный текст в ANSI-строку на основе кодировки Style.DefCodePage.
GetWordAt возвращает:
▪ANSI-строку, как GetWordAtA, в Delphi 2007 и старее
▪юникодную строку (UTF-16), как GetWordAtW, в Delphi 2009 и новее
▪юникодную строку (UTF-8), в Lazarus
Например, можно использовать эти методы в событиях OnRVMouseDown и OnRVMouseUp.
Методы могут быть вызваны только если документ форматирован.
Мы не можем использовать упрощённую версию GetWordAt, потому что тогда не сможем определить, является ли возвращаемый текст текстовым элементом.
uses CRVFData;
...
procedure TForm1.RichView1RVMouseUp(Sender: TCustomRichView;
Button: TMouseButton; Shift: TShiftState; ItemNo, X, Y: TRVCoord);
var
LItemNo: Integer;
LRVData: TCustomRVFormattedData;
LWord: TRVUnicodeString;
begin
ItemNo<0 then
exit; // указатель мыши не над элементом
Sender.GetWordAt(X,Y, LRVData, LItemNo, LWord);
if LItemNo<0 then
exit;
if LRVData.GetItemStyle(LItemNo)>=0 then // текстовый элемент?
Label1.Caption := LWord;
end;
См. также события:
См. также свойства:
См. также методы: