特に「カーボン」スタイルを使用するDelphi XE2で簡単なアプリケーションを作成しています。何千行もある大きな String Grid があります。このグリッドのレコードをループし、いくつかの作業を行い、グリッドにいくつかの変更を加えるプロセスがあります。プロセスがループすると、現在処理中の行が強調表示されます (設定によりTStringGrid.Row
)。
問題は、このグリッドにスタイルを適用すると、行が変更されてもスクロール バーの位置が変わらないことです。ループは処理中に各行を適切に強調表示しますが、リストの最後に近づくまでに、右側のスクロール バーはまだ一番上にあります。
グリッドのスクロール バーを一緒に移動させるにはどうすればよいですか?
これが私がループしている方法のサンプルです:
procedure TForm1.Button1Click(Sender: TObject);
var
X: Integer;
begin
FStop:= False;
for X:= 1 to Grid.RowCount - 1 do begin
if FStop then Break; //Ability to stop loop
Grid.Row:= X; //Highlight current row
DoSomeLenghyWork;
ChangeSomethingOnGrid;
Application.ProcessMessages; //Keep program responding
end;
end;
スタイルを使用していないときは、すべて正常に機能します。