1. ListBox에 추가할 Frame을 만듭니다.
간단하게 Label 하나와 Button 하나 그리고 ScrollBox를 추가하였습니다.
그리고 버튼에 클릭이벤트를 추가합니다.
procedure TFrame1.Button1Click(Sender: TObject);
begin
ShowMessage(Label1.Text);
end;
2. 메인에 ListBox를 추가합니다.
커스텀한 리스트 아이템을 추가하는 소스입니다.
procedure TForm1.btnAddItemClick(Sender: TObject);
var
item : TListBoxItem;
addFrame : TFrame1;
I : Integer;
begin
ListBox1.BeginUpdate;
for I := 0 to 9 do
begin
item := TListBoxItem.Create(ListBox1);
addFrame := TFrame1.Create(Self);
addFrame.Parent := item;
addFrame.Name := 'frmItem' + IntToStr(I);
addFrame.Label1.Text := IntToStr(I+1) + '번째 리스트입니다.';
item.Height := addFrame.Height;
item.Data := addFrame;
ListBox1.AddObject(item);
end;
ListBox1.EndUpdate;
end;
리스트 아이템에 접근하는 소스입니다.
procedure TForm1.btnSelectItemInfoClick(Sender: TObject);
var
nIndex : Integer;
begin
nIndex := ListBox1.ItemIndex;
if nIndex < 0 then Exit;
(ListBox1.Items.Objects[nIndex] as TFrame1).Button1.OnClick(nil);
end;
프레임을 통해 아이템을 커스텀하면 버벅임이 현저히 줄어들고
보이는 부분의 아이템과 보이지 않는 부분의 아이템을 컨트롤 해주면
훨씬 더 빠른 성능을 보일 수 있습니다.