Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как в 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо