Stringrid Satır Boyama

FireMonkey ve Mobil uygulama (iOS, Android, Windows Phone) ile ilgili sorularınızı bu foruma sorabilirsiniz.
Cevapla
Hashirama
Üye
Mesajlar: 81
Kayıt: 26 Kas 2013 03:42

Stringrid Satır Boyama

Mesaj gönderen Hashirama »

Merhaba Arkadaşlar
Aşağıdaki kodlar ile stringridi boyuyorum ancak seçili satırı boyayamadım(sadece hücre boyanıyor). Yardımcı olur musunuz?

Kod: Tümünü seç

procedure TForm1.StringGrid1DrawColumnCell(Sender: TObject;
  const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF;
  const Row: Integer; const Value: TValue; const State: TGridDrawStates);

var
  RowColor,RowColorSecili,RowColorNormal: TBrush;
  isSelected : boolean;
  SelectedRow : Integer;
begin
      isSelected := ((Sender as TStringGrid).Selected = Row) and ((Sender as TStringGrid).ColumnIndex = Column.Index);;

  //SelectedRow := (Sender as TStringGrid).Selected;
    RowColor := TBrush.Create(TBrushKind.Solid, TAlphacolors.Red);
    RowColorSecili := TBrush.Create(TBrushKind.Solid, TAlphacolors.White);
    RowColorNormal := TBrush.Create(TBrushKind.Solid, TAlphacolors.Grey);

    // ilk iki satır kırmızı diğerleri gri olacak şekilde grid boyanıyor
   if (Row > 1) then
      Canvas.FillRect(Bounds, 0, 0, [], 1, RowColorNormal)
     else
       Canvas.FillRect(Bounds, 0, 0, [], 1, RowColor);

       // seçilen hücre  beyaz renkle boyanıyor
      if (isSelected) then
        begin
               Canvas.FillRect(Bounds,0,0,[],1,RowColorSecili);
        end;

      //Sorun:
      //burada sadece hücre seçiliyor satır seçilmiyor, bunu nasıl düzeltebiliriz.

    TGrid(Sender).DefaultDrawColumnCell(Canvas, Column, Bounds, Row,Value, State);
       inherited;

end;
Kullanıcı avatarı
Ilgaz
Üye
Mesajlar: 16
Kayıt: 06 Eki 2016 10:34

Re: Stringrid Satır Boyama

Mesaj gönderen Ilgaz »

Merhaba,

StringGrid'in properties listesinde Options listesini genişletin. RowSelect parametresini True yaptığınızda sorun çözülmüş olacaktır.
Hashirama
Üye
Mesajlar: 81
Kayıt: 26 Kas 2013 03:42

Re: Stringrid Satır Boyama

Mesaj gönderen Hashirama »

Ilgaz yazdı:Merhaba,

StringGrid'in properties listesinde Options listesini genişletin. RowSelect parametresini True yaptığınızda sorun çözülmüş olacaktır.
Aslında orası seçili eğer boyama olayını yapmazsam bütün satırı seçili,boyalı gösteriyor ama kod ile boyamaya çalıştığımda sadece bir hücreyi boyuyor.
Kullanıcı avatarı
Ilgaz
Üye
Mesajlar: 16
Kayıt: 06 Eki 2016 10:34

Re: Stringrid Satır Boyama

Mesaj gönderen Ilgaz »

Hashirama yazdı:
Ilgaz yazdı:Merhaba,

StringGrid'in properties listesinde Options listesini genişletin. RowSelect parametresini True yaptığınızda sorun çözülmüş olacaktır.
Aslında orası seçili eğer boyama olayını yapmazsam bütün satırı seçili,boyalı gösteriyor ama kod ile boyamaya çalıştığımda sadece bir hücreyi boyuyor.

Şu şekilde dener misiniz?

Kod: Tümünü seç

procedure TForm1.StringGrid1DrawColumnCell(Sender: TObject;
  const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF;
  const Row: Integer; const Value: TValue; const State: TGridDrawStates);
