Вниз
Скачать: CL | DM;

Как в Memo при наведении мыши на слово оно выделялось цветом   Найти похожие ветки 

 
allrussia   (2006-12-02 08:19) [0]

Как по быстрому реализовать, чтобы при наведении на слово (словосочетание, предложение), отделенного от других запятыми, в Мемо курсора мыши оно отображалось другим цветом

вот скриншот:
http://slil.ru/23503047


 
PZ   (2006-12-02 10:44) [1]

Проще для этого использовать компонент RichEdit


 
allrussia   (2006-12-02 10:57) [2]

ок RichEdit, а пример можно или наводку


 
PZ   (2006-12-02 11:44) [3]

Смотреть всеми нелюбимого здесь Архангельского, "Приемы программирования в Delphi. Версии 5-7"


 
Leonid Troyanovsky ©   (2006-12-02 12:31) [4]


> allrussia   (02.12.06 10:57) [2]

> ок RichEdit, а пример можно или наводку


http://home.att.net/~robertdunn/Yacs.html

--
Regards, LVT.


 
allrussia   (2006-12-02 12:51) [5]

LVT
забыл указать, я в D7 сижу, а не в CBuider

короче я понял, чего нужно
нужно как в Delphi когда Ctrl жмешь и наводишь на слово подсветка была


 
Leonid Troyanovsky ©   (2006-12-02 13:00) [6]


> allrussia   (02.12.06 12:51) [5]

> забыл указать, я в D7 сижу, а не в CBuider


Ну и что?
Скажем, в msdn статьи написаны без оглядки на дельфи,
однако, настоящие дельфийцы их читают.

--
Regards, LVT.


 
allrussia   (2006-12-02 13:39) [7]

упростим и до того примитивнейший вопрос, на который пока никто (кодом) не ответил:

в общем навожу я на слово (словосочетание) курсор мыши
и могу получить его содержание

вот пример из 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 жмешь и подводишь курсов вообще не моргает и прекрасно отображается линк


 
Джо ©   (2006-12-02 13:46) [8]

> з.ы. в delphi в редакторе когда ctrl жмешь и подводишь курсов
> вообще не моргает и прекрасно отображается линк

Потому, что в редакторе  Делфи используется не TRichEdit, а свой собственный компонент, исходников которого они, увы, не предоставляют.


 
allrussia   (2006-12-02 13:55) [9]

Джо а поповоду другого моего топика не смотрел скрины есть что сказать?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.039 c
1-1164894605
salexn
2006-11-30 16:50
2007.01.28
Как определить установлена ли нужная версия MSXML?


1-1165407062
Tonich
2006-12-06 15:11
2007.01.28
Прозрачность


15-1167887748
Decease
2007-01-04 08:15
2007.01.28
Монтирование образов на Windows Vista


3-1162984122
topperz
2006-11-08 14:08
2007.01.28
разное содержимое комобобокса в одном столбце DbGridEh


6-1156605057
kernel
2006-08-26 19:10
2007.01.28
WOL




   Наверх