TabSheet 색상을 변경하기 위해서 다음과 같이 DrawTab 이벤트를 발생 시켰습니다.
procedure TBasicDutyTableForm.PCBasicDutyTableDrawTab(
Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect;
Active: Boolean);
begin
with Control.Canvas do
begin
if Active then
begin
Brush.Color := $00C5FAEA;
Rectangle(Rect);
Font.Color := clBtnText;
TextOut(Rect.Left+8, Rect.Top+7, (Control as TPageControl).Pages[TabIndex].Caption);
end
else
begin // 선택되지 않은 탭이면
Brush.Color := $00EFFEF8;//$00E4F8E9;
FillRect(Rect); // 탭 영역을 clBtnFace로 채색
Font.Color := clBtnText; // caption은 clBtnText 색으로
TextOut(Rect.Left+4, Rect.Top+7, (Control as TPageControl).Pages[TabIndex].Caption);
end;
end;
end;
그런데 문제가 하나 생겼습니다.
화면별 사용권한을 설정하기 위해 특정 TabSheet.Visible := False를 처리하다보니
해당 화면상의 TabIndex 가 변경되었어요
그리고 TabSheet.Caption은 기존의 TabIndex(화면상에 보이지 않은 TabIndex) 정보를 참조하여
보여주게 되면서 다른 TabSheet의 Caption을 보여 주는데 이런경우 해결방법은 어떻게하면
좋은까요 고수님들의 조언 부탁 드립니다.
TPageControl 의 ActivePage 를 이용하시면 될거 같네요..
즐거운 프로그래밍 하세요~