선택한 행 (최대 1, 다중 선택 없음)이 항상 다른 배경 colo (u) r을 가져야하는 TStringGrid가 있습니다.TStringGrid에서 선택한 행의 배경색 설정
DefaultDrawing 속성을 false로 설정하고 아래에 표시된 OnDrawCell 이벤트에 대한 메서드를 제공합니다. 그러나 작동하지 않습니다. 어떻게 작동하지 않는지도 정확히 설명 할 수는 없습니다. 내가 할 수만 있다면 나는 이미 문제를 해결했을 것이라고 생각합니다. 모든 배경색이 같은 전체 행을 갖는 대신에 mish-mash라고 말하면 충분합니다. 다중 행에는 "선택됨"색상의 일부 셀이 있고 선택된 색상의 모든 셀에는 선택한 색상이 적용되지 않습니다.
셀의 행을 스트링 그리드의 행과 비교합니다. 선택한 행의 셀만 선택 되었기 때문에 선택한 셀 상태를 확인할 수 없습니다.
procedure TForm1.DatabaseNamesStringGridDrawCell(Sender: TObject;
ACol, ARow: Integer;
Rect: TRect;
State: TGridDrawState);
var cellText :String;
begin
if gdFixed in State then
DatabaseNamesStringGrid.Canvas.Brush.Color := clBtnFace
else
if ARow = DatabaseNamesStringGrid.Row then
DatabaseNamesStringGrid.Canvas.Brush.Color := clAqua
else
DatabaseNamesStringGrid.Canvas.Brush.Color := clWhite;
DatabaseNamesStringGrid.Canvas.FillRect(Rect);
cellText := DatabaseNamesStringGrid.Cells[ACol, ARow];
DatabaseNamesStringGrid.Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, cellText);
end;
Mawg,이 주제는 아니지만 clAqua가 이상하게 보일 것입니다. 매우 선명한 색상입니다! 강조 표시된/선택된 객체를 나타내는 시스템 색상이므로 clHighlight를 대신 사용해보십시오. –
배경색을 설정할 경우 전경색을 명시 적으로 설정해야합니다. AFAICT는 clAqua BG를 clWindowText FG와 결합하고 후자는 시스템의 그래픽 설정을 통해 사용자가 변경할 수 있습니다. –