![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| ACMilian |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 5.9.2006 Где: Беларусь Репутация: нет Всего: нет |
Привет всем!
Есть такой вопрос. Как определить координаты внтури ячейки StringGrida именно Cells[0,0] Т.е. к примеру, ячейка визуально разделена на верхнюю и нижнюю половину. И если кликаешь на верхнюю половину, то одно действие, а если на нижнюю, то другое. Элементарно, наверное, но не могу понять как. Хэлп, кто может. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
CellRect ?
-------------------- There are always someone smarter than you... |
|||
|
||||
| ACMilian |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 5.9.2006 Где: Беларусь Репутация: нет Всего: нет |
Вроде нет. Необходимы координаты внутри самой ячейки. В ней находятся два рисунка "Плюс" и "Минус". Один в верхней части ячейки, а второй в нижней. И вот по клику на какой-то из этих рисунков надо, определить на какой именно был произведён клик.
А CellRect вернёт только координаты прямоугольника ячейки. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
и что? так раздели прямоугольник ячейки на два... + PtInRect
-------------------- There are always someone smarter than you... |
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
Так обрабатывай событие с рисунка...
-------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| ACMilian |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 5.9.2006 Где: Беларусь Репутация: нет Всего: нет |
MetalFan, сейчас поищу в документации.. remax, Можно пример? |
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
Пример чего? Ты сам сказал,
Рисунки ты добавляешь динамически, так? Компонент TImage? Создай процедуру для обработки события OnClick. Когда создаешь рисунки, добавляй ссылку на эту процедуру. И, скажем, заполняй еще свойство Tag для этих компонент разнными значениями. Например, 1 и 2. В самой процедуре ты узнаешь на какой рисунок кликнули через параметр Sender. Годится? Это сообщение отредактировал(а) remax - 9.1.2008, 18:46 -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
о ужас, если так... -------------------- There are always someone smarter than you... |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 6 Всего: 111 |
||||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
-------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 6 Всего: 111 |
ЧЕРНОВОЙ код:
r.Top -- Y координата верхней границы клетки. (r.Bottom - r.Top) -- высота клетки StringGrid1.ScreenToClient(Mouse.CursorPos).Y -- позиция мышиного курсора в координатых StringGrid-а. Т.е. относительно его левого верхнего края |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
т.о. если допустим 100 ячеек, то будет создано 200 компонентов TImage? жэсть -------------------- There are always someone smarter than you... |
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
Нет, не обязательно. Я не совсем понимаю, зачем автору темы эта нужно, но подобный прием я использовал сам. Когда потребовалось обеспечить контроль ввода данных в ячейку, то использовался дополнительный TJvCalcEdit. При обращении к данным текущей ячейки, он автоматически подстраивал свой размер под ячейку и принимал данные из нее. При завершении редактирования данные копировались обратно в ячейку, а JvCalcEdit прятался. Здесь, возможно, (а точнее можно узнать только у автора темы) предполагается изменение значения в соседней ячейке. Принцип тот же. По мере необходимости создаем (делаем видимыми) доп.элементы управления (картинки). После использования (перевод фокуса на другую ячейку) передвигаем эти элементы. Выходим за границу грида - убиваем (или прячем) эти две картинки. т.е. в любой момент времени у нас этих картинок не больше двух. -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| ACMilian |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 5.9.2006 Где: Беларусь Репутация: нет Всего: нет |
Вот этот код подошёл. Только деление поменял.
По поводу зачем мне это надо. В гриде в ячейке [0,0] вносятся плюс и минус. Это фиксированная строка, дальше в ней идут заголовки столбцов. Картинки я биру из ImageList. И рисую их в событии DrawCell. Картинок всего 4(+ и - серого цвета и + и - синего цвета). + и - синего цвета рисутются только в ячейку [0,0]. Использую их для того чтобы по клику можно было полностью "раскрывать" СтринГрид или "закрывать". А + и - серого цвета вносятся в 0 столбце по каждой строке и раскрывают или закрывают только одну сторку. Вот в принципе и всё. Всем спасибо. |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 3 Всего: 158 |
||||
|
||||
| ACMilian |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 5.9.2006 Где: Беларусь Репутация: нет Всего: нет |
Может и проще. не работал никогда с VirtualTreeView.
Вот картинка как у мне надо было. Присоединённый файл ( Кол-во скачиваний: 10 )
grid.rar 68,80 Kb |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |