Установка выравнивания ListBox на alLeft вызывает изменение размеров ListBox при любом изменении размеров формы. Установка ширины происходит очень легко (помните о том, что ширина Width, которую вы видите в правой части строки, является свойством Width формы).
Количество элементов, хранимых ListBox, ограничено только доступной памятью.
procedure TForm1.CreateListBox; var LB : TListBox; begin LB := TListBox.Create; LB.Align := alLeft; LB.Width := Width div 2; end; |
Вот логика динамического создания ListBox и изменения его размера при изменения размеров формы. Я надеюсь, что помог вам. Также я подозреваю, что данные ListBox ограничены 32 килобайтами.
unit Unit1; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls { вам нужно это для ListBox } ; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormResize(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; listbox: TListBox ; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin listbox := TListBox.Create(self) ; listbox.Parent := self ; listbox.Top := 0 ; listbox.Left := 0 ; listbox.Width := self.Width div 2 ; listbox.Height := self.Height div 2 ; listbox.items.add('тест 1') ; listbox.items.add('тест 2') ; { и т.д, и т.п. ... } end; procedure TForm1.FormResize(Sender: TObject); begin listbox.Width := self.Width div 2 ; listbox.Height := self.Height div 2 ; end; end. |
[001492]