2009-09-12 10 views
1

Le contrôle TScrollBox semble être essentiellement un TPanel avec des barres de défilement attachées le long du bord inférieur et le bord droit. J'ai essayé de placer un sur un formulaire, mais peu importe ce que je fais, je ne peux pas faire apparaître les barres de défilement, que ce soit au moment de la conception ou à l'exécution. Est-ce que quelqu'un sait comment les faire apparaître?Comment faire apparaître les barres de défilement sur une TScrollBox?

Répondre

3

Définissez la propriété AutoScroll sur True.
Maintenant, si vous ajoutez des contrôles clip les bordures de la boîte, les barres apparaîtront.

+0

OK, on ​​dirait que j'ai le mauvais contrôle, alors. J'ai besoin de barres de défilement qui peuvent être contrôlées par programme, en fonction d'autres facteurs que les tailles et les positions des contrôles à l'intérieur de la boîte. –

+0

@Mason Wheeler, dans le cas où vous ne trouvez pas un contrôle approprié pour votre tâche, une solution * laid * sera de placer un panneau à l'intérieur de la boîte de défilement. En redimensionnant le panneau, vous pouvez ajuster les barres de défilement. Tout autre contrôle doit résider sur ce panneau. Bien sûr, si vous avez besoin de plus de contrôle, vous pouvez toujours utiliser les contrôles TScrollBar. –

2

Mason

Vous ne pouvez pas voir les barres de défilement jusqu'à ce qu'il ya en fait quelque chose pour faire défiler.

Pour voir les barres de défilement essayer cette

1.Réglez la propriété BorderStyle du formulaire à bsSingle

2.Insérez un bouton dans une forme

3.Put une barre de défilement sous une forme

4.Définir la propriété Align du TScrollBox à alClient

5.Run ce code dans un bouton clic

procedure TForm10.Button1Click(Sender: TObject); 
Var 
i : integer; 
ed : TEdit; 
begin 
      for i:=1 to 30 do 
      Begin 
       ed:=TEdit.Create(self); 
       ed.Parent:=ScrollBox1; 
       ed.Top:=5+((i-1)*30); 
       ed.Left:=10; 
       ed.Width:=100; 
       ed.Text:='Editext'+ IntToStr(i); 
      End; 
end; 

Salut.

0

Si je ne me trompe pas (pas de Delphi à vérifier), il suffit de régler HorzScrollBar.Range assez grand.

EDIT: IIUC ce DFM fait ce que vous voulez - entièrement au moment de la conception:

object Form1: TForm1 
    Left = 0 
    Top = 0 
    Caption = 'Form1' 
    ClientHeight = 206 
    ClientWidth = 312 
    Color = clBtnFace 
    ParentFont = True 
    OldCreateOrder = True 
    PixelsPerInch = 96 
    TextHeight = 13 
    object ScrollBox1: TScrollBox 
    Left = 8 
    Top = 8 
    Width = 150 
    Height = 150 
    HorzScrollBar.Range = 300 
    VertScrollBar.Range = 300 
    AutoScroll = False 
    TabOrder = 0 
    end 
end 
Questions connexes