Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 28 май 2020, 07:17

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
СообщениеДобавлено: 19 дек 2018, 11:24 
Не в сети

Зарегистрирован: 24 дек 2012, 11:18
Сообщений: 53
Добрый день.
Подскажите, пожалуйста, как в ячейке грида часть (!) текста отрисовывать другим цветом.
Если возможно - хотя бы простой пример.

Большое спасибо!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 27 дек 2018, 10:44 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1090
Добрый день.

К сожалению, в библиотеки нет специальных функций или классов для отрисовки мультиформатного текста.
Один из вариантов, это использовать RichText, но его надо будет где-то хранить. В БД или динамически создавать.

Другой вариант - рисовать куски текста самому в событии TColumnEh.OnAdvDrawDataCell.
Вот пример обработчика события для подмены цвета, первого слова в содержимом ячейки.

Код:
procedure TForm1.DBGridEh1Columns2AdvDrawDataCell(Sender: TCustomDBGridEh; Cell,
  AreaCell: TGridCoord; Column: TColumnEh; const ARect: TRect;
  var Params: TColCellParamsEh; var Processed: Boolean);
var
  s1, s2: String;
  TextRect: TRect;
begin
  //Draw background
  //Just use default draw method with Text = ''
  Params.Text := '';
  Sender.DefaultDrawColumnDataCell(Cell, AreaCell, Column, ARect, Params);

  //Draw foreground
  Sender.Canvas.Brush.Style := bsClear;
  if (Column.DisplayText = 'South America') then
  begin
    Sender.Canvas.Font.Color := $000042CA;
    s1 := 'South ';
  end
  else
  begin
    Sender.Canvas.Font.Color := $00FF8000;
    s1 := 'North ';
  end;
  TextRect := ARect;
  TextRect.Top := TextRect.Top + 2;
  TextRect.Left := TextRect.Left + 2;
  Sender.Canvas.TextRect(TextRect, s1);

  TextRect.Left := TextRect.Left + Sender.Canvas.TextWidth(s1);
  s2 := 'America';
  Sender.Canvas.Font.Color := clWindowText;
  Sender.Canvas.TextRect(TextRect, s2);

  Processed := True;

end;


Вложения:
sshot-18.png
sshot-18.png [ 20.77 KiB | Просмотров: 855 ]

_________________
Best regards
EhLib support Team
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 27 дек 2018, 16:52 
Не в сети

Зарегистрирован: 24 дек 2012, 11:18
Сообщений: 53
Красота! Спасибо огромное, отдельное за исчерпывающий пример!
Жаль что нет готового решения, такого ни у кого нет и это было бы преимуществом EhLib.
Но значит пока придётся вручную.

Ещё раз большое спасибо!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 28 дек 2018, 09:12 
Не в сети

Зарегистрирован: 21 дек 2012, 09:32
Сообщений: 53
Тогда уж сразу поддержку html-тегов хотя бы небольшого их количества. Там и стили и цвета будут.

Сейчас для таких случаев я пользуюсь джедаевской ItemHTDraw в событии OnAdvDrawDataCell грида.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 28 дек 2018, 11:15 
Не в сети

Зарегистрирован: 24 дек 2011, 14:04
Сообщений: 234
Откуда: Украина, г. Днепропетровск
maratvg писал(а):
Тогда уж сразу поддержку html-тегов хотя бы небольшого их количества. Там и стили и цвета будут.

А я давно просил автора добавить в грид в поддержку html-тегов (например как в библиотеках от TMS) - но пока воз и ныне там. Видать мало оно кому нужно ;-(


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 28 дек 2018, 14:13 
Не в сети

Зарегистрирован: 15 авг 2018, 07:39
Сообщений: 78
Я бы плюсанул эту хотелку


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 29 дек 2018, 09:02 
Не в сети

Зарегистрирован: 24 ноя 2012, 12:58
Сообщений: 30
Присоединяюсь к предыдущим авторам.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 15 дек 2019, 09:47 
Не в сети

Зарегистрирован: 27 янв 2012, 09:40
Сообщений: 59
Откуда: Питер
Да, было бы отлично, хотя бы на минимальном уровне (цвет шрифта, толщина, наклон, перечеркивание...).


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 16 дек 2019, 07:19 
Не в сети

Зарегистрирован: 27 янв 2012, 09:40
Сообщений: 59
Откуда: Питер
И еще бы вставку картинки в произвольном месте, как в html-тегах.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB