我有一個DBGrid鏈接到DataSource(鏈接到TADOTable)。所有這些都通過TADOConnection運行並連接到MS Access網格包含各種值,我想在單擊特定字段時對其進行編輯。 我沒有遇到更新普通文本字段的任何困難,但是我無法獲得編輯包含OLE對象的字段的方法。從dbgrid中選擇字段
我想要做的是,當我點擊一個字段時,我想打開一個打開的對話框並讓我選擇一個文件。之後,我選擇的文件必須更新到我選擇的行的字段。
我該如何去做這件事?
我有一個DBGrid鏈接到DataSource(鏈接到TADOTable)。所有這些都通過TADOConnection運行並連接到MS Access網格包含各種值,我想在單擊特定字段時對其進行編輯。 我沒有遇到更新普通文本字段的任何困難,但是我無法獲得編輯包含OLE對象的字段的方法。從dbgrid中選擇字段
我想要做的是,當我點擊一個字段時,我想打開一個打開的對話框並讓我選擇一個文件。之後,我選擇的文件必須更新到我選擇的行的字段。
我該如何去做這件事?
自己想出來。張貼在這裏,以便其他人可以受益。我剛剛去了我的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
DevExpress QuantumGrid具有此功能以及許多其他功能。 http://www.devexpress.com/Products/VCL/ExQuantumGrid/ – Adam 2012-07-20 14:22:35
謝謝,但有什麼辦法可以在不使用非標準組件的情況下實現這一點嗎? – coder123 2012-07-20 14:26:44
您可能想嘗試網格的列屬性。在這裏,您可以將列定義爲具有省略號按鈕,然後您可以處理事件......這可能會提供您正在查找的功能類型。 – GDF 2012-07-20 15:54:36