2012-04-04 4 views
1

TMS의 DBStringGrid 구성 요소에는 행 높이를 자동으로 조정하는 메서드가 내장되어 있습니다. 메서드를 작동하는 데 필요한 속성 설정을 이해하고 호출하면 제대로 작동합니다.DBGrid가 표시 될 때마다 메서드를 호출하는 방법은 무엇입니까?

그리드가 표시 될 때마다 그리드의 행을 자동 크기 화하고 싶습니다. 메소드 호출을 배치 할 위치를 파악할 수 없습니다. 구성 요소의 OnCustomCellDraw 이벤트가 적절한 선택이라고 생각했지만, 단지 grid.doubleBuffering이 true로 설정된 경우에도 무한 루프와 관련된 깜박임 및 메모리 사용이 발생합니다.

어디에서 그리드가 표시되고 싶으면 AutoSizeRows에 전화를 걸면 좋을까요?

업데이트 : Ken의 답변은 좋지만 DB가 편집 모드로 시작될 때마다 DataSource의 OnDataChange 이벤트에 대한 호출을 찾는 것이 내 용도에 도움이 될 수 있습니다.

+0

. 그래서 적당한 장소가 아닙니다. – TLama

+1

포함 양식의 OnShow 이벤트에서 좋은 장소 일 수 있습니다. –

+0

@Ken, 덧글보다 답이 더 많습니다 ;-) – TLama

답변

2

당신은 폼의 OnShow 이벤트를 (포함) 부모를 사용할 수 있습니다

이 이벤트는 셀이 그려 질 필요가있을 때마다 해고되고 있기 때문에 OnCustomCellDraw``의 깜박임이 발생
procedure TForm1.FormShow(Sender: TObject); 
begin 
    // Make sure grid's data is available by opening the 
    // dataset first, and then call your AUtoSizeRows here. 
end; 
+0

언제나처럼 @Ken, 또 다른 좋은 대답 ... 나는이 모든 유용한 도움을 제공하고 여전히 일할 수있는 시간을 찾아 낼 수 있다는 것에 놀랍니다! –

+0

:) 감사. 데이비드 헤 퍼넌 (David Heffernan)과 RRUZ에 관해서도 똑같은 생각이 듭니다. 나는 그들이 일할 때뿐만 아니라 그들이 잘 때도 궁금합니다. (특히 David - 그는 항상 여기 * ) –

+2

나는 어떤 @DavidHeffernan이 로봇인지 꽤 확신합니다. :) – RRUZ