Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить смещение скрола StringGrid'а 
:(
    Опции темы
artsb
Дата 12.12.2009, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Приветствую всех!

У меня проблема с рисованием ячеек StringGrid'a. Мне нужно спроецировать битмап. А проблема в том, что не могу получить ПРАВИЛЬНОЕ смещение скролов. Делаю так:
Код

 int posX, posY, min, max;
 TRect bmpRect;
 posX = GetScrollPos(sgTree->Handle, SB_HORZ);
 posY = GetScrollPos(sgTree->Handle, SB_VERT);
 GetScrollRange(sgTree->Handle, SB_HORZ, &min, &max);
 bmpRect.left = (float)Rect.left + ((max - min) / 100.0 * (float)posX);
 bmpRect.right = (float)Rect.right + ((max - min) / 100.0 * (float)posX);
 GetScrollRange(sgTree->Handle, SB_VERT, &min, &max);
 bmpRect.top = (float)Rect.top + ((max - min) / 100.0 * (float)posY);
 bmpRect.bottom = (float)Rect.bottom + ((max - min) / 100.0 * (float)posY);

но что-то не получатся  smile 


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
THandle
Дата 12.12.2009, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 25
Всего: 372



artsb, что понимается под правильным.

Приведи примеры цифр которые тебе бы хотелось получить.

В аттаче прикрепляю иллюстрацию движения скроллбара(Delphi).



Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  Scroll.rar 4,56 Kb
PM   Вверх
artsb
Дата 12.12.2009, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



THandle, у твоего кода такие же результаты, как и у моего.
Проблема в том, что когда скролы стоят в начале, всё отрисовывается отлично. Но если их прокрутить, изображение, которое я проецирую, уезжает вправо.
Мне нужно получить смещение в пикселях относительно начала координат, чтобы выдрать нужный кусок из битмапа.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
THandle
Дата 12.12.2009, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 25
Всего: 372



artsb, выложи тестовый проект, чтобы посмотреть что ты там делаешь. Я не очень понял какой битмап и куда ты его проецируешь)
PM   Вверх
artsb
Дата 12.12.2009, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Цитата(THandle @  12.12.2009,  12:34 Найти цитируемый пост)
Я не очень понял какой битмап и куда ты его проецируешь) 

На фоне стринггрида нужно нарисовать битмап - спроецировать.
Но я уже нашёл свою ошибку:
Код

 TCustomDrawGrid *dg = (TCustomDrawGrid *)Sender;
 TRect bmpRect;
 bmpRect.left = ACol * 20; // 20 - ширина столбцов
 bmpRect.right = bmpRect.left + 20;
 // т.к. высота строк у меня разная, считаю так:
 bmpRect.bottom = 0;
 for(int i=0; i<=ARow; i++) {
  bmpRect.bottom += dg->RowHeights[i];
 }
 bmpRect.top = bmpRect.bottom - dg->RowHeights[ARow];

Теперь всё работает. smile

Это сообщение отредактировал(а) artsb - 12.12.2009, 14:23


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.