DbGrid Cellerinde ÜçNokta Olayı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: DbGrid Cellerinde ÜçNokta Olayı

Mesaj gönderen mrmarman »

Buyrunuz. Diğer verdiğimiz DrawDataCell içeriğini silmeyi unutmayınız. Boşa kod kalabalığı yaratmasın.

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;
Resim
Resim ....Resim
F.Atagun
Üye
Mesajlar: 158
Kayıt: 01 Oca 2008 01:56

Re: DbGrid Cellerinde ÜçNokta Olayı

Mesaj gönderen F.Atagun »

@mrmarman Hocam Eli Öpülecek Adamsınız.
Size ne diyeceğimi bilmiyorum. Günlerce çözemediğim sorunumu çözdünüz
Eğer birgün forum sayesinde bir araya gelirde sizinle tanışma imkanım olursa öpücem abi sizi :)
Allah Razı olsun.

Teşekkürler
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: DbGrid Cellerinde ÜçNokta Olayı

Mesaj gönderen mrmarman »

Hocam ayıp ediyorsun, o nasıl söz. Memnun oldum, çalışmalarında başarılar dilerim. :o
Resim
Resim ....Resim
Kullanıcı avatarı
tux
Üye
Mesajlar: 22
Kayıt: 01 Nis 2008 03:24

Re: DbGrid Cellerinde ÜçNokta Olayı

Mesaj gönderen tux »

merhaba,
aynı özelliği CxGrid de aşağıdaki şekilde kullanıyorum

cxGrid1DBTableView1.OptionsView.CellEndEllipsis := True;

bunun ise bir sıkıntısı var,
uygulamanızı simge durumuna indirip tekrar görünür yaptığınızda (simge durumuna küçült/önceki boyut),
seçili kayıt haricindeki kayıtlardaki "..." (üç nokta) görünmez oluyor

form'un onpaint olayında grid veya viewtable nesnesini refresh, repaint ve invalidate vs gibi
yöntemler denedim ama görünümü düzeltemedim
Cevapla