델파이
그리드(TStringgrid, TDBGrid) 타이틀 그룹 패널(TPanel) 로 만들기
미스터몽키
2018. 2. 13. 17:17
델파이에서 스트링그리드 타이틀을 그룹핑하여 만들고 싶을 때가 있다.
예를들어
전년도 | 현재년도
--------------------------------
신규 | 해지 | 증감 | 신규 | 해지 | 증감
-------------------------------
"전년도" "현재년도" 를 TStringgrid 위에 TPanel 로 만들수 있다.
이때 TStringgrid의 컬럼이 많아 좌우 스크롤을 하면 TPanel은 그대로 있어 원하는 위치가 아닌 곳에 표시된다.
이것을 해결하는 방법은 스트링그리드의 onDrawCell에서 TPanel의 위치를 설정해주면 된다.
procedure TfrmHw400.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var rt: TRect; begin //11번째 컬럼 위에 타이틀그룹 패널 위치 설정 ************* rt := StringGrid1.CellRect(11,0); if rt.Left > 0 then //StringGrid1.CellRect(11,0)이 화면에 보일때 pnTitleGroup.Left := rt.Left; //**************************************** | cs |
(추가)
TDBGrid에서는
rt := TStringGrid(DBGrid1).CellRect(34,0);
처럼 TDBGrid를 TStringGrid로 타입변환하여 캐스팅하여 사용하면된다.
단 이때 Grid의 Indicator가 인덱스 0이고 첫번째 컬럼 인덱스는 1부터시작한다.