|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||||
Подсветка TStringGrid по набору условий07.01.2015, 17:00. Показов 7687. Ответов 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 Отчет по набору прав Сплайн по набору точек Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|