![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в Memo при наведении мыши на слово оно выделялось цветом
allrussia © (2006-12-02 08:19:00)Как по быстрому реализовать, чтобы при наведении на слово (словосочетание, предложение), отделенного от других запятыми, в Мемо курсора мыши оно отображалось другим цветом
вот скриншот:
http://slil.ru/23503047
allrussia (2006-12-02 13:55:00) [1]Джо а поповоду другого моего топика не смотрел скрины есть что сказать?
Джо (2006-12-02 13:46:00) [2]> з.ы. в delphi в редакторе когда ctrl жмешь и подводишь курсов
> вообще не моргает и прекрасно отображается линк
Потому, что в редакторе Делфи используется не TRichEdit, а свой собственный компонент, исходников которого они, увы, не предоставляют.
allrussia (2006-12-02 13:39:00) [3]упростим и до того примитивнейший вопрос, на который пока никто (кодом) не ответил:
в общем навожу я на слово (словосочетание) курсор мыши
и могу получить его содержание
вот пример из DW
procedure TForm1.RichEdit1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
iCharIndex, iLineIndex, iCharOffset, i, j: Integer;
Pt: TPoint;
s: string;
begin
with TRichEdit(Sender) do
begin
Pt := Point(X, Y);
// Get Character Index from word under the cursor
iCharIndex := Perform(Messages.EM_CHARFROMPOS, 0, Integer(@Pt));
if iCharIndex < 0 then Exit;
// Get line Index
iLineIndex := Perform(EM_EXLINEFROMCHAR, 0, iCharIndex);
iCharOffset := iCharIndex - Perform(EM_LINEINDEX, iLineIndex, 0);
if Lines.Count - 1 < iLineIndex then Exit;
// store the current line in a variable
s := Lines[iLineIndex];
// Search the beginning of the word
i := iCharOffset + 1;
while (i > 0) and (s[i] <> ',') do Dec(i);
// Search the end of the word
j := iCharOffset + 1;
while (j <= Length(s)) and (s[j] <> ',') do Inc(j);
// Display Text under Cursor
RESULT := Copy(s, i + 1, j - i - 1);
....
end;
end;
теперь как мне корректно поменять шрифт у выделенного слова:
я пробовал так
...
SelStart = i;
SelLength = j - i;
SelAttributes.Font.Style = fsUnderline
Прекрасно все работает, но
1: когда увожу мышку выделение и стиль шрифта остаются остается а мне нужно только стиль шрифта менять и не выделять текст
т.е . обратно то как поменять?
2: офигеть как моргает при перерисовке при наведении мыши
з.ы. в delphi в редакторе когда ctrl жмешь и подводишь курсов вообще не моргает и прекрасно отображается линк
Leonid Troyanovsky (2006-12-02 13:00:00) [4]
> allrussia (02.12.06 12:51) [5]
> забыл указать, я в D7 сижу, а не в CBuider
Ну и что?
Скажем, в msdn статьи написаны без оглядки на дельфи,
однако, настоящие дельфийцы их читают.
--
Regards, LVT.
allrussia (2006-12-02 12:51:00) [5]LVT
забыл указать, я в D7 сижу, а не в CBuider
короче я понял, чего нужно
нужно как в Delphi когда Ctrl жмешь и наводишь на слово подсветка была
Leonid Troyanovsky (2006-12-02 12:31:00) [6]
> allrussia (02.12.06 10:57) [2]
> ок RichEdit, а пример можно или наводку
http://home.att.net/~robertdunn/Yacs.html
--
Regards, LVT.
PZ (2006-12-02 11:44:00) [7]Смотреть всеми нелюбимого здесь Архангельского, "Приемы программирования в Delphi. Версии 5-7"
allrussia (2006-12-02 10:57:00) [8]ок RichEdit, а пример можно или наводку
PZ (2006-12-02 10:44:00) [9]Проще для этого использовать компонент RichEdit