2011-01-06 21 views
1

私は、ユーザーが更新できるようにしなければならない状況があります(CDSに接続された)最後の入力を保持するdbgridの2つのフィールド。だから(ユーザーがデータを入力した後)現在フォーカスされているコントロールを取得する必要があるので、前のフィールドデータがあれば削除します。私はこれらの2つ以外の分野も持っています。TClientDataSetの現在のフォーカスされたフィールド

グリッドに関連するイベントを使用しないことが主張されていたため、これを達成するためにCDSイベントのみを使用する必要がありました。

ありがとうございます。 Vijay。

答えて

4

フィールドのOnChangeイベントを使用し、もしあれば、単に他のフィールドの値をクリアします。このような

何か:

TForm1.cdsField1Change(Sender: TField); 
begin 
    if not Sender.IsNull then 
    cdsField2.Clear; 
end; 

TForm1.cdsField2Change(Sender: TField); 
begin 
    if not Sender.IsNull then 
    cdsField1.Clear; 
end; 
+2

正しい原則が、そのコードは、フィールド2フィールド1変更(無限ループが発生することはありませんフィールド1は無限に変わる)? – Stuart

+0

@Stuartのおかげで、私は私の答えにStartOveflowを防ぐコードを変更しました。 – jachguate

+0

probs - ちょうどupvoted ur答え: – Stuart

関連する問題