2012-07-20 81 views
0

我有一個DBGrid鏈接到DataSource(鏈接到TADOTable)。所有這些都通過TADOConnection運行並連接到MS Access網格包含各種值,我想在單擊特定字段時對其進行編輯。 我沒有遇到更新普通文本字段的任何困難,但是我無法獲得編輯包含OLE對象的字段的方法。從dbgrid中選擇字段

我想要做的是,當我點擊一個字段時,我想打開一個打開的對話框並讓我選擇一個文件。之後,我選擇的文件必須更新到我選擇的行的字段。

我該如何去做這件事?

+0

DevExpress QuantumGrid具有此功能以及許多其他功能。 http://www.devexpress.com/Products/VCL/ExQuantumGrid/ – Adam 2012-07-20 14:22:35

+0

謝謝,但有什麼辦法可以在不使用非標準組件的情況下實現這一點嗎? – coder123 2012-07-20 14:26:44

+0

您可能想嘗試網格的列屬性。在這裏,您可以將列定義爲具有省略號按鈕,然後您可以處理事件......這可能會提供您正在查找的功能類型。 – GDF 2012-07-20 15:54:36

回答

0

自己想出來。張貼在這裏,以便其他人可以受益。我剛剛去了我的DBGrid和對象檢查,下活動,我選擇OnCellClick:

procedure TfrmOne.dbgOneCellClick(Column: TColumn); 
begin 
var 
    line : integer; 
begin 
    line := DataSource1.DataSet.FieldValues['ID']; 

正如你所看到的,行獲取所選行的字段值,在這種情況下,ID。每行都有其唯一的ID(主鍵),鏈接/來自數據庫。與此主鍵,我做了一個簡單的if語句:

tblOne.Close; 
tblOne.Open; 
tblOne.First 
while not tblOne.Eof do 
if tblOne['ID'] = line then 
begin 
if OpenDialog1.Execute then 
    {*Insert Code here*} 
Exit; 
end else 
tblOne.Next; 
end; 

在第二一段代碼基本上會發生什麼時,該ID匹配到當前的錶行。如果不匹配,數據庫將在一行上移動,直到它最終匹配。從這裏可以專門處理該行(如最初在DBGrid中看到/選擇的那樣)和更新字段(OLE對象)。

這不是Append或Edit命令的替代品,它只允許用戶執行opendialog,然後將這些文件保存到DBGrid中的選定字段。請注意,要將照片添加到數據庫(jpeg),您需要blobstreams等。可以在此處找到完整指南:http://delphi.about.com/od/database/l/aa030601a.htm