var
  aBrush: TStrokeBrush;
  aRect: TRectF;
begin
  if Odd(row) then Canvas.Fill.Color := $FFEFE7CE // Çift satırlar açık sarı
  else Canvas.Fill.Color := TAlphaColorRec.White;

  if (TGridDrawState.RowSelected in State) or (TGridDrawState.Focused in State)
    then
    Canvas.Fill.Color := TAlphaColors.Skyblue;
  Canvas.FillRect(Bounds, 0, 0, [], 1);
  Canvas.Fill.Color := TAlphaColorRec.Black;

  aBrush := TStrokeBrush.Create(TBrushKind.Solid, $FF9C9A9C {TAlphaColors.Black});
  if Column.Index = 1 then
    Canvas.DrawLine(Bounds.TopLeft, PointF(Bounds.Left, Bounds.Bottom), 1, aBrush);
  aBrush := nil;
  if TGridDrawState.Selected in State then Canvas.Fill.Color := TAlphaColors.White;
  aRect := Bounds;
  aRect.Left := aRect.Left + 4;

  if ClientWidth=1280 then Canvas.Font.Size := 24;

  Canvas.FillText(aRect, Value.AsString, False, 1, [], TTextAlign.Leading);
end;
Kullanıcı avatarı
Ilgaz
Üye
Mesajlar: 16
Kayıt: 06 Eki 2016 10:34

Re: Stringrid Satır Boyama

Mesaj gönderen Ilgaz »

Hashirama yazdı:
Ilgaz yazdı:Merhaba,

StringGrid'in properties listesinde Options listesini genişletin. RowSelect parametresini True yaptığınızda sorun çözülmüş olacaktır.
Aslında orası seçili eğer boyama olayını yapmazsam bütün satırı seçili,boyalı gösteriyor ama kod ile boyamaya çalıştığımda sadece bir hücreyi boyuyor.

Yukarıdaki kod ihtiyacınızı karşıladı mı?
Hashirama
Üye
Mesajlar: 81
Kayıt: 26 Kas 2013 03:42

Re: Stringrid Satır Boyama

Mesaj gönderen Hashirama »

Ilgaz yazdı:
Hashirama yazdı:
Ilgaz yazdı:Merhaba,

StringGrid'in properties listesinde Options listesini genişletin. RowSelect parametresini True yaptığınızda sorun çözülmüş olacaktır.
Aslında orası seçili eğer boyama olayını yapmazsam bütün satırı seçili,boyalı gösteriyor ama kod ile boyamaya çalıştığımda sadece bir hücreyi boyuyor.

Yukarıdaki kod ihtiyacınızı karşıladı mı?
Kusura bakmayın biraz geç yazıyorum. Denedim sorunsuz çalıştı, çok teşekkürler.
Kullanıcı avatarı
barisatalay
Üye
Mesajlar: 398
Kayıt: 02 Nis 2013 05:43
İletişim:

Re: Stringrid Satır Boyama

Mesaj gönderen barisatalay »

Ek olarak hazırladıgım bi component vardı kurcalarsanız işinize yarayacak şeyler bulabilirsiniz.

https://github.com/barisatalay/GridHelper
Hashirama
Üye
Mesajlar: 81
Kayıt: 26 Kas 2013 03:42

Re: Stringrid Satır Boyama

Mesaj gönderen Hashirama »

barisatalay yazdı:Ek olarak hazırladıgım bi component vardı kurcalarsanız işinize yarayacak şeyler bulabilirsiniz.

https://github.com/barisatalay/GridHelper
Grid i yüklerken fotoğraftaki gibi hata alıyorum, kurulumunu baştan anlatabilirseniz sevinirim.

İyi çalışmalar.
Dosya ekleri
grid hata.PNG
grid hata.PNG (1.11 KiB) 1975 kere görüntülendi
Cevapla