Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Полосы прокрутки в StringGrid, как получить размеры заданные в системе 
V
    Опции темы
psix
Дата 23.1.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.1.2005
Где: Н-ск

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



Имеется ограниченное пространство на форме, по нему и формируется Ширина и Высота всего объекта StringGrid, в зависимости от количества данных попадаемых в него. Данные полностью помещаются в заранее определенную ширину ячейки как StringGrid->DefaultColWidth = 90, высота определяется как StringGrid->DefaultRowHeight = 20;

вот код:
Код

static int GridWidth=0, GridHeight=0, GridRowCnt=0, GridColCnt=0;
static TScrollStyle GridScroll;
    const maxRow = 15, maxCol = 8; 
           //максимально допустимое количество строк и столбцов на форме, соответственно. 
    GridColCnt = зависит от значения некоторой функции;
    GridRowCnt = зависит от значения некоторой функции;
    StringGrid->ColCount=GridColCnt;
    StringGrid->RowCount=GridRowCnt;
           //это только случай, когда число получающихся столбцов больше максимального
    if (GridColCnt > maxCol) {
        GridWidth=maxCol*StringGrid->DefaultColWidth+maxCol+1; 
           // maxCol+1 - это еще прибавляется толщина разделительных линий = 1;
        GridHeight=GridRowCnt*StringGrid->DefaultRowHeight+27; 
           // число 27 подобрано из опыта =))) в нём и загвоздка.
        GridScroll=ssHorizontal;
    }
    else {
        GridWidth=GridColCnt*StringGrid->DefaultColWidth+GridColCnt+1;
        GridHeight=GridRowCnt*StringGrid->DefaultRowHeight+GridRowCnt+1;
        GridScroll=ssNone;    
    }
    StringGrid->Height=GridHeight;
    StringGrid->Width=GridWidth;
    StringGrid->ScrollBars=GridScroll; 

Так вот, собственно, вопрос: Каким образом узнать высоту (ширину, в случае с "перебором" в строках, хотя значение одно и тоже) полосы прокрутки установленной в системе, чтобы получить аккуратный StringGrid, в котором, если количество столбцов (строк) больше максимального появляется горизонтальная (вертикальная) полоса прокрутки. Чтобы эта полоса прокрутки не перекрывала последнюю строку (столбец), и не отстояла от нее на расстоянии.
PM   Вверх
_hunter
Дата 23.1.2006, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



ориентируйся не на Heigth/Width сетки а на ClientHeigth/ClientWidth


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
psix
Дата 24.1.2006, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.1.2005
Где: Н-ск

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



Красота!!! За-ра-бо-та-ло! smile
только тяперча код несколько видоизмениться:

Код

if (GridColCnt > maxCol) {
        GridWidth=maxCol*StringGrid->DefaultColWidth+maxCol-1; 
           //так как не имеет значение теперь толщина Бордера СтрингГрида равная 2 если GridLineWidth=1; 
        GridHeight=GridRowCnt*StringGrid->DefaultRowHeight+GridRowCnt-1; 
        GridScroll=ssHorizontal;
    }
    else {
        GridWidth=GridColCnt*StringGrid->DefaultColWidth+GridColCnt-1;
        GridHeight=GridRowCnt*StringGrid->DefaultRowHeight+GridRowCnt-1;
        GridScroll=ssNone;    
    }
    StringGrid->ScrollBars=GridScroll;    
    StringGrid->ClientHeight=GridHeight;
    StringGrid->ClientWidth=GridWidth;


благодарствую!

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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