Форум: "Начинающим";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];
ВнизСкроллер на панели Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.048 c