Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 10.04.2012
Сообщений: 26

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

19.05.2021, 15:41. Показов 2067. Ответов 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
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,676
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru