FireMonkey ve Mobil uygulama (iOS, Android, Windows Phone) ile ilgili sorularınızı bu foruma sorabilirsiniz.
-
Hashirama
- Üye
- Mesajlar: 81
- Kayıt: 26 Kas 2013 03:42
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;
-
Ilgaz
- Üye
- Mesajlar: 16
- Kayıt: 06 Eki 2016 10:34
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
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.
-
Ilgaz
- Üye
- Mesajlar: 16
- Kayıt: 06 Eki 2016 10:34
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;
-
Ilgaz
- Üye
- Mesajlar: 16
- Kayıt: 06 Eki 2016 10:34
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
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.
-
Hashirama
- Üye
- Mesajlar: 81
- Kayıt: 26 Kas 2013 03:42
Mesaj
gönderen Hashirama »
Grid i yüklerken fotoğraftaki gibi hata alıyorum, kurulumunu baştan anlatabilirseniz sevinirim.
İyi çalışmalar.
-
Dosya ekleri
-

- grid hata.PNG (1.11 KiB) 2586 kere görüntülendi