2011-10-25 26 views

答えて

7

そうのように、ColWidthsプロパティを使用します。

with StringGrid1 do 
    ColWidths[1] := ClientWidth - ColWidths[0] - 2 * GridLineWidth; 

そして、より堅牢で柔軟なソリューションを、考慮にすべての固定列を取り、列インデックスをパラメータ:

procedure SetColumnFullWidth(Grid: TStringGrid; ACol: Integer); 
var 
    I: Integer; 
    FixedWidth: Integer; 
begin 
    with Grid do 
    if ACol >= FixedCols then 
    begin 
     FixedWidth := 0; 
     for I := 0 to FixedCols - 1 do 
     Inc(FixedWidth, ColWidths[I] + GridLineWidth); 
     ColWidths[ACol] := ClientWidth - FixedWidth - GridLineWidth; 
    end; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    SetColumnFullWidth(StringGrid1, 4); 
end; 
+0

ありがとうございました!これはそれが私のために働く方法です: 'code procedure SetColumnFullWidth(Grid:TStringGrid; ACol:Integer); var I:整数。 FixedWidth:整数。 begin FixedWidth:= 0; I:= 0 to Grid.ColCount - 1 do begin(I = 0)then Grid.ColWidths [I]:= 50; FixedWidth:=固定幅+50;終了 else begin Grid.ColWidths [I]:= 100; FixedWidth:=固定幅+100;終わり; end; Grid.ColWidths [ACol]:=(Grid.Width-FixedWidth)+90; end; 'code –

+0

https://sourceforge.net/p/dzlib/code/HEAD/tree/dzlib/trunk/src/u_dzVclUtils.pas#l110 – dummzeuch

-1

ソリューションがあれば コマンド "grid.AutoFitColumns()" グリッドは1つの "TAdvStringGrid"です。

;)

関連する問題