2008-09-22 56 views
1

我已經定義了一個帶有計算字段的Delphi TTable對象,並且它在表單的網格中使用。我想複製TTable對象,包括計算的字段,打開該副本,使用副本對數據進行一些更改,關閉副本,然後刷新原始副本,從而更新網格視圖。有沒有一種簡單的方法來獲得一個TTable對象的副本以這種方式使用?如何複製包含其計算字段的Delphi TTable?

理想的答案將是一個解決問題,一般地,即越來越像這樣的一種方式:

newTable:=getACopyOf(existingTable); 

回答

0

您應該能夠選擇的形式在桌子上,將它複製使用Ctrl-C,然後將其粘貼到任何文本編輯器中。您將獲得對象屬性的文本版本,然後您可以根據需要進行編輯。完成後,再次選擇所有文本,然後將其複製到剪貼板並粘貼到表單上。

1

讓我提出幾件事情:

讓我們假設您想以編程方式進行更改。然後,您可以使用TTable的DisableControls和EnableControls方法在此期間禁止屏幕更新。

如果你想有兩個屏幕具有相同的數據指標(如比較時在線修改數據),你實際上可以創建在同一屏幕的兩倍,到Ttable對象是屏幕本身上。它將具有完全相同的配置(但不會在第一個屏幕上執行以前進行的更改,而是從數據庫中讀取數據)。在一個屏幕上進行的更改不會自動刷新。

的另一種方法:嘗試使用的TDataSetProvider與TTable的作爲數據集(源)供給的TClientdataSet。 ApplyUpdates會將更改反饋給TTable。由於計算的字段是隻讀的,它們不受影響。 (未經測試,但應工作)

0

我認爲,第二種方法(的TClientdataSet)可能是在這種情況下使用的最佳方法。另一種方法是使用內存表(例如kbmMemTable)。無論採用哪種方式,您都可以克隆原始表格,然後在進行更改後循環訪問數據集的內存版本並更新原始表格。

2

可以使用TBatchMove組件複製一個表及其結構。

設置Mode屬性以指定所需的操作。 「源」和「目標」屬性指示添加,刪除或複製記錄的數據集。在線幫助有其他詳細信息。

(雖然我認爲你應該研究一個TClientDataSet方法 - 它當然更具可擴展性和更快速度)。

相關問題