if DBGrid1.DataSource.DataSet.RecNo mod 2 = 0 then // çift sayılı alanların rengi 0,2,4....
Dbgrid1.Canvas.brush.Color := $00AEEBF0
else
if DBGrid1.DataSource.DataSet.RecNo mod 2 = 1 then // tek sayılı alanların rengi 1,3,5...
Dbgrid1.Canvas.Brush.Color := clWindow;
with DBGrid1.Canvas do
begin
if (gdSelected in State) then // seçili alanın renk ve yazı fontu
begin
Brush.Color := $000080FF; //seçim rengi
Font.Color := ClBlack; // yazı rengi
Font.Size:=7; // yazı büyüklüğü
Font.Style := font.Style + [fsBold]; // yazı kalın olsun
FillRect(rect);
end;
end;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
yapmak istediğim eğer DBGrid1 de sağa doğru sütunlar devam ediyorsa sağa gitmiyor klavyeden sağ okla hareket etmek istiyorum ama başaramadım.
nasıl yapabilirim ?
Kuri_YJ Merhaba; DBGrid1 de fasla sütün varsa sağa doğru gidemiyorum.
DBGrid1 de Options da DgRowSelect değeri false yapınca istediğim oluyor ancak tüm satırı renklendirmiyor.
true yapınca tum satır renkleniyor.
Üstteki koda ;
VK_RIGHT //sağ ok basılırsa
dgRowSelect:=False
VK_LEFT // sol ok basılırsa
dgRowSelect:=False
VK_UP // yukarı ok basılırsa
dgRowSelect:=True
VK_DOWN // aşağı ok basılırsa
dgRowSelect:=True
type
TDBGridX=class(TDBGrid);
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = vk_right then
begin
if TDBGridX(DBGrid1).LeftCol < (DBGrid1.Columns.Count - TDBGridX(DBGrid1).VisibleColCount) then
TDBGridX(DBGrid1).LeftCol:=TDBGridX(DBGrid1).LeftCol + 1;
Key := 0;
end;
if key = vk_left then
begin
if TDBGridX(DBGrid1).LeftCol > 1 then
TDBGridX(DBGrid1).LeftCol := TDBGridX(DBGrid1).LeftCol - 1;
Key := 0;
end;
end;
Aşağıdaki satır ile oyna çözersin. +1 veya +2 yap.
...
if key = vk_right then
begin
if TDBGridX(DBGrid1).LeftCol < (DBGrid1.Columns.Count - TDBGridX(DBGrid1).VisibleColCount + 1) then
...