Советы по Delphi

         

Проблема хранения TDBImage


Исходный код компонента DBImage содержит ошибку, поскольку пробует загрузить данные буфера обмена, ища CF_PICTURE. А это несовместимо с хранящимися в поле данными.

Я исправил эту ошибку, изменив исходный код таким образом, чтобы данные буфера обмена сначала читались во временный TBitmap. TBitmap регистрируется как CF_PICTURE. Временное изображение затем назначалось полю и, поскольку оно также работает с изображениями, то и данным поля.

Все это потребует от вас изменений в исходном коде VCL, конкретно - в модуле DBCTRLS.PAS. Затем, естественно, это необходимо перекомпилить и пересобрать:

    procedure TDBImage.PasteFromClipboard; var ClipBrdBmp: TBitmap; begin ClipBrdBmp := TBitmap.Create; if Clipboard.HasFormat(CF_BITMAP) and FDataLink.Edit then begin ClipBrdBmp.Assign(Clipboard); Picture.Assign(ClipBrdBmp); end; ClipBrdBmp.Free; end;

Это все. Проблема решена.

- Steve Flynn [000869]



Содержание раздела