Çeviri: Ramazan Gülbahar.
ListView’in kendi CheckBoxeları çirkin kendi oluşturduğumuz Grafikleri Kullanalım.
TListView’in ViewStyle özellğini vsReport ve CheckBoxes özelliğini true yaptığımız zaman list view içinde check boxlar listenin kenarına eklenir.
Dizayn zamanında check box kullanmak kullanışlı ve güzel görünüşlüdür ama standart Checkbox "Çirkin", kenar kalınlıkları 2 pixel ve hiçbir özelliğini değiştiremezsin.
ListView İçinde "Güzel" CheckBoxlar
Güzel görünüşlü check boxlar oluşturmanın bir yolu kendi grafik (16x16 px bitmap resmi) kullanmak ve orjinal checkboxları değiştirmektir.
OnAdvancedCustomDrawItem olayı, OwnerDraw olayı false iken(varsayılan) yeni grafik oluşturmayı destekler.
CheckBox kullanırken 2 resim kullanarak görüntüyü daha hoş hale getirebilirsin. TImageList içine iki resim ekle biri checked = true iken, diğeri checked = false iken görünecek.
Listview OnAdvancedCustomDrawItem
Kod: Tümünü seç
procedure TListViewForm.listViewAdvancedCustomDrawItem(
Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
Stage: TCustomDrawStage; var DefaultDraw: Boolean);
var
r : TRect;
begin
r := item.DisplayRect(drIcon);
if stage = cdPostPaint then
if item.Checked then
stateImages.Draw(Sender.Canvas, r.Left - 16, r.Top, 1)
else
stateImages.Draw(Sender.Canvas, r.Left - 16, r.Top, 2);
end;
Not:
1. TListView’in ViewStyle özelliği vsReport olmalı. Tabiki Checkboxes özelliğide true olmalı.
2. AdvancedCustomDrawItem olayı hakkındaki yardımı okumalısın bu sayede benzer yöntemle Stages, States, DisplayRect... özelliklerinide kullanabilirsin
Kod: Tümünü seç
procedure TListViewForm.FormCreate(Sender: TObject) ;
begin
listView.Checkboxes := true;
listView.ViewStyle := vsReport;
end;