使用するフォントの高さに合わせてTStringGrid行(DefaultRowHeight)のサイズを自動的に変更する方法は? 私はTStringGrid行のサイズを自動的に変更する方法
Grid.DefaultRowHeightのようなもの:= Grid.Canvas.TextHeight( 'X')+ 4。
しかし、動作しません。小さなフォントの場合、行の高さが大きすぎます。
更新:
実際にはプログラムのロジックに問題があるようです。フォントを複数回変更すると、行の現在の高さが前のフォント変更イベントのフォントのサイズと一致します(これは一歩前です)。
私は、フォントのサイズ変更を傍受するために、このコードを使用します。
procedure TStrGrid.CMFontChanged(var Message: TMessage);
begin
inherited; // let TControl react first
DefaultRowHeight:= Canvas.TextHeight('ApApM')+ 4;
end;
手続きがされるかのように動作します
begin
DefaultRowHeight:= Canvas.TextHeight('ApApM')+ 4;
inherited;
end;
(最初のように、それは高さを変更し、それが実際に設定します正しいフォントサイズなので、高さは一歩前です)
あなたのソリューションに感謝します。 NGLNのハックは余分なペイントを必要としますが、フォントがめったに変更されないので(大したことはないので)大丈夫です。 – Ampere
@Altar私は確かに私の答えを_hack_として記述するつもりはなく、余分なペイントは必要ありません。 – NGLN
@Heinrichあなたの提案は実際にこれらの問題の多くの種類を解決します。しかし、私はちょうどそれをテストし、この状況では動作しません。残念。 – NGLN