2015-09-18 70 views
-1

我在窗體上有一個TDBImage控件。如何判斷TDBImage是否已被刪除/清空?

用戶可以CTRL - V圖像進入它。他們還可以在控制中清除圖像,並在屏幕上顯示CTRL - X

當我以後嘗試將TDBImage的內容保存到我的數據庫時,我得到內存訪問衝突,特別是當我生成內存流時。

當然,我的第一個傾向是在我執行此操作之前(並清除數據庫字段我自己),看看TDBImage是否有些空虛。但我似乎無法找到一種方法來檢測控件是否由用戶編輯了CTRL - X'。

下面是我現有代碼看起來像是有幫助的一個非常簡潔的版本。

var 
    photo: TDBImage; 
    photoValue: TPicture; 
    photoStream: TMemoryStream; 
    updateQuery: TOraQuery; 
begin 
    // .... 
    // It gets through here without complaint 
    photoValue := photo.Picture; 

    // It fails on this line 
    photoValue.Graphic.SaveToStream(photoStream); 
    updateQuery.paramByName('picture').ParamType := ptInput; 
    updateQuery.paramByName('picture').AsOraBlob.LoadFromStream(photoStream); 
    updateQuery.ExecSQL; 
    // ... 
end; 

如何檢測空/ CTRL-Xed TDBImage控件?

回答

1

您可以檢查Graphic屬性是零,像這樣

if DBImage1.Picture.Graphic<>nil then 
    //do something 
+1

'TGraphic'也有一個'Empty'屬性,如果你想跳過分配和分配但除此之外,沒有數據的圖像: 'if(DBImage1.Picture.Graphic <> nil)和(不是DBImage1.Picture.Graphic.Empty)然後...' –

相關問題