Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > "Раздвижение" панели в стороны


Автор: mr.Anderson 30.11.2006, 16:33
Задача. На форме находится TPanel, у которой изначально Visible = FALSE. Нужно программно разместить панель в центре формы по горизонтали, Panel->Height задать в высоту формы. А затем нужно прописать код, чтобы панелька "расползлась" от центра влево и вправо одновременно.
Я накидал следующий код:
Код

Panel->Width = 0;
Panel->Height = fx;
Panel->Left = Form->Width / 2;
Panel->Top = 0;

for( int i=0, j=0; i<=fx, j<=fy; i++, j++ )
{
 Panel->Width = i;
 --Panel->Left;
}

Но панелька раздвигается почему-то только влево. Помогите, чего наврал, не могу понять.

Автор: _hunter 30.11.2006, 16:46
это потуму как раздвижение вправо гасится раздвижением влево smile (тот пиксель, что ты прибавляеш к длине уходит налево). длину нужно на два пикселя увеличивать.

Автор: witex 30.11.2006, 16:58
Код

for( int i=0, j=0; i<=fx, j<=fy; i+=2, j++ )

Так пропиши.. и должно получиться!

Автор: _hunter 30.11.2006, 18:27
ты это 12 минут писал???

Автор: witex 30.11.2006, 18:41
С чего ты взял? 
???
я ваабщето на форум после тебя залез! и не сразу

Автор: _hunter 30.11.2006, 18:52
взял это с разницы в 12 минут между постами и предположения что дублировать посты (скажем так) неприлично

Автор: witex 30.11.2006, 18:56
Вот именно что залез гдето через минут десять! Посмотрел!
И не продублировать!
И лишь сразу показал как, бывает население не понимает, словесное объяснение!
Так что не обижайся!

Автор: mr.Anderson 30.11.2006, 19:16
Кстати, забыл упомянуть. Я так уже пробовал. Увеличивал и на два, и на три... Все равно та же картина, только она раздвигается влево еще быстрее. Быстрее в два раза.

Автор: Vyacheslav 30.11.2006, 19:35
Ищи ошибку у себя. Развдигается нормально в обе стороны
Код

    for (int i = 0; i < Width; i+=2)
    {
          Panel1->Width = i;
          Panel1->Left--;
          for (int j = 0; j < 100000; j++) {
            Application->ProcessMessages();
          }
    }


Автор: mr.Anderson 30.11.2006, 21:25
Упсь. I'm sorry. smile Глупо не исправил в коде ошибку. У меня вместо
Код

Panel->Width = i;

Было
Код

Panel->Width = 1;

И, разумеется, любое значение I роли не играло. Глупо и досадно. smile Но по крайней мере все действительно работает, как и должно было по логике. Всем спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)