Yazı Font Küçült Yazı Font Büyült

DBGrid Nesnesindeki  Sütun ve Satırların Font Stilini Değiştirmek

 

Merhaba arkadaşlar bu makalemizde DBGrid nesnemizin sütun ve satırlarının font stillerini değiştireceğiz. Formumuza 1 adet DataSource ve ADOTable ekliyoruz. ADOTable nesnesinin ConnectionString kısmından Access veritabanımızı seçiyoruz.

Yine ADOTable nesnesinin TableName kısmından tablomuzu seçiyoruz. Bu örnekte tablomuzun ismi “Musteri” şeklindedir.

 

Resim1

Şekil 1

 

unit dbgrid_column_font_style_Unit1;

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Data.Win.ADODB, Vcl.Grids,

Vcl.DBGrids;

type

TMyDBGrid = class(TDBGrid);

TForm1 = class(TForm)

DBGrid1: TDBGrid;

DataSource1: TDataSource;

ADOTable1: TADOTable;

procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

var

w,i:integer;

begin

//ornek olarak

//ilk sutunun genisligini ayarliyoruz

DBGrid1.Columns[0].Width:=50;

//ilk sutunun satirlarinin ortada olmasini sagliyoruz.

DBGrid1.Columns[0].Alignment:=taCenter;

for i :=0 to DBGrid1.DataSource.DataSet.RecordCount do

begin

//dbgrid deki satir yuksekligini ayarliyoruz.

if DataCol > 0 then begin

TMyDBGrid(DBGrid1).RowHeights[i]:=50;

end;

end;

//sutun basliklarinin font style ni ayarliyoruz.

for i := 0 to DBGrid1.Columns.Count-1 do

begin

DBGrid1.Columns[i].Title.Font.Size:=14;

DBGrid1.Columns[i].Title.Font.Color:=clGreen;

DBGrid1.Columns[i].Title.Font.Style:=[fsBold,fsItalic];

DBGrid1.Columns[i].Title.Alignment:=taCenter;

end;

//birinci satir font style ni ayarliyoruz.

TDBGrid(Sender).Canvas.Font.Name := 'Courier New';

TDBGrid(Sender).Canvas.Font.Size:=14;

DBGrid1.Columns[0].Font.Style := [fsItalic, fsBold];

DBGrid1.Columns[0].Font.Color := clBlue;

DBGrid1.Columns[0].Font.Size := 14;

//ikinci sutundaki satirdaki verilerin

//ilk harfini kirmizi yapiyoruz.

if DataCol = 1 then begin

DBGrid1.Canvas.Font.Color := clRed;

DBGrid1.Canvas.Font.Style := [fsBold];

DBGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top + 2,

Column.Field.AsString[1]);

DBGrid1.Canvas.Font.Color := clWindowText;

w := DBGrid1.Canvas.TextWidth(Column.Field.AsString[1]);

DBGrid1.Canvas.Font.Style := [];

DBGrid1.Canvas.TextOut(Rect.Left + 2 + w,

Rect.Top + 2, Copy(Column.Field.AsString, 2, 255));

end;

//Soyadi sutununa gore satir rengini degistiriyoruz.

if (Column.Field.FieldName = 'Soyadi') then

begin

if Column.Field.AsString = 'Şahin' then

begin

DBGrid1.Canvas.Font.Color := clNavy;

DBGrid1.Canvas.Font.Style :=[fsBold];

DBGrid1.Canvas.FillRect(Rect);

DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

end

else

begin

DBGrid1.Canvas.Font.Color:= clMenuHighLight;

DBGrid1.Canvas.FillRect(Rect);

DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

end;

end;

//secilen satirin arka plan rengi degistiriliyor.

if (gdSelected in State) then

begin

DBGrid1.Canvas.Brush.Color := clLime;

DBGrid1.Canvas.FillRect(Rect);

DBGrid1.Canvas.TextOut(Rect.Left, Rect.Top,Column.Field.AsString);

end;

end;

end.   

     

Bir makalenin daha sonuna geldik. Bir sonraki makalede görüşmek üzere. Bahadır ŞAHİN