![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Компонент 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;
Все равно не крутит в панели. Может чего я не добавил?