본문 바로가기

Delphi/꿀팁

느린 ListBox를 커스텀 해서 속도 향상시키기

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;


프레임을 통해 아이템을 커스텀하면 버벅임이 현저히 줄어들고

보이는 부분의 아이템과 보이지 않는 부분의 아이템을 컨트롤 해주면

훨씬 더 빠른 성능을 보일 수 있습니다.

반응형