|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||||
Подсветка TStringGrid по набору условий07.01.2015, 17:00. Показов 7701. Ответов 47
Метки нет (Все метки)
Добрый вечер! Вопрос про StringGrid.
Есть StringGrid, есть информация, которая по тому или иному событию записывается в строку этого StringGrid. События разные (скажем 4 вида) Вообщем то одно из этих событий реализовано. Но хотелось бы при этом событие окрашивать всю строку в нужный цвет(красный например). А лучше, чтобы плюс например еще рамка была. Но не критично. Добился окрашивания только одной ячейки. Обработчик DrawCell
0
|
||||||
| 07.01.2015, 17:00 | |
|
Ответы с готовыми решениями:
47
Открытие картинки по набору условий из StringGrid Удаление строк по набору условий Существуют ли множества, удовлетворяющие набору условий? 2 |
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|
| 12.01.2015, 22:15 [ТС] | |
|
Друзья, прошу помощи! При перерисовке грида с помощью Canvas происходят аццкие глюки! Нельзя ли перерисовать только строку, а не весь грид? Спасибо!
0
|
|
|
Супер-модератор
|
||||||
| 13.01.2015, 00:35 | ||||||
|
Можно:
1
|
||||||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||||
| 13.01.2015, 08:26 [ТС] | ||||||
|
Спасибо!
Но, пишу
[BCC32 Error]: E2227 Extra parameter in call to _fastcall TWinControl::Invalidate()
0
|
||||||
|
Супер-модератор
|
|
| 13.01.2015, 11:41 | |
|
Не-не-не... Во-первых, класс THackGrid должен быть описан не внутри обработчика, а выше него по тексту, желательно - вообще в H-файле. Во-вторых, кто же в обработчике OnDrawCell вызывает Invalidate<что_угодно>? У тебя же будет бесконечная рекурсия: вызов Invalidate() приведет к перерисовке грида (или его части), что в свою очередь приводит к вызову OnDrawCell() для этой части грида, а там - опять Invalidate(), и пошло-поехало... Invalidate() надо вызывать где-то в другом месте, но ни в коем случае нельзя его вызывать при отрисовке контрола.
Чего добиться-то хочешь? Расскажи нормально, по-русски, без вот этих не пойми что делающих кодов. Зачем начиная с 27 строки пытаться окрасить ВСЕ ячейки грида цветами "красно/белый"? Смысл этого от меня ускользает. Зачем тогда предыдущие строки? Сразу рисуй всё красно/белым, и всё, вообще ничего делать невалидным не нужно.
1
|
|
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|
| 13.01.2015, 14:56 [ТС] | |
|
Я понял. Красно-белое - это для примера. Без условий. Есть пять событий. Они все приходят в Основной Грид. Потом из этого Основного Грида по совпадению с уникальным словом в каждом из событий, строка копируется в строку одного из пяти Дополнительных Гридов. И есть шесть Кнопок. Первая показыват Основной Грид, где все события и еще пять Кнопок, каждая из которых показывает соответствующий Дополнительный Грид с тем или иным событием. Основная задача состоит в том, чтобы в Основном Гриде красить фон и текст строки в зависимости от приходящего туда события (пять событий - пять вариантов раскраски). Все работает, но когда Основной Грид перерисовывается (изменение цвета и фона строки в зависимости от условий), все происходит задумчиво и с глюками, часть строки может не покрасится. Ну и все такое. Вот я и подумал, можно ли перерисовывать не весь Основной Грид, а только текущую строку события. По Дополнительным Гридам есть два варианта. Или сразу настроить цвет фона, шрифта в каждом, ибо события в них будут сгруппированы, или вариант, как и с Основным Гридом. Хотелось бы конечно второй вариант, но не получается. Строки из Основного Грида в Дополнительные Гриды копируются, но раскрашиваться способом окраски строк Основного Грида не хотят.
Вы написали, что Invalidate() надо вызывать где-то в другом месте. Где его можно вызвать? Спасибо! Добавлено через 6 минут Все это для мониторинга внешней системы.
0
|
|
|
Супер-модератор
|
||
| 13.01.2015, 15:01 | ||
|
Все очень просто: нужно сделать дополнительный метод формы, который будет заполнять грид. То есть, где бы не изменялось его содержимое - надо вызывать этот метод, чтобы именно он изменял содержимое ячеек, проверял их, назначал цвета, и перерисовывал нужные фрагменты грида. Это снимет подавляющее большинство вопросов.
1
|
||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||||
| 13.01.2015, 16:47 [ТС] | ||||||
|
То есть, если я правильно понял на счет Invalidate(), нужно найти обработчик, в котором те или иные данные отправляются в Основной Грид и после каждой отправки тех или иных данных StringGrid1->.............
писать StringGrid1->Invalidate(); ? Но как быть с Дополнительными гридами? Их заполнение происходит в StringGrid1DrawCell из строк Основного Грида. Было бы очень здорово, если бы по поводу "Все очень просто: нужно сделать дополнительный метод формы, который будет заполнять грид." по подробнее, с примером кода. Естественно не в ущерб Вашему времени и терпению. Спасибо! Эти знания бесценны. Добавлено через 57 минут Перепутал там немного.. при
[BCC32 Error] E2247 '_fastcall TCustomGrid::InvalidateRow(int)' is not accessible
0
|
||||||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||
| 14.01.2015, 23:21 [ТС] | ||||
|
Друзья, очень нужна помощь! Распишите , плиз, как создать этот дополнительный метод формы, который будет заполнять грид (перекрашивать строки и текст в них) и куда чего пихать. По каким оработчикам. Голову сломал,никак не получается.
![]() Добавлено через 2 часа 22 минуты
0
|
||||
|
Супер-модератор
|
||
| 14.01.2015, 23:45 | ||
Сообщение было отмечено Sergey_03 как решение
Решение
1
|
||
| 14.01.2015, 23:59 | |
|
Не по теме: volvo, удивляюсь терпению. Это праздник какой-то.:)
0
|
|
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||||
| 15.01.2015, 08:55 [ТС] | ||||||
|
Проблема в том, что строки формируются в Основном Гриде из ячеек, в которые приходит информация из разных мест. Я подумал, может создать Дополнительный Грид, копировать в него из Основного Грида строки целиком, а потом уже раскрашивать Дополнительный Грид? Если так реально, подскажите плиз, в каком обработчике это нужно делать, с учетом присутствия int ACol, int ARow
Спасибо! Добавлено через 1 час 3 минуты В смысле потом из этого Дополнительного Грида раскидать строки по гридам, в зависимости от событий и уже их раскрашивать. Возможно я просто чего то не понимаю( Добавлено через 7 часов 35 минут Вообщем сижу, туплю уже которую ночь...Объясните по простому один раз. Если есть код
0
|
||||||
|
|
||||||||||||
| 15.01.2015, 23:23 | ||||||||||||
|
Вот смотри, есть у меня грид и есть у меня обработчик его события OnDrawCell, в котором написано:
Но мне лениво каждый раз писать в ячейки, чтобы проверить какой-нибудь новый функционал раскраски. Поэтому я кидаю на форму кнопку и пишу в обработчике клика на ней:
Теперь ты покажи, где и как выполняешь действия, подобные описанным. Причем, подробно.
1
|
||||||||||||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||||||||||||||||||||||||||||||||||||||||||||
| 16.01.2015, 09:03 [ТС] | ||||||||||||||||||||||||||||||||||||||||||||||
|
Доброе утро! Сидел я вчера, сидел, и вот что высидел. Насколько я понял, проблема в обработчиках - что и в какие писать. После того, как в
Но моя проблема - непонимание обработчиков. у меня есть переменные ACol и ARow и если я вставлю событие
Также я вставляю в
Собственно непонятно, в какой обработчик, который должен возвращать ACol и ARow, писать
То, что я это все слил в таймер - работает, но чувствую, что это не правильно. И еще вопрос не совсем по теме. Есть возможность в StringGrid программно изменить фон? В инспекторе есть такая функция, но нужного цвета нет в списке. Большое спасибо!
0
|
||||||||||||||||||||||||||||||||||||||||||||||
|
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
|
||||||
| 16.01.2015, 09:38 | ||||||
|
Вы можете сделать переменные ACol и ARow глобальными. Вернее сделать глобальные переменные которые будут брать значения ACol и ARow и использовать их у своем юните в любом месте.
Я когда то писал нечто подобное и мне пригодилась такая связка
1
|
||||||
|
Супер-модератор
|
||
| 16.01.2015, 10:23 | ||
|
Не по теме: А вначале, кстати, было довольно неожиданно. Интересные вопросы на фоне общей дебильности ("сложить два числа", "отсортировать массив", "как перевести с Паскаля На С++"). А скатилось - туда же...
2
|
||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||||||||||
| 16.01.2015, 11:33 [ТС] | ||||||||||||
|
В столбцы Основного Грида данные попадают из разных обработчиков. Выше я писал:
Вот код из программы:
Очень большая программа, не на одном юните. Тролить я не собираюсь. Спасибо. Добавлено через 7 минут и как туда вставить
0
|
||||||||||||
|
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
|
|
| 16.01.2015, 11:35 | |
|
1
|
|
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|
| 16.01.2015, 11:44 [ТС] | |
|
Спасибо большое. Попробую.
0
|
|
| 16.01.2015, 16:58 | |
|
Не по теме: Опять издевательства над StringGrid %-)
0
|
|
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|
| 17.01.2015, 16:07 [ТС] | |
|
Все! Я полностью разобрался с этой проблемой. Всем огромное спасибо!
0
|
|
| 17.01.2015, 16:07 | |
|
почему на виндоус икспи на нетбуке асер д255е экран тусклый(подсветка),а на виндоус 7 подсветка замечательная(очень яркая) Подсветка строк содержащих одинаковые значения полей или подсветка полей с одинаковым значением в таблице "Мало начальных условий" при решении системы из 7 ДУ, хотя граничных условий 8 Отчет по набору прав Сплайн по набору точек Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
Знание — сила: Доктрина интенциональности знаний против массовых профанаций
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс
Ссылка на сгенерированную музыкальную композицию:
https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013
Я говорю, что Время- как вода
течет. . .
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|