0 / 0 / 0
Регистрация: 10.04.2012
Сообщений: 26

Несколько строк разным цветом в одной ячейке StringGrid

19.05.2021, 15:41. Показов 2133. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно в ячейках стрингрида отобразить несколько строк разного цвета. Помогите, не могу разобраться. Вот как у меня сейчас:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
procedure TForm10.sgTamplDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  Format: Word;
  st: string;
  h: word;
begin
  if ACol = 0 then
  begin
    Format := DT_CENTER or DT_WORDBREAK;
 
    sgTampl.Canvas.FillRect(Rect);
 
    sgTampl.Canvas.Font.Size := 10;
    sgTampl.Canvas.Font.Color := clBlack;
    st := sgTampl.Cells[ACol + 1, ARow];
    h := WinProcs.DrawText(sgTampl.Canvas.Handle, PChar(st), Length(st), Rect, Format);
 
    sgTampl.Canvas.Font.Size := 7;
    sgTampl.Canvas.Font.Color := clNavy;
    st := #13 + sgTampl.Cells[ACol + 2, ARow];
    h := h + WinProcs.DrawText(sgTampl.Canvas.Handle, PChar(st), Length(st), Rect, Format);
 
    sgTampl.RowHeights[ARow] := h - 5;
  end;
end;
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.05.2021, 15:41
Ответы с готовыми решениями:

StringGrid, несколько строк в ячейке
Подскажите,как сделать несколько строк в 1 ячейке stringgrid?

Несколько строк в одной ячейке
Как сделать чтобы в одной ячейке по нажатию Enter курсор не перепрыгивал на другую ячейку, а переходил в той же ячейке на другую строку?...

DataGridView несколько строк в одной ячейке
как сделать чтобы в DataGridView в ячейке было несколько строк текста, например: Фамилия, Имя, Отчество были в одной ячейке, нона разных...

22
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
20.05.2021, 12:39
Студворк — интернет-сервис помощи студентам
мы посмотрели
и подумали, что в общем случае текст не влезает в одну строку, о чем и говорит DT_WORDBREAK
поэтому решение хорошее, простое, не недостаточное
1
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
20.05.2021, 12:54
DT_WORDBREAK ему нужен для вставки перевода каретки и все. Он же выводит текст второй строки в ту-же позицию, что и для первой строки, но благодаря переводу каретки в начале, первая строка не затирается. Изврат, но работает.
1
0 / 0 / 0
Регистрация: 10.04.2012
Сообщений: 26
20.05.2021, 23:23  [ТС]
Цитата Сообщение от Пытливый Посмотреть сообщение
Народ, ну вы хоть вы бы посмотрели, что ТС выводит в ячейку. У него не многострочный текст, а две разных строки.
У него одна строка 10 шрифтом и ниже вторая строка 7 шрифтом, причем строки разным цветом, а потому делаем так:
Да, это работает, но только для вывода строк с разными параметрами шрифта, но при этом не меняется высота строк в зависимоти от их содержимого. Корректно ли в этой процедуре изменить высоту рисуемой строки?

Добавлено через 9 минут
Цитата Сообщение от DenNik Посмотреть сообщение
это неправильный подход. во-первых, при изменении размеров ячеек таблица перерисовывается заново (соответствено, для каждой ячейки заново вызывается DrawCell)
во-вторых, для таблицы изначальным понятием является высота/ширина строк/столбцов, исходя из которых формируется Rect, который передается в метод отрисовки, а только потом происходит отрисовка.
Да, но это работает. Другие предложения, во всяком случае, я реализовать не могу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.05.2021, 23:23

Несколько строк текста в одной ячейке
В строках есть такая штука, чего нет ни в одном другом типе данных - перенос на новую строчку. Как мне сделать так, что бы при записи и...

Несколько строк в одной ячейке таблицы
Для наглядности на форму требуется поместить таблицу каждая из ячеек которой может содержать от одной до десятков строк(создание,...

Вывод информации в виде таблицы (не выводит несколько строк в одной ячейке)
Добрый вечер. может ли кто помочь с таким вопросом. Имеется задача Создать класс «Треугольник», описывающий объекты – треугольники...

StringGrid несколько строк вертикального текста в одной ячейки
уважаемые форумчане если ли у кого пример данной реализации? Поделитесь пожалуйста.

Значение одной ячейки первого StringGrid-а присвоить другой ячейке второго StringGrid-а
скажите пожалуйста, вот нам даны две таблицы stringgrid, как значение одной ячейки,первой таблицы, присвоить другой ячейке второй таблице?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Опции темы

Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru