:私は、Delphi XE3に次のコードを使用していますDFM抽出物 は以下の通りである。その操作は自明でなければなりません。Value
計算された フィールドをListBoxの選択した値に設定します。 ClientDataSet.First
を呼び出すListBoxのOnClick ハンドラのポイントは、データセットをスクロールさせ、 がそのOnCalcFieldsイベントを呼び出すようにすることです。
プロジェクトでは、あなたが主張している問題は発生しません(ただし、 が「受け入れられていない」ということを正確に意味していません)。リストボックス のいずれかの項目がクリックされた場合、対応する通貨の値は、DBEditの前に と表示されます。ただし、デフォルト値は2に丸められているため、0.1875 が「0.19」と表示されます小数位。私のプログラムはD7とD10シアトルで同じように動作します。
あなたの問題を引き起こしているのは、qに含まれている ではないものです。これは、MCVEの価値がない場合に表示されます。
は、コメントでは、言った:
私はCalcのボタンを押すと、私は計算フィールドにEdit1.text値を代入しています。
あなたのButton1Clickハンドラは、あなたのqのコードに従って、そうではありません。 がの場合、OnCalcFieldsイベント以外の場所で計算されたフィールドに値を割り当てる場合は、データセットが適切なState
(TDataSetState
)であることを確認する必要があります。あなたですか?
コード:
type
TForm1 = class(TForm)
ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;
DBEdit1: TDBEdit;
ClientDataSet1ID: TIntegerField;
ClientDataSet1Value: TCurrencyField;
ListBox1: TListBox;
procedure ClientDataSet1CalcFields(DataSet: TDataSet);
procedure FormCreate(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
public
end;
[...]
procedure TForm1.ClientDataSet1CalcFields(DataSet: TDataSet);
begin
ClientDataSet1.FieldByName('Value').AsString := ListBox1.Items[ListBox1.ItemIndex];
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.ItemIndex := 0;
ClientDataSet1.CreateDataSet;
ClientDataSet1.InsertRecord([1]);
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
ClientDataSet1.First;
end;
DFMが
object DBEdit1: TDBEdit
DataField = 'Value'
DataSource = DataSource1
end
object ListBox1: TListBox
Items.Strings = (
'0'
'0.1875'
'0.25'
'0.50'
'0.75'
'1.0')
OnClick = ListBox1Click
end
object ClientDataSet1: TClientDataSet
Aggregates = <>
Params = <>
OnCalcFields = ClientDataSet1CalcFields
object ClientDataSet1ID: TIntegerField
FieldName = 'ID'
end
object ClientDataSet1Value: TCurrencyField
FieldKind = fkCalculated
FieldName = 'Value'
Calculated = True
end
end
object DataSource1: TDataSource
DataSet = ClientDataSet1
end
を抽出あなたはフィールドタイプを投稿する必要がありますし、どのようなSQLのデータセットを充填されます。 – RBA
あなたのqにはMCVEが必要です。また、なぜフィールド値の編集を許可するTDBEditを計算フィールドで使用していますか? – MartynA
Calcボタンを押すと、私はEdit1.text値を計算フィールドに割り当てています。しかし、0.25,0.50などの計算フィールドは更新されません。 –