Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[10717] Re:[질문] 디비그리드 색상 및 Height 값 바꾸기..
박지훈.임프 [cbuilder] 2048 읽음    2006-05-31 04:32
디비그리드의 로우 높이를 바꾸려면 DefaultRowHeight와 RowHeights[] 속성에 접근해야 하는데, 이 속성들은
protected로 되어있어서 기본적으로는 상속을 받아 새 컴포넌트를 만들지 않는 한은 접근이 불가능합니다.
하지만 다음과 같은 비교적 간단한 OOP 트릭을 쓰면 가능합니다.

디비그리드가 있는 폼 클래스의 선언부 위쪽, type 아래에 다음과 같이 추가합니다.

type
  TDBGrid = class(DBGrids.TDBGrid);

  TForm1 = class(TForm)
...

이렇게 하고 나면 디비그리드의 protected 멤버인 DefaultRowHeight와 RowHeights[]에 접근이 가능해집니다.
  DBGrid1.DefaultRowHeight := 32;
  DBGrid1.RowHeights[0] := 20;
코드에서 이런 식으로 해주면 끝입니다. IDE에서 폼디자인을 할 때는 원래 그대로 보이겠지만, 실행해보면 로우의 높이가 바뀌에서 나타날 겁니다.

색깔을 바꿔주는 것은 OnDrawColumnCell 이벤트에 핸들러를 만들어주면 됩니다.
(비슷한 OnDrawDataCell 이벤트도 있는데, 하위 호환성을 위해서만 존재하고 쓰지 않도록 권고되고 있습니다.)

예를 들면 다음과 같이 하면,
if Column.FieldName='필드이름' then
  DBGrid1.Canvas.Brush.Color := clRed;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
지정한 필드는 디비그리드에서 뻘건 색으로 나올 겁니다.

그럼....


개발자 님이 쓰신 글 :
: 안녕하세요.. 이곳에서 많은 정보를 얻고 있는 초보 개발자입니다..
:
: 다름이 아니라 이번에 간단한 프로그램을 짜고 있는데... 디비그리드를 좀 더 디테일하게
: 접근해야할 일이 생겼습니다..
:
: 무슨 말이냐 하면... 디비 그리드의 Height값을 변경하고... 선택되는 바의 Color을 바꾸고..
: 또 다중 선택되었을때의 Color을 다양하게 변경하고 싶습니다..
:
: 이와 관련해 간단한 예제가 있는 곳이나... 조언을 말씀해 주시면 고맙겠습니다..
: 디비그리드는 Rx것을 사용하고 있습니다...
:
: 감사합니다..

+ -

관련 글 리스트
10702 [질문] 디비그리드 색상 및 Height 값 바꾸기.. 개발자 1454 2006/05/18
10717     Re:[질문] 디비그리드 색상 및 Height 값 바꾸기.. 박지훈.임프 2048 2006/05/31
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.