Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как подогнать размера внешней рамки StringGrid ... под ячейки... 
:(
    Опции темы
=Женек=
Дата 23.4.2009, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

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



ПРобовал так:
Код

BallsGrid->Height=BallsGrid->RowCount*22+4;
/*
GridWidth=0;
for (i = 0; i < BallsGrid->ColCount; i++)
{
 GridWidth=GridWidth+BallsGrid->ColWidths[i];
BallsGrid->Cells[i][1]=BallsGrid->ColWidths[i];
 }


BallsGrid->Width=GridWidth;


Не получается - почему-то неверно определяет размеры некоторых ячеек. Мне кажется что это как-то связано с тем, что я отрисовываю ячекйи в OnDrawCell.
Может быть есть какие-то настройки, которые позволяют автоматом подгонять внешнюю рамку к краям ячеек?
PM MAIL   Вверх
artsb
Дата 23.4.2009, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(=Женек= @  23.4.2009,  20:55 Найти цитируемый пост)
Мне кажется что это как-то связано с тем, что я отрисовываю ячекйи в OnDrawCell

Правильно. 
Пробуйте так:
Код

// высота
int h = 0;
for(int i=0; i<BallsGrid->RowCount; i++)
  h += BallsGrid->RowHeights[i];
BallsGrid->Height=h+4;
// ширина
int w = 0;
for(int i=0; i<BallsGrid->ColCount; i++)
  w += BallsGrid->ColWidths[i];
BallsGrid->Width=w+4;



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


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

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



 ТОгда как скрестить это:

Код

// высота
int h = 0;
for(int i=0; i<BallsGrid->RowCount; i++)
  h += BallsGrid->RowHeights[i];
BallsGrid->Height=h+4;
// ширина
int w = 0;
for(int i=0; i<BallsGrid->ColCount; i++)
  w += BallsGrid->ColWidths[i];
BallsGrid->Width=w+4;




с этим:
Код



void __fastcall TForm1::BallsGridDrawCell(TObject *Sender, int ACol, int ARow,
      TRect &Rect, TGridDrawState State)
 {


    int w = BallsGrid->Canvas->TextWidth(BallsGrid->Cells[ACol][ARow]) + 10;
     if(w>BallsGrid->ColWidths[ACol])
        BallsGrid->ColWidths[ACol] = w;





}


Убираю вторую часть - внешняя рамка ОК, но внутри ерунда - размер не подгоняется.
Если обе части - появляется скролл и по вертикали и по горизонтали.
PM MAIL   Вверх
artsb
Дата 24.4.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



=Женек=, а вы куда вставили первую часть?

1. Попробуйте так:
Код

void __fastcall TForm1::BallsGridDrawCell(TObject *Sender, int ACol, int ARow,
      TRect &Rect, TGridDrawState State)
 {
    int w = BallsGrid->Canvas->TextWidth(BallsGrid->Cells[ACol][ARow]) + 10;
     if(w>BallsGrid->ColWidths[ACol])
     {
        BallsGrid->ColWidths[ACol] = w;
        // высота
        int h = 0;
        for(int i=0; i<BallsGrid->RowCount; i++)
          h += BallsGrid->RowHeights[i];
        BallsGrid->Height=h+4;
        // ширина
        int w = 0;
        for(int i=0; i<BallsGrid->ColCount; i++)
          w += BallsGrid->ColWidths[i];
        BallsGrid->Width=w+4;
     }
}

2. Либо увеличьте запас:
Код

BallsGrid->Height=h+10;
BallsGrid->Width=w+10;



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

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

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

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

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


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

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


 




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


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

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