| oguzozturk74 | 05.05.2004 - 02:41:15 |
| Çalışma anında DBGRİD in kolonlarının otomatik olarak ayarlanması :
procedure TForm1.FormCreate(Sender: TObject);
begin // Tag özelliği ile otomatik boyutlanacak kolonların // minimum genişliğini belirliyoruz. // Burada sabit bir değer olarak 40 px veriyoruz Table1.FieldByName('AD').Tag := 40; Table1.FieldByName('SOYAD').Tag := 4 + Canvas.TextWidth( Table1.FieldByName('LastName').DisplayName); end; Yukarıda. AD ve SOYAD kolonlarını otomatik boyutlandırılmaları için fişlemiş olduk. Bundan sonra ise DBGrid imizin FixDBGridColumnsWidth ( DBGrid Kolon Genişliğini Ayarla ) olayını formun Resize ( Tekrar boyutlamak ) olayında çağıracağız. procedure TForm1.FormResize(Sender: TObject);
begin FixDBGridColumnsWidth(DBGrid1); end; Not: DBGrid in Align Property (özelliği) alTop, alBottom, alClient veya alCustom değerlerinden biri olmalıdır. Unitin Private ında tanımlanacak procedure ümüz : procedure FixDBGridColumnsWidth(const DBGrid: TDBGrid);
var i : integer; TotWidth : integer; VarWidth : integer; ResizableColumnCount : integer; AColumn : TColumn; begin // Boyutlamadan önceki bütün kolonların toplam genişliği TotWidth := 0; // Herhangi bir fazladan alanı nasıl böleceğiz VarWidth := 0; // Otomatik boyutlanacak kolon sayısı ResizableColumnCount := 0; for i := 0 to -1 + DBGrid.Columns.Count do begin TotWidth := TotWidth + DBGrid.Columns[i].Width; if DBGrid.Columns[i].Field.Tag <> 0 then Inc(ResizableColumnCount); end; //Kolonları ayıran çizgi (column separator line) 1px değer atıyoruz if dgColLines in DBGrid.Options then TotWidth := TotWidth + DBGrid.Columns.Count; // belirteç kolon (indicator column) genişliği if dgIndicator in DBGrid.Options then TotWidth := TotWidth + IndicatorWidth; VarWidth := DBGrid.ClientWidth - TotWidth; // VarWidth değerini eşit olarak otomatik boyutlanacak kolonlara dağıtıyoruz if ResizableColumnCount > 0 then VarWidth := varWidth div ResizableColumnCount; for i := 0 to -1 + DBGrid.Columns.Count do begin AColumn := DBGrid.Columns[i]; if AColumn.Field.Tag <> 0 then begin AColumn.Width := AColumn.Width + VarWidth; if AColumn.Width < AColumn.Field.Tag then AColumn.Width := AColumn.Field.Tag; end; end; end; | |
| husonet | 06.05.2004 - 08:43:54 |
| Oğuzcum Teşekkürler Güzel Olmuş Eline Sağlık. | |
| oguzozturk74 | 06.05.2004 - 10:38:17 |
| Sizinkilerin yanında birşey değil Hüseyin Kardeş. :D
Sadece bir çeviri yaptım o kadar. ( http://delphi.about.com/ ) | |