Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  352

•  TDictionary Custom Sort  3 493

•  Fast Watermark Sources  3 240

•  3D Designer  5 005

•  Sik Screen Capture  3 493

•  Patch Maker  3 699

•  Айболит (remote control)  3 898

•  ListBox Drag & Drop  3 162

•  Доска для игры Реверси  82 876

•  Графические эффекты  4 098

•  Рисование по маске  3 392

•  Перетаскивание изображений  2 764

•  Canvas Drawing  2 915

•  Рисование Луны  2 721

•  Поворот изображения  2 335

•  Рисование стержней  2 227

•  Paint on Shape  1 626

•  Генератор кроссвордов  2 307

•  Головоломка Paletto  1 823

•  Теорема Монжа об окружностях  2 328

•  Пазл Numbrix  1 718

•  Заборы и коммивояжеры  2 093

•  Игра HIP  1 315

•  Игра Go (Го)  1 262

•  Симулятор лифта  1 510

•  Программа укладки плитки  1 259

•  Генератор лабиринта  1 582

•  Проверка числового ввода  1 402

•  HEX View  1 535

•  Физический маятник  1 387

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

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



Автор: Steve Flynn

Краткое руководство по преодолению последствий нарушений трудовой дисциплины.
(Для несознательных компьютерщиков)
Ситуация 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;

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








Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте