Dbgrid Son Sütun Genişliğini Otomatik Ayarlama

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Dbgrid Son Sütun Genişliğini Otomatik Ayarlama

Mesaj gönderen aslangeri »

s.a. arkadaşlar.
Programdaki bir formda kullanıcılar dbgridde sütun ekleme ve kaldırma yapabiliyor genişliklerini değiştirebiliyorlar. Lakin bu işlemler sonucunda grid in sağ tarafında boşluklar kalabiliyor.
Sorunun çözümü için ufak bir araştırma yaptım. Bulduğum bir makale üzerinde ufak değişiklikler yaparak istediğim hale getirdim.
Makalenin orjinalinde istenilen sütunların genişliği ayarlanıyordu ben son sütunun genişliğini ayarlayacak hale getirdim.
Makalenin orjinaline buradan ulaşabilirsiniz. Resimli olarak anlatmış eleman.
benim değiştirdiğim hali ise aşağıda.

Kod: Tümünü seç

Procedure SonSutunGenisliginiAyarla(aGrid:TDBGrid);
var
  i : integer;
  TotWidth : integer;
  VarWidth : integer;
  AColumn : TColumn;
  VisibleColumns:integer;
begin
  TotWidth := 0;
  VarWidth := 0;
  VisibleColumns := 0;
  for i := 0 to -1 + aGrid.Columns.Count do
  begin
    if aGrid.Columns[i].Visible then
    Begin
      TotWidth := TotWidth + aGrid.Columns[i].Width;
      inc(VisibleColumns);
    end;
  end;
  if dgColLines in aGrid.Options then
    TotWidth := TotWidth + VisibleColumns;
  if dgIndicator in aGrid.Options then
    TotWidth := TotWidth + IndicatorWidth;
  VarWidth :=  aGrid.ClientWidth - TotWidth;
  // if korşılaştırması sütunun boyunu küşültmek istenmezse
  //if VarWidth>0 then
  Begin
     aGrid.Columns[aGrid.Columns.Count-1].Width:=aGrid.Columns[aGrid.Columns.Count-1].Width+VarWidth;
  End;
End;
Kullanımı ise gayet basit.

Kod: Tümünü seç

SonSutunGenisliginiAyarla(DbGrid1);
eğer procedure yi ayrı bir unite almak isterseniz uses satırına DBGrids unitini eklemeyi unutmayın. ;)
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla