리스트박스(TListBox)에 체크박스를 두고 버튼 클릭 시 전체체크하는 기능에 대한 문의가 있어 정리해 봤습니다.
이 글에서는 아래 내용을 학습할 수 있습니다.
- 리스트박스를 동적으로 생성하는 방법
- 리스트박스 아이템에 체크박스를 표시하는 속성
화면 구성
컴포넌트 속성 설정
주요 속성을 설정합니다.(Object Inspector에서 속성을 설정해도 됩니다.)
procedure TForm2.FormCreate(Sender: TObject); begin Button1.StaysPressed := True; //버튼 눌림(IsPressed) 상태 유지 ListBox1.DefaultItemStyles.ItemStyle := 'listboxitemrightdetail'; // 텍스트와 오른쪽에 상세정보가 표시되도록 기본속성 지정 ListBox1.ShowCheckboxes := True; // 리스트박스 항목에 체크박스가 표시되도록 설정 end;
새로고침
procedure TForm2.Button2Click(Sender: TObject);
var
I: Integer;
Item: TListBoxItem;
begin
ListBox1.Items.Clear;
ListBox1.BeginUpdate;
try
for I := 0 to 10 do
begin
Item := TListBoxItem.Create(ListBox1);
Item.Parent := ListBox1;
Item.Text := 'Item ' + I.ToString;
Item.ItemData.Detail := 'Description';
end;
finally
ListBox1.EndUpdate;
end;
end;전체선택
procedure TForm2.Button1Click(Sender: TObject);
var
I, Idx: Integer;
begin
Idx := ListBox1.ItemIndex;
ListBox1.BeginUpdate;
try
for I := 0 to ListBox1.Items.Count - 1 do
begin
ListBox1.ListItems[I].IsChecked := Button1.IsPressed;
end;
finally
ListBox1.EndUpdate;
ListBox1.ItemIndex := Idx;
end;
end;소스코드
Tips>
커스텀 스타일로 TListBoxItem 스타일을 만드는 경우 TCheckBox의 StyleName을 "check"로 지정하기 바랍니다.
ProjectLBCheck.zip