델파이 TDBGrid 에서 Ctrl키 Shift 등으로 multi selected 할 경우 선택된 것을 다시 클릭하여 선택취소할 경우 그림처럼 현재 선택셀이 Selected와 무관하게 항상 파란색 컬러로 선택되어 헤갈려 보일경우가 있다
이럴경우 onDrawColumnCell 이벤트에 다음과 같이 코딩하면 다음 그림처럼 깔끔한 모양이 보여진다.
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if TDBGrid(Sender).SelectedRows.CurrentRowSelected =False then
begin
TDBGrid(Sender).Canvas.Brush.Color := clWindow; //clWhite;
TDBGrid(Sender).Canvas.Font.Color := clWindowText; //clBlack;
end;
TDBGrid(Sender).Canvas.FillRect(Rect);
TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
물론 다중선택시 TDBGrid의 옵션은 다음과 같이 설정한다.
(추가)
//한줄레코드 색깔넣기, 다중선택 깔끔하게
if qrHw300_list.FieldByName('WORK_CHK').AsString = '재직' then
begin
if TDBGrid(Sender).SelectedRows.CurrentRowSelected = True then
begin
TDBGrid(Sender).Canvas.Brush.Color := clHighlight;
TDBGrid(Sender).Canvas.Font.Color := clWhite;
end
else
begin
TDBGrid(Sender).Canvas.Brush.Color := clWhite;
TDBGrid(Sender).Canvas.Font.Color := clBlack;
end;
end
else //퇴직
begin
if TDBGrid(Sender).SelectedRows.CurrentRowSelected = True then
begin
TDBGrid(Sender).Canvas.Brush.Color := clHighlight;
TDBGrid(Sender).Canvas.Font.Color := clRed;
end
else
begin
TDBGrid(Sender).Canvas.Brush.Color := clWhite;
TDBGrid(Sender).Canvas.Font.Color := clRed;
end;
end;
TDBGrid(Sender).Canvas.FillRect(Rect);
TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
'델파이' 카테고리의 다른 글
ScrollBar 윈도우메시지 TWMVScroll 한계 극복 GetScrollInfo , TMemo 스크롤바 이동 (0) | 2015.06.10 |
---|---|
델파이 배열 상수 사용법, 로컬 디렉토리에서 특정경로의 상위폴더 얻기 (0) | 2015.06.05 |
ADO 이용한 엑셀(*.xlsx), 콤마구분자파일(*.csv), 탭구분자파일(*.txt) 자료 읽기 (0) | 2015.01.01 |
format함수 formatdatetime 함수 Formatting 스트링, 초단위->시분초단위 (0) | 2014.10.07 |
TDateTimePicker 의 이벤트 사용 (0) | 2014.08.14 |