在您的形式(或數據模塊)聲明一個HandleProductSelection
方法:
procedure HandleProductSelection(Sender: TField);
附加一個AfterOpen
處理程序到OrderTable。在該事件處理程序中,找到Product code字段並將HandleProductSelection方法附加到該字段的OnChange事件。
procedure TForm1.OrderTableAfterOpen(DataSet: TDataSet);
var
Field: TField;
begin
Field := OrderTable.FindField('PCode');
Field.OnChange := HandleProductSelection;
end;
這確保了無論何時你OrderTable被打開,事件處理程序將被連接到正確的領域,這反過來將確保每當商品代碼的內容被改變了HandleProductSelection方法將被調用。
實現HandleProductSelection方法。如果您使用字段編輯器爲產品代碼定義了查找字段,則表單(或數據模塊)上有一個Product數據集。包含產品信息的數據集將根據OrderTable當前記錄中產品代碼字段的值進行定位。
您可以通過簡單地從產品數據集傳送信息到OrderTable利用這在您的HandleProductSelection方法:
procedure TForm1.HandleProductSelection(Sender: TField);
begin
OrderTable.FieldByName('PPrice').AsCurrency :=
DataSetProduct.FieldByName('PPrice').AsCurrency;
end;
非常感謝你。我的靈魂更加糟糕。我在DBGrid上監聽單元格是否被加載並執行一些操作(如果.FieldName ='Product'),那麼DBGrid1.Fields [productIndex] .value:= ... – 2011-12-23 20:00:12