델파이

그리드(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부터시작한다.