Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Компонент ScroolBar [D6, Win95/98]


Gus ©   (2005-07-20 18:04:00) 

Здравствуйте.
А есть какая либо подвязка компонента ScroolBar к другим компонентам?
Вот допустим я размещаю скролинг на компоненте Panel. В панели, кнопок больше чем она может вместить. А скролинг как то сам по себе работает.
Если на форме элементов больше, чем она может вместить, то скролинг появляется автоматически.
Мастера, как подвязать скролинг к панели?


Gus   (2005-07-20 19:41:00) [1]

А вот, допустим, код:
Где то, когда то, в какой то процедуре написано так:
 

   with TBitBtn.Create(Self) do
   begin
     Top :=10;
     Left :=10;
     Caption := "Пример";
     Parent :=Panel1;
   end;   // Т.е. кнопки расположены на панели.

А каким способом можно сделать, чтобы они внутри по скролингу "ездили"?


Gus   (2005-07-20 19:26:00) [2]

Ага, с кнопкой заработало
А, например, как быть если в панели расположены кроме кнопок еще объекты?
Это значит для каждого условие прописывать?


Lexer   (2005-07-20 18:54:00) [3]

FTop- приватная переменная

FTop := Button1.Top

procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
if Sender as TScrollBar = ScrollBar1 then
 Button1.Top:= FTop + ScrollBar1.Position;
end;


Кнопка перемещается в панели, если конечно она находится на панели


Gus   (2005-07-20 18:49:00) [4]

Это опять я. Товарищ Lexer, ваш способ действует, но он перемещает либо саму кнопку, либо панель по фомре. А можно фрагмент кода чтоб кнопка перемещалась в панели?

procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
 if Sender as TScrollBar = ScrollBar1 then
  Panel1.Top:= Panel1.Top + ScrollBar1.Position;
end;
Вот так вот у меня получилось


Lexer   (2005-07-20 18:30:00) [5]

Для вертикальной прокрутки кнопки на панели можно сделать так:

FTop := Button1.Top;

В событие ScrollBarChange:
 if Sender as TScrollBar = ScrollBar then
   Button1.Top := FTop - ScrollBar.Position;


Gus   (2005-07-20 18:30:00) [6]

Вот только на FAQ нашел

procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
 var ScrollPos: Integer);
begin
 Panel1.Perform(WM_VSCROLL, MAKEWPARAM(SB_THUMBPOSITION, ScrollPos), 0);
end;

Все равно не крутит в панели. Может чего я не добавил?


Наверх

Титульная страница Поиск, карта сайта Написать письмо