특정 Cell만 색깔을 바꿀려고 OnDrawCell event 에 다음과 같이 Coding 햇습니다.
with StrDataGrid1 do
begin
// Refresh;
Rect := StrDataGrid1.CellRect(1, 1);
StrDataGrid1.Canvas.Brush.Color := clRed;
StrDataGrid1.Canvas.FillRect(Rect);
StrDataGrid1.Canvas.Font.Color := clWhite;
StrDataGrid1.canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 3, cells[3, 3]);
(실제는 Cell의 값이 10000이상이나 Test상 한개의 셀만 선택했슴)
그런데 색깔이 바뀌지 않아서 Button을 하나 만들고 거기에 Copy 하면 특정Cell에 색상이 변하더라구요.
문제는 마우스가 Cell을 가리키거나 움직이면 다시 원래의 색상으로 돌아오고
화면 Page가 바뀌면 색상이 다시 원래의 색상으로 다시 돌아가고 있습니다.
그래서 OnDrawCell event에 Breakpoing를 넣어 보았는데
Excute가 되지 않더라구요
어떻게 하면 Execute 될수 있습니까?
또 화면이 바뀌더라도 색상이 안바뀌게 할수가 있는지요?
DafaultDrawing 을 False로 하였을경우도 하여보았지만 실패했습니다
고수님들의 도움을 바랍니다.
그리는데 필요한 정보는 OnDrawCell의 파라매터로 들어오니까 그걸 이용하세요.
ACol, ARow파라매터는 그려야 할 데이터의 행과 열의 정보이고, Rect는 그려야할 위치에 대한 정보 State는 그려야할 데이터의 상태(선택되었나 포커스를 받았나 등...)입니다. 위 정보를 바탕으로 정확한 위치에 그리세요.
<!--CodeS-->
with StrDataGrid1 do
begin
StrDataGrid1.Canvas.Brush.Color := clRed;
StrDataGrid1.Canvas.FillRect(Rect);
StrDataGrid1.Canvas.Font.Color := clWhite;
StrDataGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 3, Cells[ACol, ARow]);
end;
<!--CodeE-->