
Arkadaşlar yukarıdaki gibi başlık oluşturulabilecek gridler var ama bunu dbgrid de yapmamız mümkün müdür acaba ? Veya ücretsiz bir component var mıdır ?
Kod: Tümünü seç
Procedure TForm1.FormShow(Sender: TObject);
Var
i : Integer;
begin
AdoQuery1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
+ ExtractFilePath(Application.exename) + 'Database.mdb';
DataSource1.DataSet := ADOQuery1;
DBGrid1.Options := [dgRowSelect, dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit];
DBGrid1.DataSource := DataSource1;
With AdoQuery1 do
begin
SQL.Clear;
SQL.Add('SELECT M_IMDB_ID as [IMDb no], M_Name as [Film Adı], M_Year as [Yıl], M_DirectedBy as [Yönetmeni], M_AlsoKnownAs as [Türkçe Adı] FROM DivXTurk');
end;
AdoQuery1.Active := True;
for i := 0 to DBGrid1.Columns.Count - 1 do
if DBGrid1.Columns[i].Width > 200 then DBGrid1.Columns[i].Width := 200;
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var
BizimRect : TRect;
iOrtaOffset : Integer;
begin
// Başlık Satırı Yüksekliği
TStringGrid(DBGrid1).RowHeights[0] := 30;
// Üst Başlıklar
if Column.Index in [1,2,3] then
begin // Birleştirilecek iki sütun...
TDBGrid(Sender).Canvas.Brush.Color := clRed;
BizimRect.Top := 0;
BizimRect.Bottom := TStringGrid(DBGrid1).RowHeights[0]-15;
BizimRect.Left := Rect.Left -1;
BizimRect.Right := Rect.Right+1;
TDBGrid(Sender).Canvas.FillRect( BizimRect );
TDBGrid(Sender).Canvas.Font.Color := clWhite;
TDBGrid(Sender).Canvas.Font.Style := [fsBold];
if Column.Index = 3 then
begin
iOrtaOffset := (TDBGrid(Sender).Columns[1].Width
+ TDBGrid(Sender).Columns[2].Width
+ TDBGrid(Sender).Columns[3].Width
- TDBGrid(Sender).Canvas.TextWidth('Film Adı, Yılı ve Yönetmeni Sütunları')
) div 2 + TDBGrid(Sender).Canvas.TextWidth('Film Adı, Yılı ve Yönetmeni Sütunları');
TDBGrid(Sender).Canvas.TextOut( BizimRect.Right - iOrtaOffset, BizimRect.Top, 'Film Adı, Yılı ve Yönetmeni Sütunları' );
end;
end else
begin
TDBGrid(Sender).Canvas.Brush.Color := clGray;
BizimRect.Top := 0;
BizimRect.Bottom := TStringGrid(DBGrid1).RowHeights[0];
BizimRect.Left := Rect.Left ;
BizimRect.Right := Rect.Right ;
TDBGrid(Sender).Canvas.FillRect( BizimRect );
TDBGrid(Sender).Canvas.Font.Color := clBlack;
TDBGrid(Sender).Canvas.Font.Style := [];
end;
TDBGrid(Sender).Canvas.Brush.Color := clGray;
BizimRect.Top := TStringGrid(DBGrid1).RowHeights[0]-15;
BizimRect.Bottom := TStringGrid(DBGrid1).RowHeights[0];
BizimRect.Left := Rect.Left ;
BizimRect.Right := Rect.Right ;
TDBGrid(Sender).Canvas.FillRect( BizimRect );
TDBGrid(Sender).Canvas.Font.Color := clYellow;
TDBGrid(Sender).Canvas.Font.Style := [];
// Tüm Alt Başlıklar
iOrtaOffset := ( Rect.Right-Rect.Left - TDBGrid(Sender).Canvas.TextWidth(Column.Title.Caption) ) div 2;
TDBGrid(Sender).Canvas.TextOut( Rect.Left + iOrtaOffset, TStringGrid(DBGrid1).RowHeights[0]-15, Column.Title.Caption );
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
DBGrid1.Repaint;
end;