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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.038 c
2-1154430637
Dysan
2006-08-01 15:10
2006.08.20
Как выловить утечку памяти в программе?


15-1153382099
novoalex
2006-07-20 11:54
2006.08.20
Небольшой провайдер...


2-1154419487
Neket
2006-08-01 12:04
2006.08.20
SNMP


1-1152192172
Oleon
2006-07-06 17:22
2006.08.20
Какое событие возникает при создании MDIChild?


3-1150289387
Still Swamp
2006-06-14 16:49
2006.08.20
Out of memory в TIBQuery и FB





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский