디비그리드의 로우 높이를 바꾸려면 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것을 사용하고 있습니다...
:
: 감사합니다..
|