Görsel bir arayüz kullanıcının zamanını kazandırır: bir seçeneğin metninin yanında anlaşılır bir simge — ülke bayrağı, ödeme sistemi logosu, renkli durum göstergesi — görüntülendiğinde doğru öğeyi seçmek saniyeler alır, kuru satırları çözümlemeye çalışmak değil. Tam da bu tür senaryolar için, bileşen setine FastEditors VCL (FastReport VCL Ultimate paketinin bir parçası) yeni bir denetim öğesi eklenmiştir — TfrImageComboBox.
TfrImageComboBox — her bir öğesi anahtar değeri, TImageList görselini ve metin etiketini birleştiren bir açılır liste editörüdür. Standart bileşen paletinde doğrudan bir karşılığı yoktur. Bileşen, görsellerin yatay hizalamasını ve metnin yatay ve dikey esnek kaydırma seçeneklerini destekler — hem liste öğelerinde hem de editör alanında.
Bu makalede bileşenin özelliklerini ve olaylarını ayrıntılı olarak inceleyecek, kullanıcı arayüzünde kullanımına dair tipik senaryoları gösterecek ve bugünden itibaren çalışmaya başlayabileceğiniz adım adım bir örnek sunacağız.
ImageComboBox bileşeni, IDE içinde FastEditors VCL paletinde sunulur; açılır listeden metin etiketli görselleri seçmek ve bunları daha sonra editör alanında görüntülemek için tasarlanmıştır.
TfrImageComboBox'ın temel yetenekleri:
Bu bileşeni FastEditors VCL setindeki diğer editörlerden ayıran temel özellikleri inceleyelim.
Value — seçili liste öğesinin geçerli anahtar değeridir. Buraya Variant türünde bir değer yazabilirsiniz; bileşen bu değeri öğe koleksiyonunda bulursa, editör alanında ilgili görseli ve etiketi otomatik olarak görüntüler. ImageComboBox bir FastGrid bileşeninin hücresi içinde kullanılıyorsa, Value olarak bu hücrenin değeri otomatik olarak atanır.
ItemIndex — seçili açılır liste öğesinin dizinidir. Value değeri liste öğelerinin hiçbir anahtar değerine karşılık gelmiyorsa, bu özelliğin değeri -1 olur.
Selected — seçili liste öğesini TfrImageComboBoxItem türünde içeren özellik.
Properties.AutoDropDown — kullanıcı editör alanına metin yazmaya başladığında açılır listenin otomatik gösterilme olanağını belirler.
Properties.DropDownCount — açılır listede görüntülenen maksimum satır sayısı. Bu değer 0 ise, bileşen monitör ekranına sığan kadar çok liste öğesi görüntülemeye çalışır.
Properties.ShowDropdownWindow — öğelerin açılır listesinin gösterilmesine izin verilip verilmediğini belirler.
Properties.IncrementalFiltering — liste öğelerinin metin etiketlerine göre arama ve filtreleme olanağının etkin olup olmadığını belirler.
Bu özellikler, Value değeri liste öğelerinin hiçbirine karşılık gelmediğinde bileşenin ne göstereceğini belirler:
Properties.Layout — editör alanındaki metin ve görsel hizalamasını yöneten özellikler kümesi.
Properties.DropdownItemLayout — açılır liste öğelerindeki metin ve görsel hizalamasını yöneten özellikler kümesi.
Properties.DropDownWidth — açılır listenin genişliği. Değer 0 ise, açılır listenin genişliği TfrImageComboBox bileşeninin genişliğiyle aynı olur.
Properties.ImageMargin — editör alanında ve açılır listede görselin konumunu ayarlayan boşluk.
Properties.ItemHeight — liste öğesinin yüksekliği. Değer 0 olduğunda yükseklik otomatik hesaplanır. Ancak liste öğesinin Properties.OnCustomDrawItem olayı kullanılarak elle çizilmesi gerekiyorsa, bu özelliğe 0'dan farklı bir değer atamak uygundur.
Properties.ItemImages — açılır liste öğeleri koleksiyonu için görselleri içeren ImageList bileşeni. Bu özellik nil ise görseller gösterilmez, ancak metin görüntüleme olanağı korunur.
Properties.Items — açılır listenin öğe koleksiyonu. Her öğe şu özelliklere sahiptir:
Properties.OnDropDown — öğe listesi göründüğünde tetiklenen olay.
Properties.OnCloseUp — öğe listesi kapatıldığında tetiklenen olay.
Properties.OnCustomDrawItem — liste öğelerini elle çizmek için olay. Örneğin:
procedure TForm1.frImageComboBox2PropertiesCustomDrawItem(Sender: TfrImageComboBoxCustomProperties; ACanvas: TfrCustomCanvas; AItemViewInfo: TfrImageComboBoxItemViewInfo; var DefaultDraw: Boolean); var LText: string; LTextRect: TRect; begin DefaultDraw := False; LText := 'Item ' + Sender.Items[AItemViewInfo.SourceItemIndex].Caption; LTextRect := AItemViewInfo.ItemRect; ACanvas.FillRect(LTextRect, clWhite); ACanvas.DrawFocusRect(LTextRect); ACanvas.DrawText(LTextRect, LText); end;
Bu özellikler, görüntülemenin görsel stilini ve davranışını editör alanı ve açılır liste için ayrı ayrı özelleştirmenizi sağlar:
Açılır listede görseller, karşılık gelen etiketlerinin içeriğine göre aranabilir ve filtrelenebilir: editör alanına metin yazmaya başlamak yeterlidir; liste yalnızca eşleşen öğeleri gösterir.
TfrImageComboBox, listeden seçimin metnin yanındaki görsel bir görüntüyle kazandığı yerlerde özellikle kullanışlıdır. İşte bileşenin mükemmel sonuç verdiği tipik kullanıcı arayüzü öğeleri:
TfrImageComboBox bileşenini projeye birkaç adımda ekleyebilirsiniz:
procedure TForm1.FormCreate(Sender: TObject); var I: Integer; LItem: TfrImageComboBoxItem; begin frImageComboBox1.BeginUpdate; try for I := 0 to 9 do begin LItem := frImageComboBox1.Properties.Items.Add; LItem.Caption := 'Item ' + IntToStr(I); LItem.ImageIndex := I; LItem.Value := I; end; finally frImageComboBox1.EndUpdate; end; end;
Hepsi bu — bileşen kullanıma hazır.
TfrImageComboBox, sıradan listeden seçimi görsel ve kullanışlı bir arayüz öğesine dönüştürür. Etiketlerin yanındaki görseller, standart TComboBox satırlarından daha etkileyici görünür; açılır listenin metne göre filtrelenmesi ise doğru seçeneği bulmayı hızlı ve doğal hale getirir.
Bunlara editör alanının ve listenin görünümünün esnek özelleştirilmesini, öğeleri elle çizmek için olayları ve yerleşik FastGrid desteğini ekleyin — CRM'ler, görev takipçileri, kataloglar ve izleme sistemleri gibi modern iş uygulaması arayüzleri için eksiksiz bir araç elde edersiniz.
Projenizde simgeli ve etiketli özenli ve modern bir seçim gerekiyorsa — FastEditors VCL setindeki TfrImageComboBox'ı deneyin. Başlamak için bileşeni forma yerleştirmek, TImageList'i bağlamak ve yukarıdaki örnekte gösterildiği gibi Items koleksiyonunu doldurmak yeterlidir.