Kod: Tümünü seç
procedure TForm1.DBGrd1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var
Veri : String;
i : Integer;
begin
If (gdSelected in state) then // eğer seçili ise
begin
DBGrd1.Canvas.Brush.Color := $00FD959C; // zemin rengi
DbGrd1.Canvas.Font.Color := clYellow; // font rengi
end
else
begin
if (DBGrd1.datasource.dataset.recno mod 2) =0
then DBGrd1.Canvas.Brush.Color := $00C8FBFD
else DBGrd1.Canvas.Brush.Color := $00BFD7B5;
dbGrd1.Canvas.Font.Color:=clRED; // Fontun rengini değiştirir..
DBGrd1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
// Burada özel boyama işlemleri bitmiştir. Artık kendi özelimize girebiliriz.
if Column.Field.DataType = ftWideString then begin
if TDBGrid(Sender).Canvas.TextWidth(Column.Field.AsWideString) > (Rect.Right-Rect.Left) then
begin // Canvas varsayılan font tipine göre, Filed içindeki text veri, eğer
// DataCell yani hücrenin eninden büyükse. (demek ki devamında örtülü kısım var)
// Bu durumda örtülü olmayan kısım olana kadar sondan ve fazladan 3 tane fazla kırpıp
// bu sonradan kırpılan fazlalık kısım yerine ... koyucaz.. nasıl mı ?
Veri := Column.Field.AsWideString;
while TDBGrid(Sender).Canvas.TextWidth(Veri) > (Rect.Right-Rect.Left)
do Delete(Veri, Length(Veri), 1); // Sondan geri doğru kırpıyoruz..
For i := 1 to 3 do Delete(Veri, Length(Veri), 1); // 3 tane fazla kırptık...
Veri := Veri + '...';
TDBGrid(Sender).Canvas.FillRect(Rect); // Önce renk doldur..
TDBGrid(Sender).Canvas.TextOut( Rect.Left+1, Rect.Top+1, Veri );
end;
end;
end;