簡體   English   中英

如何判斷我的 TDBImage 是否已被擦除/清空?

[英]How do I tell if TDBImage my has been erased/emptied?

我的表單上有一個 TDBImage 控件。

用戶可以CTRL - V圖像進去。 他們還可以在控件中按CTRL - X來清除圖像。

當我稍后嘗試將該 TDBImage 的內容保存到我的數據庫時,我會遇到內存訪問沖突,特別是當我生成內存流時。

當然,我的第一個傾向是在我這樣做之前查看 TDBImage 是否為空(並自行清除數據庫字段)。 但我似乎無法找到一種方法來檢測控件是否已被用戶CTRL - X 'ed。

這是我現有代碼的一個非常簡潔的版本,如果有幫助的話。

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 控件?

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM