제 기억으론 델파이 4를 쓸때에
if (gdfocused in state) then
with (Sender as TDBGrid).Canvas do
begin
Brush.Color := DBGRID_FOCUS_COLOR;
FillRect(Rect);
Font.Color := clblack;
TextOut(Rect.Left+2,Rect.Top+2,Field.AsString);
end;
(Sender as TDBGrid).DefaultDrawDataCell(Rect, Field, State);
이런 식으로 적으면 포커스가 있는 그행 전체가 색이 칠해 졌던걸로
기억하는데요..기억이 틀린거 같기도 하고..
암튼 포커스가 간 한행을 다 칠해야 하는데..안되네요../
포커스가 간 행을 다 색칠하고 싶은데..
어떻게 해야 할까요...아참 델파이 6입니다.
type
TCustomDBGridCracker = class(TCustomDBGrid);
DBGrid1DrawColumnCell이벤트에 다음과 같이 해보세요..
바탕과 셀 색깔은 임의로 바꾸시면됩니다..
procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
With TCustomDBGridCracker(Sender) do begin
if DataLink.ActiveRecord = Row - 1 then
Canvas.Brush.Color := clMoneyGreen
else Canvas.Brush.Color := clInfoBk;
TCustomDBGridCracker(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
참고로 옵션에 RowSelect 속성은 해제해서 쓰면 더 좋을겁니다.