Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.20;
Скачать: CL | DM;

Вниз

Вывод текста.   Найти похожие ветки 

 
Andy BitOff ©   (2006-07-06 21:42) [0]

Сабж конечно не информативный, но как еще озаглавить не додумался. Опишу лучше проблему.
Задача:
Вывести длиную строку текста с подсветкой некоего слова или его части, в зависимости от заданного параметра.
Дано:
Из инструментов в моем распоряжении только TCanvas и, соответственно, сама строка и её часть, которую надо подсветить.
Проблема:
Проблема в том, что строка может переноситься по словам (WordWrap) и нужное слово/часть слова (которое/ую надо подсветить) может находится в любой строке (после переноса) в любой позиции.

При выводе строки без переноса проблем не возникает, а вот с переносом...

P.S. Если не очень понятно объяснил, извиняюсь. Отвечу дополнительно на любые вопросы.


 
PSPF2003 ©   (2006-07-06 21:46) [1]

Я извиняюсь, наверное, не в тему. На Vr-online.ru в разделе скачать есть компонент Label позволяющий форматировать выводимый текст.


 
PSPF2003 ©   (2006-07-06 21:52) [2]

http://www.vr-online.ru/download.php?det=5


 
Andy BitOff ©   (2006-07-06 21:57) [3]

Я, вроде бы, компонентов не просил.


 
Eraser ©   (2006-07-06 22:29) [4]

> [3] Andy BitOff ©   (06.07.06 21:57)

все уже украдено до нас )

см. TJvHTLabel из JEDI VCL. Если сторонними компонентами пользоваться нельзя, то можно просто посмотреть, как там сделано и сделать у себя.


 
Andy BitOff ©   (2006-07-06 22:39) [5]

Eraser ©   (06.07.06 22:29) [4]
Если бы все было так просто =( Просмотрел кучу примеров, но что-то все мимо =(


 
Eraser ©   (2006-07-06 22:45) [6]

> [5] Andy BitOff ©   (06.07.06 22:39)

а что если из пушки по воробъям пальнуть - использовать RichEdit?


 
Andy BitOff ©   (2006-07-06 22:54) [7]

Нет. На самом деле это DevExpress.ExpressQuantumGrid5.cxGrid1DBTableView1CustomDrawCell(
 Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
 AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);

За сим ничего использовать не могу.
При выводе результатов надо покрасить найденные фрагменты. Если CellAutoHeight is False, то рисуется в одну строку и с этим проблем нет, но поскольку строки могут быть длинными, то CellAutoHeight может быть True и тогда никак не покрасить.


 
REA   (2006-07-07 10:51) [8]

Можно вручную - определяешь позиции слов и выводишь по словам.
В принципе два цикла всего.


 
Andy BitOff ©   (2006-07-07 12:02) [9]

Можно конечно и так, посмотрю вообщем.

А есть ли у нас (в Delphi) или у Вас (в запасниках) процедурки вывода текста в рект (аналога DrawText), но с возможностью указания параметров x и y для начала печати (как в TextRect)?


 
PSPF2003 ©   (2006-07-07 12:04) [10]

Программирование Win32 API в Delphi
Там все есть.


 
Andy BitOff ©   (2006-07-07 12:12) [11]

Нельзя ли поподробнее, какая именно.

DrawText упоминался не случайно - обязателен перенос в пределах ректа.


 
PSPF2003 ©   (2006-07-07 12:25) [12]

В указанной книге есть все примеры. Работа с текстом, установки шрифтов, вывод текста, форматирование, выравнивание, использование таб-стопов, настройки форматирования. (Вообще разговор в книге идет о GDI+)


 
ancot   (2006-07-07 13:11) [13]

DrawText(Canvas.Handle, text, Length(text), rect, DT_WORDBREAK or DT_CALCRECT);


 
REA   (2006-07-07 14:40) [14]

В принципе можно создать скрытый richedit и используя его функциональность (EM_DISPLAYBAND) рисовать на DC грида. Не знаю насколько это эффективно, быстро и т.п.


 
Andy BitOff ©   (2006-07-07 17:11) [15]

ancot   (07.07.06 13:11) [13]
Вы не внимательны.

REA   (07.07.06 14:40) [14]
Да, впринципе я решил эту проблему, как я считаю, с малыми для себя жертвами. Как и говорил Eraser в [4] я использовал htmlLabel из набора JEDI, а у него оказалось ОЧЕНЬ замечательное свойство, а именно (по памяти) HTMLPrint(Canvas, Rect), т.е. печать садержимого лабела на сторонний канвас в заданном ректе, что как нельзя лучше подходит для моих целей. В итоге код получился в 4 строчки, против 15-20 что намечалось.
Вообщем решение меня вполне устроило =)



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

Текущий архив: 2006.08.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.046 c
2-1154202701
ronyn
2006-07-29 23:51
2006.08.20
pchar pansichar


2-1154426141
Батя
2006-08-01 13:55
2006.08.20
Стили в Delphi


8-1140432629
sco
2006-02-20 13:50
2006.08.20
Ускорение слайд-шоу


2-1154196824
Gnoll
2006-07-29 22:13
2006.08.20
програмно открыть доступ к ресурсам


1-1151993205
Chaser
2006-07-04 10:06
2006.08.20
Корректное удаление потока (TThread)