Проблема хранения TDBImage
|
Краткое руководство по преодолению последствий нарушений трудовой дисциплины.
(Для несознательных компьютерщиков)
Ситуация 1:
Вы опаздываете на работу. На проходной стоит шеф. Ваши действия:
а)Зимний вариант.Снять и спрятать где-нибудь верхнюю одежду. Показать шефу пачку сигарет, объяснив мимоходом, что Вы уже на месте, просто выскочили на секунду в табачный ларек;
б)Летний вариант. Найти пустую коробку (желательно побольше), положить туда что-нибудь потяжелее и поживописнее изобразить погрузочно-разгрузочные работы (с потением и кряхтением);
Ситуация 2:
Вы вышли с товарищем на чашку кофе. Шеф в течении часа ожидает Вас на Вашем рабочем месте. Ваши действия:
а)Сказать,что из винчестера высыпалось несколько кластеров. Пришлось идти занимать у соседей;
б)Сделать удивленное лицо и сказать, что сами целый час торчали под дверью кабинета шефа, для консультации как раз по тому же самому вопросу;
Ситуация 3:
Шеф делает замечание, что после посещения коллеги-компьютерщика от Вас попахивает спиртным и требует объяснений. Ваши действия:
а) Предложите шефу купить новый суперсовременный компьютер, чтобы сэкономить на промывке спиртом контактов и разъёмов.
б) Объясните, что промывали базу данных техническим спиртом;
Ситуация 4:
Вы серьезно превысили лимит работы в Internet'e, просидев несколько часов в bk.ru Ваши действия:
а)Напишите в объяснительной, что новоприобретенная программа пыталась самостоятельно связаться через Internet с разработчиками для согласования каких-то технических деталей;
б)Поясните это возросшим объемом переписки с зарубежными фирмами, которые засыпали Вас выгодными предложениями о работе.
Ситуация 5:
Вы задержались на несколько часов после работы, чтобы добить свою левую халтуру. Шеф интересуется причиной переработки. Ваши действия:
а)Поблагодарите шефа за заботу, в нескольких словах расскажите о своей любви к фирме и намекните на прибавку к зарплате;
б)Объясните,что Вы хотя бы так пытаетесь компенсировать свои частые опоздания на работу и несанкционированные отлучки. Намекните про снятие выговора за опоздания.
|
Исходный код компонента 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;
|
Это все. Проблема решена.
|