3

FDMemTable にリンクされた文字列グリッドがあり、(クラス ヘルパーに追加した) AutoSize プロシージャを初めて実行すると、すべてが完璧です。

その後、FDMemTable を再度開いてみると、ヘッダーはデフォルトのサイズに戻りますが、他の行は同じままです。

私の手順は次のとおりです。

procedure TStringGridHelper.AutoSizeCols;
var
  i, W, WMax: integer;
  Column : Integer;
begin
  for Column := 0 to Self.ColumnCount-1 do
  begin
    if Self.ColumnByIndex(Column).Width > 0 then
    begin
      WMax := Round(Canvas.TextWidth(Self.ColumnByIndex(Column).Header));
      for i := 0 to (Self.RowCount - 1) do begin
        W := Round(Canvas.TextWidth(Self.Cells[Column, i]));
        if W > WMax then
          WMax := W;
        if WMax > SizeMax then
        begin
          WMax := SizeMax;
          Break;
        end;
      end;
      Self.ColumnByIndex(Column).Width := WMax + 10;
    end;
  end;
end;

列のサイズを手動で変更すると、通常に戻ります。

XE7 とそのマルチデバイス アプリケーション (FireMonkey) を使用しています。

4

2 に答える 2

0

FDMemTable を (任意のフィールドに) 変更すると、正常に戻りました。

注文手続きに電話しました。

于 2015-07-08T19:27:18.333 に答える
0

これは、Delphi XE7 Update 1 のバグのようです。

Delphi XE8 では、コードは正常に動作します。 ここに画像の説明を入力

Delphi XE7 Update1 では、奇妙に見えます。 ここに画像の説明を入力

于 2015-07-08T14:20:46.347 に答える