Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > НЕ закрепляется на месте кнопка


Автор: BEST13 18.1.2010, 20:44
Здравствуйте, ув. программисты!
Мне нужно сделать панельку которая сворачиваться и разворачиваться. Я это реализовал так: на  панельке лежит GroupBox и Button, и у панельки свойство Auto Size=True.
http://radikal.ru/F/s003.radikal.ru/i204/1001/9c/8866515875a8.png.html
 И при нажатии  на кнопку свойство GroupBox.Visible  меняется на false. И мая панелька становиться размерам с кнопку(как бы сворачиваться). 
http://radikal.ru/F/s003.radikal.ru/i201/1001/64/33340cb350b8.png.html
А при повторном нажатии, всё возвращается на свои места, но кнопка остаеться слева, не так  как раньше. 
http://radikal.ru/F/i075.radikal.ru/1001/91/50dbdd44cf58.png.html 
КОД на кнопке
Код

IF sGroupBox_EDits.Visible then sGroupBox_EDits.Visible:=false
                             else sGroupBox_EDits.Visible:=true;

Подскажите правильное решение.
   

Автор: Frees 18.1.2010, 20:51
код можно гораздо проще написать
Код

 sGroupBox_EDits.Visible:=not sGroupBox_EDits.Visible;

а на скринах ниче не видно потому и не понятна проблема... посмотри у кнопки свойство  anchrs

Автор: Keeper89 18.1.2010, 20:51
Надо установить свойство Align у компонентов:
  • Для первых 2-ух (GroupBox и Button) - alLeft
  • Для панели с таблицей - alClient

Автор: BEST13 18.1.2010, 21:07
Цитата(Frees @  18.1.2010,  20:51 Найти цитируемый пост)
код можно гораздо проще написатькод Pascal/Delphi1: sGroupBox_EDits.Visible:=not sGroupBox_EDits.Visible;highlightSyntax('delphi_kwYTI2','delphi');а на скринах ниче не видно потому и не понятна проблема... посмотри у кнопки свойство  anchrs


Спасибо за код, так действительно рациональней. С этим свойством игрался результата ноль. 
А на скринах всё видно, если на них нажать. Проблема в кнопке с символами "<<". Разницу в её положение хорошо видно, если сравнить 1 и 3 скрины. 

Цитата(Keeper89 @  18.1.2010,  20:51 Найти цитируемый пост)
адо установить свойство Align у компонентов:Для первых 2-ух (GroupBox и Button) - alLeftДля панели с таблицей - alClient

На панельки с GroupBox и Button  стоит - alLeft, и для таблицы - alClient. 
  

Автор: Frees 18.1.2010, 23:21
ОФФ
Цитата(BEST13 @  19.1.2010,  00:07 Найти цитируемый пост)
А на скринах всё видно, если на них нажать

под оперой вместо скринов ссылки на мианитюры в полном размере картинки нет

а если Button алигн alRight сделать?

Автор: Frees 18.1.2010, 23:40
убери автосайз
у кнопки anchors = [akTop,akRight]

код
Код

 sGroupBox_EDits.Visible := not sGroupBox_EDits.Visible;
  if sGroupBox_EDits.Visible then
    sGroupBox_EDits.Parent.width := sGroupBox_EDits.Parent.width + sGroupBox_EDits.Width
  else
    sGroupBox_EDits.Parent.width := sGroupBox_EDits.Parent.width - sGroupBox_EDits.Width;


вот как то так....

Автор: BEST13 18.1.2010, 23:55
Цитата(Frees @  18.1.2010,  23:40 Найти цитируемый пост)

убери автосайзу кнопки anchors = [akTop,akRight]
Код

sGroupBox_EDits.Visible := not sGroupBox_EDits.Visible;  
if sGroupBox_EDits.Visible then     
                         GroupBox_EDits.Parent.width := sGroupBox_EDits.Parent.width + sGroupBox_EDits.Width  
                        else    
                         sGroupBox_EDits.Parent.width := sGroupBox_EDits.Parent.width - sGroupBox_EDits.Width;

вот как то так....

Спасибо, все +тебе

Добавлено через 2 минуты и 4 секунды
Сорри, нету 100 сообщений.

Автор: eyelesss 19.1.2010, 06:29
а не проще ли использовать уже готовые компоненты?
например, из библиотеки jvcl компонент TJvRollOut

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