Mega Code Archive

 
Categories / Delphi / VCL
 

Dbgride resim koyma

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;