DBGrid de seçili satırın istenilen renkde olması

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Mehmet Burak
Üye
Mesajlar: 12
Kayıt: 16 Haz 2003 06:26
İletişim:

DBGrid de seçili satırın istenilen renkde olması

Mesaj gönderen Mehmet Burak »

Herkese Selam...

DBGrid de cursor un bulunduğu satırı istediğim renkte göstermek istiyorum.(Satırın tümünü)
Bunu nasıl yapabilirim ?
DrawColumnCell ve DrawDataCell ile bişeyler yapmaya çalıştım ama beceremedim.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7587
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

nasıl birşey istiyorsunuz tam bilemiyorum ama ben bu tip durumlarda RowSelect özelliğin kulanıyorum. Böylece tüm satır renklendiriliyor ve hangi satırın seçildiği belli oluyor.

Burdaki renkte clHighLight olması lazım. Bu da kullanıcının seçimine göre değişiyor. Kullanıcının seçimi kalsın bence.

Farklı birşey istiyorsanız, belirtirseniz bakarız.

Kolay gelsin.
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

Ben RxDBGrid için aşağıdaki şekilde yapmıştım. Delphinin gridinde de aynı şekilde çalışır herhalde. Database de IPTALKONT diye bi field vardı. İptal edilen kayıtlara E giriliyordu. IPTALKONT fieldı E olan kayıtları aşağıdaki kod ile kırmızı olarak göstertmiştim.
Sevgiler...

procedure TAramaForm.RxDBGrid1GetCellParams(Sender: TObject; Field: TField;
AFont: TFont; var Background: TColor; Highlight: Boolean);
var
Iptalkont: String;
begin
Iptalkont := (Sender as TrxDBGrid).DataSource.DataSet.FieldByName('IPTAL').Asstring;
if (Iptalkont = 'E') or (Iptalkont='e') then
begin
Background := clRed; { shortest }
AFont.Color := clwhite; { longest }
// AFont.Style := AFont.Style + [fsBold];
end ;
//else
// AFont.Style := AFont.Style + [fsBold] ;
if Highlight then begin
AFont.Color := clHighlightText;
Background := clHighlight;
end;
End;
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Kullanıcı avatarı
Mehmet Burak
Üye
Mesajlar: 12
Kayıt: 16 Haz 2003 06:26
İletişim:

Mesaj gönderen Mehmet Burak »

Bende RowSelect türü birşey istiyorum ama RowSelect := True olursa edit işlemi yapılamıyor. Edit yapılabilmeli.

Ayrıca sair in dediği GetCellParams Delphideki DBGridde yok maalesef.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7587
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

Aşağıda bir kod gönderiyorum, umarım işini görür.

Kod: Tümünü seç

var
  Form1: TForm1;

implementation

type
  TCustomDBGridCracker = class(TCustomDBGrid); // datalink'i kullanabilmemiz için şart

{$R *.dfm}

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 with TCustomDBGridCracker(DBGrid1) do
    if DataLink.ActiveRecord = Row - 1 then
      Canvas.Brush.Color := clRed
    else
      Canvas.Brush.Color := clWhite;
  DBgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Kolay gelsin.
Kullanıcı avatarı
Mehmet Burak
Üye
Mesajlar: 12
Kayıt: 16 Haz 2003 06:26
İletişim:

Mesaj gönderen Mehmet Burak »

Sağol hocam istediğim tamda böyle birşeydi.
Zahmetlerin için teşekkürler....
Cevapla