Главная страница
    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.055 c
15-1164165372
Slider007
2006-11-22 06:16
2006.12.10
С днем рождения ! 22 ноября


11-1140201303
Yurka R
2006-02-17 21:35
2006.12.10
Помогите начинающему в некоторых вопросах!


15-1163765840
Petrovskyi
2006-11-17 15:17
2006.12.10
Документация по 1С в Инете


4-1154079901
Alkid
2006-07-28 13:45
2006.12.10
ShellExecuteEx и ошибка 1155


6-1153729806
KyRo
2006-07-24 12:30
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский