dbgridde seçilen satırı renklendirmenin kalıcı olması problemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sadikacar60
Üye
Mesajlar: 83
Kayıt: 28 Ara 2017 04:14
İletişim:

dbgridde seçilen satırı renklendirmenin kalıcı olması problemi

Mesaj gönderen sadikacar60 »

arkadaşlar aşagıdaki kodu buldum işimi görüyor. tıkladığım satırı renklendiriyor

ama başka satıra tıklayınca renk gidiyor ben kalıcı olsun istiyorum.
bunu nasıl yaparız acaba
yani her tıkladığım satır boyansın kalsın

saygılarımla

Kod: Tümünü seç

procedure TfrmAdChange.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
with DBGrid1.Canvas do
begin
      if (gdSelected in State) then // seçili alanın renk ve yazı fontu
      begin
          Brush.Color := $00E2D032; //seçim rengi
          Font.Color := ClBlack; // yazı rengi
          Font.Size:=10; // yazı büyüklüğü
          Font.Style := font.Style + [fsBold]; // yazı kalın olsun
          FillRect(rect);
      end;
 end;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: dbgridde seçilen satırı renklendirmenin kalıcı olması problemi

Mesaj gönderen freeman35 »

if (gdSelected in State)
koşulunu düzenle. o event bir kez çalışmaz, her boyut değiştirdiğinde, zamanla vs, sürekli tetiklenir ki ekranda içerik kalsın.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
sadikacar60
Üye
Mesajlar: 83
Kayıt: 28 Ara 2017 04:14
İletişim:

Re: dbgridde seçilen satırı renklendirmenin kalıcı olması problemi

Mesaj gönderen sadikacar60 »

hocam koşul koymak istemiyorum koşula ihtiyacım yok tıkladığım satır boyansın mümkün değil mi acaba
teşekkürler
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: dbgridde seçilen satırı renklendirmenin kalıcı olması problemi

Mesaj gönderen ertank »

sadikacar60 yazdı: 25 Şub 2020 10:20 hocam koşul koymak istemiyorum koşula ihtiyacım yok tıkladığım satır boyansın mümkün değil mi acaba
teşekkürler
Merhaba,

Öncelikle siz tek bir satırı değil birden fazla satırı "tıklanmış ise" farklı renklendirmek istiyorsunuz. Bu durumda "tıklanmış ise" bir koşuldur. "Koşul koymak istemiyorum" demek "bunu yapmak istemiyorum" demek ile eşdeğer oluyor bu anlamda.

Birçok farklı yöntem ile bunu yapmanız mümkün. Sizin izlemek istediğiniz yöntem bilinmeyince çözüm önerileri tavsiye niteliğinde oluyor.

Öncelikle tıkladığınız satırın seçili olduğunu anlayacak bir bilgiye ihtiyacınız var. Bu bilgiyi satırın içinde (veritabanı tablosunda) veya hafızada kendi oluşturacağınız bir yöntem ile tutmanız mümkün. Bu bilgi olmaz ise satırın daha önce tıklanmış olup olmadığını bilmek mümkün değil. Bu bilgiyi satır ile eşleşecek baz bir yerde saklamaz iseniz "seçili satır" ifadesinden bahsedemeyiz.

Bilgileri nerede tuttuğunuza göre ilgili satırın renginin nasıl olması gerektiğini "koşul" ile kontrol ederek karar verebilirsiniz. Eğer seçilmiş ise farklı renk kullanarak gösterme kodunu zaten paylaşmış idiniz. Aynı kodu kullanabilirsiniz.

Farklı bir ifade ile; bilgi göstermek için kullandığınız Grid bileşeninde istediğiniz özellik hazır yapılmış olarak yok ise istediğinizi elde etmek için yukarıda anlatılan, daha önce verilen tavsiyelerden birisini uygulamanız gerekecektir.
sadikacar60
Üye
Mesajlar: 83
Kayıt: 28 Ara 2017 04:14
İletişim:

Re: dbgridde seçilen satırı renklendirmenin kalıcı olması problemi

Mesaj gönderen sadikacar60 »

anladım hocam mutlaka bir şarta bağlayın şart sağlanıyorsa zaten istediğinizi yaparsınız diyorsunuz.

diyelimki alt alta 100 satır var 100 satıra tek tek nasıl şart bağlarız her satır kendine özgü bilği içeriyorsa 100 tane şart koymak lazım
renk verebilmek için.
veya her tıkladığımız satırın id sini bir diziye atıp dizide değer olan satırları şarta bağlayıp renklendirebiliriz.
doğru anlamışmıyım.
vakit ayırdığınız için teşekkür eder saygılar sunarım.
Cevapla