RAD Studio VCL Reference
ContentsIndex
PreviousUpNext
TSplitter.MinSize Property

Specifies the minimum size, in pixels, of the panes on either side of the splitter.

Pascal
property MinSize: NaturalNumber;
C++
__property NaturalNumber MinSize;

Set MinSize to provide a minimum size the splitter must leave when resizing its neighboring control. For example, if the Align property is alLeft or alRight, the splitter cannot resize the regions to its left or right any smaller than MinSize pixels. If the Align property is alTop or alBottom, the splitter cannot resize the regions above or below it any smaller than MinSize pixels. The default value of MinSize is 30.

Note: Always set MinSize to a value less than half the client width of its parent. When MinSize is half the client width of the splitter's parent, the splitter cannot move because to do so would be to resize one of the panes less than MinSize pixels.
 

C++ Examples: 

 

/*
This example shows how to use a splitter to divide a form 
into resizable panes.  All objects on the form are created 
dynamically in the OnCreate event handler of the form. To 
run this example, add ExtCtrls and FileCtrl to the uses 
clause of the form’s implementation section.
Note that when creating a splitter dynamically at runtime, 
it is important to set its position to the appropriate side 
of the control it will resize.
*/

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  TSplitter* ps = new TSplitter(Form1); // These objects will all be cleaned up by the owner (Form1).
  TFileListBox* pflb = new TFileListBox(Form1); // The parent (Form1) will clean up these objects.
  TDirectoryListBox* pdlb = new TDirectoryListBox(Form1);

  // Line up the directory list box on the left of the form.
  pdlb->Parent = Form1;
  pdlb->Align = alLeft;
  pdlb->Width = Form1->ClientWidth/3;

  // Now use the splitter to divide the directory pane from the file pane.
  ps->Parent = Form1;
  ps->Left = pdlb->Left + pdlb->Width + 1; // Move to right of directory list.
  ps->Align = pdlb->Align; // Give same alignment as directory list.

  // Each pane must be at least one quarter of the form's width.
  ps->MinSize = Form1->ClientWidth/4;

  // Finally, create the last pane - a file list box.
  pflb->Parent = Form1;
  pflb->Align = alClient;
  pdlb->FileList = pflb; // Link the file list box to the directory list box.
}

 

Delphi Examples: 

{
This example shows how to use a splitter to divide a form 
into resizable panes.  All objects on the form are created 
dynamically in the OnCreate event handler of the form. To 
run this example, add ExtCtrls and FileCtrl to the uses 
clause of the form’s implementation section.
Note that when creating a splitter dynamically at runtime, 
it is important to set its position to the appropriate side 
of the control it will resize.
} 
procedure TForm1.FormCreate(Sender: TObject);
var
  Split: TSplitter;
  Files: TFileListBox;
  Dirs: TDirectoryListBox;
begin
  { first add a directory list box to the form }
  Dirs := TDirectoryListBox.Create(Form1);
  { line it up on the left of the form }
  Dirs.Parent := Form1;
  Dirs.Align := alLeft;
  Dirs.Width := Form1.ClientWidth div 3;
{ now add the splitter to divide the directory pane from the file pane }
  Split := TSplitter.Create(Form1);
  Split.Parent := Form1;
  { make sure the splitter is to the right of the directory list box! }
  Split.Left := Dirs.Left + Dirs.Width + 1;
  Split.Align := Dirs.Align; { give it the same alignment as the directory }
  { each pane must be at least one quarter of the form’s width }
  Split.MinSize := Form1.ClientWidth div 4;
  { Finally, create the last pane – a file list box }
  Files := TFileListBox.Create(Form1);
  Files.Parent := Form1;
  Files.Align := alClient;
  Dirs.FileList := Files; { link the file list box to the directory list box }
end;

 

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!