Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.058 c
15-1174876350
Slider007
2007-03-26 06:32
2007.04.22
С днем рождения ! 25 марта


2-1175345871
ctudent
2007-03-31 16:57
2007.04.22
как узнать заголовок странички в инете


15-1174899957
db2admin
2007-03-26 13:05
2007.04.22
Где достать информацию по IntelliJ Idea на русском?


2-1175502435
Grant
2007-04-02 12:27
2007.04.22
Создание exe файла


2-1175164323
DmitrichJ
2007-03-29 14:32
2007.04.22
Как узнать свой адрес к программе при запуске?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский