Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 842

/ вопрос открыт /

Здравствуйте!У меня на форме два stringgrid-а,один из них разноцветный,у другого есть, помимо всего прочего, два столбца:
1. № столбца;
2. № строки.
Задача в следующем,при клике мышки на первом stringgrid-е,необходимо проанализировать цвет ячейки и по некоторому условию заполнить во втором stringgrid-е необходимые столбцы для данной ячейке.
У меня два вопроса:
1.Каким обработчиком событий воспользоваться;
2.Как проанализировать цвет ячейки.

GAZ Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: GAZ (статус: Посетитель)
Вопрос отправлен: 3 марта 2010, 17:04
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 9; последнее сообщение — 5 марта 2010, 22:47; участников в обсуждении: 4.
DNK

DNK (статус: Студент), 3 марта 2010, 17:40 [#1]:

Любопытно. С каких это пор стандартный StringGrid стал разноцветным?
"Digital Networked Knight"
GAZ

GAZ (статус: Посетитель), 3 марта 2010, 19:34 [#2]:

DNK

бери OnDrawCell и чуди как хочешь
DNK

DNK (статус: Студент), 3 марта 2010, 22:12 [#3]:

Раз тебе известно об OnDrawCell, то какие могут быть проблемы с анализом цвета ячейки.
"Digital Networked Knight"
GAZ

GAZ (статус: Посетитель), 4 марта 2010, 06:10 [#4]:

DNK

У отдельной ячейки нет свойства Color
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 4 марта 2010, 12:47 [#5]:

GAZ:
Если отрисовка ручная, то цвета ячеек надо вручную хранить. Либо 1) использовать двумерный массив на TColor, либо 2) воспользоваться свойством Tag, либо как-то ещё по-своему.
Вадим К

Вадим К (статус: Академик), 4 марта 2010, 12:57 [#6]:

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

Но если сильно хочется именно "брать цвет" (ну мало как хочется), то можно.
для начала по координатам ячейки проверяем ее координаты
l := StringGrid1.CellRect(5,5).Left,
t := StringGrid1.CellRect(5,5).Top

теперь, можно у канвы подсмотреть цвет
StringGrid1.Canvas.pixels[l+1, t+1]
Галочка "подтверждения прочтения" - вселенское зло.
GAZ

GAZ (статус: Посетитель), 5 марта 2010, 06:53 [#7]:

Вадим К
У Вас единственного есть разумное зерно в ответе,может и с первым вопросом поможете.Просто я думаю что обычный клик в качестве обработчика не подойдёт.
Вадим К

Вадим К (статус: Академик), 5 марта 2010, 11:06 [#8]:

Тот код, который я предложил - это жуткий костыль и я настойчиво не рекомендую так писать. Именно НАСТОЙЧИВО!

Обработать надо не MouseDown (вроде так оно называется) или MouseUp - в зависимости от логики. там и координаты передаются:). так что если что, зная координаты самого StringGrid'a или воспользовавшись функциями преобразования координат (метод Screen...toClient - не помню точно) можно получить координаты для канвы... а дальше уже понятно.
Галочка "подтверждения прочтения" - вселенское зло.
DNK

DNK (статус: Студент), 5 марта 2010, 22:47 [#9]:

Меня терзают смутные сомнения: А был ли этот многоцветный StringGrid?
"Digital Networked Knight"

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:46
Выполнено за 0.02 сек.