Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.22;
Скачать: CL | DM;

Вниз

Скроллер на панели   Найти похожие ветки 

 
Steep ©   (2007-04-04 10:15) [0]

Добрый день!
Хотел бы узнать как сделать так чтобы если на панели не хватает места (т.е. динамичски создаваемая кнопка если создается дальше чем находится видимая область) появлялась прокрутка (скроллер или что там еще) и скроллером можно было прокручивать панель...

PS надеюсь правильно выразился


 
SergGG ©   (2007-04-04 10:59) [1]

Попробуй код:

{dfm}
object Form1: TForm1
 Left = 186
 Top = 106
 Width = 696
 Height = 480
 Caption = "Form1"
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = "MS Sans Serif"
 Font.Style = []
 OldCreateOrder = False
 OnPaint = FormPaint
 OnResize = FormResize
 PixelsPerInch = 96
 TextHeight = 13
  object Panel1: TPanel
   Left = 264
   Top = 56
   Width = 249
   Height = 185
   Caption = "Panel1"
   TabOrder = 1
   object Panel2: TPanel
     Left = 0
     Top = 0
     Width = 249
     Height = 285
     Caption = "Panel2"
     Color = clBtnHighlight
     TabOrder = 0
   end
   object ScrollBar1: TScrollBar
     Left = 232
     Top = 1
     Width = 16
     Height = 183
     Align = alRight
     Kind = sbVertical
     Max = 2
     PageSize = 0
     TabOrder = 1
     OnChange = ScrollBar1Change
   end
 end
........
{pas}
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
 ScrollBar1.Max:=Panel2.Height;
 ScrollBar1.Min:=Panel1.Height;
 Panel2.Top:=ScrollBar1.Position-Panel2.Height;
end;

На Panel2 создавай кнопки


 
Steep ©   (2007-04-04 12:15) [2]

Не как я понял легче не на панели создавать а на скролбоксе ;)
Он сам и прокручивает ;)


 
Steep ©   (2007-04-04 12:19) [3]

Только вопрос как сделать чтобы прокрутка сразу была видно (не не работала типа Enabled := false), а не появлялось только когда больше (а просто типа Enabled := true)


 
SergGG ©   (2007-04-04 12:40) [4]

Вы хотите сказать, чтобы ScrollBar был виден всегда или когда увеличивается поле?
Если всегда, то См. [1]
Если при увеличении поля, то надо следить за Panel2.height.
Т.е. Если Panel2.height>Panel1.height, то ScrollBar.Visible:=True, иначе
ScrollBar.Visible:=False


 
Steep ©   (2007-04-04 12:42) [5]

нет от панелек я вобще отказался ;)
Я создаю кнопки прям на ScrollBox..
И уже в самом ScrollBox я хотел бы чтобы было виден ScrollBar..
Вот так...


 
Steep ©   (2007-04-04 13:38) [6]

И еще вопросик- создаю я кнопки

procedure TFrm_RunPanel.Button1Click(Sender: TObject);
begin
 With TSpeedButton.Create(Self) do
 begin
   //Parent := IconPanel;
   Parent := ScrollBox1;
   SetBounds( 1, (32*FBC)+(1*(FBC+1)), 32, 32 );
   Caption := IntToStr(FBC);//"Кнопка";
   Glyph.LoadFromFile("FastButton.bmp");
   Name := "FastButton"+IntToStr(FBC);
   Anchors := [akTop, akLeft];
   inc(FBC);
   OnClick :=FastButtonClick;
 end;
end;


И событие у меня на них на все одно OnClick :=FastButtonClick;
и оно заранее описано..
а как сделать на каждую новую созданную кнопку свое событие?


 
SergGG ©   (2007-04-04 14:17) [7]

> а как сделать на каждую новую созданную кнопку свое событие?

в процедуре FastButtonClick
TTSpeedButton(Sender).name
для каждой кнопки имеет свой


 
{RASkov}   (2007-04-04 15:08) [8]

> а как сделать на каждую новую созданную кнопку свое событие?

Ну и присвайвай не OnClick :=FastButtonClick;, а нужное... т.е. вместо FastButtonClick; подставляй любой совместимый(TNotifyEvent) метод.
Для этого создание кнопки вынеси в отдельную процедуру, например так:

procedure CreateMyButton(.....; Evn: TNotifyEvent);
begin
 ....
 OnClick:=Evn;
 ....
end;


 
Steep ©   (2007-04-04 15:21) [9]

О пасип!



Страницы: 1 вся ветка

Текущий архив: 2007.04.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.052 c
2-1175438502
Alexey (AZ)
2007-04-01 18:41
2007.04.22
Дважды открыть файл (RW и R режимы).


15-1174644621
Post_
2007-03-23 13:10
2007.04.22
Крякалка


2-1175328074
DeadTeachers
2007-03-31 12:01
2007.04.22
Как сохранить ссылки?


2-1175055373
npu3pak
2007-03-28 08:16
2007.04.22
Как добавить новые строки в базу на accesse?


15-1175167188
Чапаев
2007-03-29 15:19
2007.04.22
Виста рулит!