C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: FlowPanel и полоса прокрутки  (Прочитано 3038 раз)
direk
Участник


Сказали спасибо: +6/-0
Offline

Сообщений: 79


FlowPanel и полоса прокрутки
« : 11 Февраль 2014, 20:12:52 »

Есть FlowPanel,  на ней динамически создаются компоненты. Количество компонентов неизвестно.


          
Код
 TButton *button = new TButton(FlowPanel1);
button->Caption = "тест";
button->Parent = FlowPanel1 ;

По умолчанию, насколько я понял, прокрутки в FlowPanel нет. Как тогда быть,
 если количество компонентов выходить за рамки FlowPanel ?

Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


Re: FlowPanel и полоса прокрутки
« Ответ #1 : 12 Февраль 2014, 08:28:51 »

Посчитай координату Y от верха до низа. И посредством scrollby контейнера пролистывай.
Записан
direk
Участник


Сказали спасибо: +6/-0
Offline

Сообщений: 79


Re: FlowPanel и полоса прокрутки
« Ответ #2 : 13 Февраль 2014, 18:03:44 »

Цитата: POV от 12 Февраль 2014, 08:28:51
Посчитай координату Y от верха до низа. И посредством scrollby контейнера пролистывай.
- не совсем понял как ето сделать

Сейчас делаю так - на форму ставлю ScrollBox, а в него уже FlowPanel
 пишу обработку:

Код
void __fastcall TEditFilm::FormResize(TObject *Sender)
{
RzFlowPanel1->Height = ScrollBox1->Height - 24;
RzFlowPanel1->Width = ScrollBox1->Width - 5;
}

А теперь о проблеме. Как определить, что компоненты уже выходят за рамки RzFlowPanel1???

Потому как если визуально смотреть, и вручную нажимать хитрые кнопки, то полоса прокрутки в нужный момент появляется.

Код
void __fastcall TEditFilm::Button1Click(TObject *Sender)
{
   RzFlowPanel1->Height =      RzFlowPanel1->Height + 100 ;
}
//---------------------------------------------------------------------------
 
void __fastcall TEditFilm::Button2Click(TObject *Sender)
{
    RzFlowPanel1->Height =      RzFlowPanel1->Height - 100 ;
}

Но хочется, что бы нужный размер подбирался сам. Как можно это автоматизировать?
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


Re: FlowPanel и полоса прокрутки
« Ответ #3 : 14 Февраль 2014, 12:12:39 »

Цитата: direk от 13 Февраль 2014, 18:03:44
не совсем понял как ето сделать

Панель - контейнер. У него есть массив компонент. Все их перебираешь ища минимальное Top и максимальное Top+Height.
Из разница - есть доступное для прокрутки число пикселей по вертикали.
Вызываешь ScrollBy панели. Первый параметр (по Х) = 0, второй - то, на сколько тебе хочется пролистать.
Записан
direk
Участник


Сказали спасибо: +6/-0
Offline

Сообщений: 79


Re: FlowPanel и полоса прокрутки
« Ответ #4 : 15 Февраль 2014, 14:15:17 »

POV, спасибо за подсказку. Реализовал все это дело в таком виде:


 
Код
  for (int i = 0; i  10; i++)
  {
 
Stream->Clear();
Stream->Position = 0;
 
 
TJPEGImage *imagFOTO2 = new TJPEGImage;
 
imagFOTO2->LoadFromStream(Stream);
TImage *image = new TImage(RzFlowPanel1);
image->Parent = RzFlowPanel1;
image->Stretch  = true;
image->Proportional = true;
image->Center = true;
image->Width = 300;
image->Height =300;
image->AlignWithMargins = true;
 
image->Canvas->Draw(0,0,imagFOTO2);
image->Picture->Assign(imagFOTO2);
   }
 
 
void __fastcall TEditFilm::RzFlowPanel1Resize(TObject *Sender)
{
 RzFlowPanel1->Width = ScrollBox1->Width - 24;
 
 TImage *image = (TImage *) RzFlowPanel1->Components[RzFlowPanel1->ControlCount-1];
 RzFlowPanel1->Height =  image->Top +350;
 
}
Р.С. Может кому пригодится...
Записан
Sergey1985
Участник


Сказали спасибо: +8/-1
Offline

Сообщений: 310


Re: FlowPanel и полоса прокрутки
« Ответ #5 : 26 Февраль 2014, 09:07:22 »

Для этих целей нужно использовать ScrollBox1 и не изобретать велосипед
Записан
direk
Участник


Сказали спасибо: +6/-0
Offline

Сообщений: 79


Re: FlowPanel и полоса прокрутки
« Ответ #6 : 26 Февраль 2014, 21:55:22 »

Цитата: Sergey1985 от 26 Февраль 2014, 09:07:22
Для этих целей нужно использовать ScrollBox1 и не изобретать велосипед

ну так я  про что??? Читайте внимательней...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.115 секунд. Запросов: 21.