Arkadaşlar en sonunda yaptım. Birilerine birşey sormadan yapmak kadar eğlenceli bir şey
yok. Özelliklede zamanınız varsa... bunuda işlerinizde lazım olur
Düşüncesiyle paylaşmak istedim.
Dbgrid Üzerindeki alanların yanlarındaki resimler hep hoşuma gitmiştir. En basitinden
Windows'taki adres defteri programındaki dbgrid... Orada kişi adlarının yanında bir kartotex
resmi gibi bir şey var. Nasıl olur dedim. Oldu. İşte Böyle...
Bir db grid indirin onu daata source ile bağlayın duğmukleyin vs.. db grid çalışır
hale gelsin daha sonra bir imagelist indirin. içerisine kullanacağınız resimleri 16x16
seçin (ben öyle seçtim). hatta çok resim seçtiyseniz indexlerini bir kagıda da yazabilirsiniz. :))
daha sonra DBGrid1DrawColumnCell kısmına aşagıdaki kodları yazın ve çalıştırın.
Hepsi bu.
Öff Çok uzun oldu. Gerisini koddan anlarsınız artık zaten 5-10 satır birşey.. :))
Herkeze kolay gelsin..
Not: Db grid üzerinde indicator'ı kaldırdım. Eğer illa indicator kullanacaksanız indicator
ın genişliği 12 pix. haberiniz olsun. :))
birde db gridin tüm editable ayarlarını false yaptım ve optionstan rowselect kısmınıda
true yaptım yoksa dbgrid üzerine tıkladığınızda resimler yazılar karışıyor. Eğer
grid üzerinde tüm alanlar editableyapmanız gerekiyorsa bunu yapmayın.
Yani listeleme haricindeki işlerde kullanmayın.
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var Icon: TBitmap;
begin
Icon:=TBitmap.Create;
if (Column.index=0 ) then begin // DbGridin ilk Sütunu
with DBGrid1.Canvas do begin
ImageList1.GetBitmap(0,Icon); // imagelistten 0'ncı resim alınıyor..
TextRect(Rect,Rect.Left+21,Rect.Top,Column.Field.AsString); // Alan yazılıyor..
// Alan yazılıyor.. buradaki "rect.left+21" değeri ise 16x16 pix. resimden sonra 5 pix
// daha sağa kayması için.
Draw(rect.Left+1,Rect.Top,Icon); // Resim Konuyor..
// buradaki rect.Left+1 değeri resmin grid duvarına yapışmaması için 1 px sağa kay.
end;
end;
if (Column.index=1 ) then begin // DbGridin ikinci Sütunu
with DBGrid1.Canvas do begin
ImageList1.GetBitmap(0,Icon); // imagelistten 1.inci resim alınıyor...
TextRect(Rect,Rect.Left+21,Rect.Top,Column.Field.AsString);
// Alan yazılıyor.. buradaki "rect.left+21" değeri ise 16x16 pix. resimden sonra 5 pix
// daha sağa kayması için.
Draw(rect.Left+1,Rect.Top,Icon); // Resim Konuyor..
// buradaki rect.Left+1 değeri resmin grid duvarına yapışmaması için 1 px sağa kay.
end;
end;
// resim konacak diğer alanlar vars yukarıdaki işlemleri tekrarlıyoruz.
// Column.index ve imagelist indexini istediğiniz şekilde ayarlayın.
end;