Главная страница
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.05 c
2-1175192929
aleko
2007-03-29 22:28
2007.04.22
ReadBuffer & WriteBuffer


1-1172505251
Inna_Z
2007-02-26 18:54
2007.04.22
Ошибке при динамоческой загрузке BPL


2-1174936807
ДухКороляАртура
2007-03-26 23:20
2007.04.22
smtp и windows-1251


2-1175254920
Alex_C
2007-03-30 15:42
2007.04.22
При FreeLibrary( hDLL ) основное окно проги пропадает


2-1175587955
npu3pak
2007-04-03 12:12
2007.04.22
Автоматическое обновление текстовых полей