Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];

Вниз

Как реализовать метод SelLength в своем мемо?   Найти похожие ветки 

 
Alex_C ©   (2006-10-27 14:12) [0]

Пишу компонент - наследок от TMemo, в котором переопределяю метод WMPaint, для выделения некоторых слов. Все отлично работает, кроме одного - перестал выделяться синим цветом выделенный текст
SelStart-SelLength
Т.е. он в памяти выделяется (SelText = выделенному фрагменту), а на мемо - нет. Привожу упрощенный вариант моего WMPain (здесь просто выводятся все строки):

procedure TMyMemo.WMPaint(var Message: TWMPaint);
var
i, j, dy: Integer;
PS: TPaintStruct;
DC: HDC;
aCanvas: TCanvas;
begin
inherited;
DC:= Message.DC;
if DC= 0 then
DC:= BeginPaint(Handle, PS);
aCanvas:=TCanvas.Create;
try
aCanvas.Handle:= DC;
aCanvas.Font:= Font;

FImage.Handle := CreateCompatibleBitmap(aCanvas.Handle,
WidthOf(ClientRect), HeightOf(ClientRect));

FImage.Canvas.FillRect(ClientRect);
FImage.Canvas.Font.Assign(Font);

with FImage.Canvas do
begin
dy := 1;
for i:= 0 to Lines.Count-1 do //Перебираем строки Memo
begin
// Выводим строку
TextOut(0, dy, Lines[i]);
// Перемещаемся на следующую строку
dy:= dy + TextHeight("X");
end;
end;
BitBlt( aCanvas.Handle, 0, 0, FImage.Width, FImage.Height, FImage.Canvas.Handle, 0, 0, SRCCOPY );
finally
if Message.DC = 0 then EndPaint(Handle, PS);
aCanvas.Free;
end;
end;

А вот как сюда добавить выделение по SelStart-SelLength? Где-нибудь простенький бы пример посмотреть?


 
Mirage   (2006-10-27 14:38) [1]

>[0] Alex_C(c) 27-Oct-2006, 14:12
>А вот как сюда добавить выделение по SelStart-SelLength?
>Где-нибудь простенький бы пример посмотреть?
вот ты не поверишь: таки выяснять, есть ли выделение, и тоже руками рисовать. ага?


 
Alex_C ©   (2006-10-27 16:56) [2]


> вот ты не поверишь: таки выяснять, есть ли выделение, и
> тоже руками рисовать. ага?


Вот такая засада! Прийдется рисовать!


 
DVM ©   (2006-10-28 23:14) [3]


> Alex_C ©   (27.10.06 14:12)  

Че то мне подсказывает, что приведенный код для рисования хреново очень будет работать при большом количестве строк. Может все таки рисовать только те строки которые действительно надо рисовать, а не перебирать все подряд. Если их будет, скажем так 500 000 то оно работать будет плохо.


 
Орион ©   (2006-10-28 23:24) [4]

> [0] Alex_C ©   (27.10.06 14:12)
>для выделения некоторых слов

возможно тебе TSynEdit подойдет?



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

Форум: "Основная";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.045 c
3-1160113762
svt
2006-10-06 09:49
2006.12.10
Уважаемые мастера, подскажите как правильно выполнить


15-1163744578
@Ujin
2006-11-17 09:22
2006.12.10
Кто-нибудь натыкался на исходники paxScript?


15-1163838143
SerJaNT
2006-11-18 11:22
2006.12.10
aDSL модем


15-1163698600
ProgRAMmer Dimonych
2006-11-16 20:36
2006.12.10
Microsoft готова уйти из Китая


15-1163946111
tesseract
2006-11-19 17:21
2006.12.10
Кредитка, нормальная





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский