0

FMX を使用して、Delphi 10.2 で非常に単純なテスト プロジェクトを作成しました。セットアップは簡単です:

  • TClientDataSet にバインドされた TGrid (デザイナで実行)。
  • ユーザーが XML ファイルを開くためのボタン

これはすべて正常に機能し、TGrid には XML ファイルのすべてのレコードが取り込まれます。XML ファイルは、古いプロジェクトの別の TClientDataSet によって作成されます。

さて、問題です。
列を別の位置に移動すると、すべてのデータが台無しになります。これを行うには、マウスを列の上で押したままにし、数列右にドラッグします。
最初は問題ないように見えますが、垂直スクロールを開始すると、データが正しい列に表示されなくなったように見えます。
グリッドの視覚的な部分のデータのみを修正しているように感じます。スクロールを開始するとすぐに、データが正しい列に表示されなくなります。

これは既知のバグですか、それとも私のプロジェクトに何か問題がありますか?
前に言ったように、このプロジェクトにはコードはまったくなく、すべてデザイナーで行われます。(clientdataset1.LoadFromFile オフコースを除く)

4

2 に答える 2

1

データを手動で入力してみることができます ( Grid: TGrid; CDS: TClientDataSet):

procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
  Col: TColumn;
begin
  CDS.Active := True;
  for I := 0 to CDS.FieldDefs.Count - 1 do begin
    Col := TColumn.Create(Grid);
    Grid.AddObject(Col);
    Col.Header := CDS.FieldDefs[I].Name;
    Col.Tag := I;
  end;
  Grid.RowCount := CDS.RecordCount;
end;

procedure TForm1.GridGetValue(Sender: TObject; const ACol, ARow: Integer; var Value: TValue);
begin
  CDS.First;
  CDS.MoveBy(ARow);
  Value := CDS.Fields[ACol].Text;
end;

この後、列に私のソリューションを使用できます: stackoverflow.com/q/43418528/2292722

于 2017-04-18T16:10:13.833 に答える