Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
Delphi
(Модератор:
x77
) > Тема:
Отображение рисунка в DBImage
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Отображение рисунка в DBImage (Прочитано 22018 раз)
0 Пользователей и 1 Гость смотрят эту тему.
murad.88
Гость
Отображение рисунка в DBImage
«
:
19-11-2008 10:09 »
Как отобразить в DBImage рисунок находяшийся в *.mdb (Access)
БД имеет поле 'Photo' тип данных 'Поле объекта OLE' в это поле я вставляю BMP, и нужно этот рисунок отобразить в DBImage
Зарее Спапасибо Всем !!
Записан
murad.88
Гость
Re: Отображение рисунка в DBImage
«
Ответ #1 :
19-11-2008 13:40 »
Пишу след. код:
Код: (Delphi)
procedure
TForm4
.
ADOTable1AfterScroll
(
DataSet
:
TDataSet
)
;
var
Bitmap
:
TBitmap
;
BS
:
TADOBlobStream
;
begin
try
BS
:
=
TADOBlobStream
.
Create
(
DataModule2
.
ADOTable1
.
FieldByName
(
'Photo'
)
,
bmRead
)
;
BS
.
Seek
(
78
,
soFromBeginning
)
;
Bitmap
:
=
TBitmap
.
Create
;
Bitmap
.
LoadFromStream
(
BS
)
;
DBImage1
.
Picture
.
Graphic
:
=
Bitmap
;
finally
Bitmap
.
Free
;
BS
.
Free
;
end
;
end
;
Но вылетает Ошибка: Incompatible types: 'TBlobField' and 'TField'
Записан
Oldy
Команда клуба
Offline
Пол:
Re: Отображение рисунка в DBImage
«
Ответ #2 :
19-11-2008 16:08 »
Что в USES?
Записан
С уважением, Oldy.
zubr
Гость
Re: Отображение рисунка в DBImage
«
Ответ #3 :
19-11-2008 17:26 »
Ну если используется DBImage, то зачем вообще так делать? Тогда DBImage надо связать с соответствующим полем 'Photo'. А если уж таким способом делать, то лучше с TImage:
Код:
Image1.Picture.Assign(TBlobField(DataModule2.ADOTable1.FieldByName('Photo')));
«
Последнее редактирование: 20-11-2008 10:42 от zubr
»
Записан
murad.88
Гость
Re: Отображение рисунка в DBImage
«
Ответ #4 :
20-11-2008 09:35 »
Цитата: zubr от 19-11-2008 17:26
Ну если используется DBImage, то зачем вообще так делать? Тогда DBImage надо связать с соответствующим полем 'Photo'. А
Так когда я связываю с полем Photo в свойствах DBImage то выходит ошибка "bitmap image is not valid".
Записан
murad.88
Гость
Re: Отображение рисунка в DBImage
«
Ответ #5 :
20-11-2008 09:37 »
Цитата: Oldy от 19-11-2008 16:08
Что в USES?
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DBCtrls, Buttons, Grids, DBGrids, DB,
ComCtrls, TabNotBk, ADODB;
Записан
zubr
Гость
Re: Отображение рисунка в DBImage
«
Ответ #6 :
20-11-2008 10:37 »
murad.88
, значит у тебя в БД не битмап (bmp), а возможно какой то другой формат (jpg, gif, png и т. п.). Если это так тогда надо сначала получить имидж в нужном формате, к примеру:
Код:
If TBlobField(query.FieldByName('Photo')).BlobSize>0 then
begin
jpg:=TJpegImage.Create;
try
jpg.Assign(TBlobField(query.FieldByName('Photo')));
Image1.Picture.Assign(jpg);
finally
jpg.Free;
end;
end;
P.S. Извини неправильно код написал в своем предыдущем посте, уже исправил.
Записан
murad.88
Гость
Re: Отображение рисунка в DBImage
«
Ответ #7 :
20-11-2008 19:04 »
Вряд ли там другой формат, если только сам Access не изменил его при загрузки bmp-шника в поле Photo
Спасибо
zubr
, твой пример мне пригодился в другом моменте написания кода !!
Но я уже разобрался с загрузкой изображения.
Код:
procedure TForm4.DBImage1Click(Sender: TObject);
var
Bitmap: TBitmap;
BS: TADOBlobStream;
begin
try
BS:= TADOBlobStream.Create(TBlobField(DataModule2.ADOTable1.FieldByName('Photo')), bmRead);
BS.Seek(82, soFromBeginning);
Bitmap:= TBitmap.Create;
Bitmap.LoadFromStream(BS);
DBImage1.Picture.Graphic:= Bitmap;
finally
Bitmap.Free;
BS.Free;
end;
end;
Только вот проблема возникла в DMImage постояyно отображается рисунок первого поля DBGrid.
Не знаю на какое событие надо реагировать чтоб в DBImage отображался тот рисунок где находится текущий указатель компоненте DBGrid.
«
Последнее редактирование: 21-11-2008 09:53 от murad.88
»
Записан
zubr
Гость
Re: Отображение рисунка в DBImage
«
Ответ #8 :
20-11-2008 20:42 »
murad.88
, ты же правильно в предыдущем примере делал - в событии ADOTable1AfterScroll.
Записан
murad.88
Гость
Re: Отображение рисунка в DBImage
«
Ответ #9 :
21-11-2008 00:32 »
Цитата: zubr от 20-11-2008 20:42
ты же правильно в предыдущем примере делал - в событии ADOTable1AfterScroll.
Не знаю почему
но возникала ИС при ADOTable1AfterScroll, а вот ADOQuery1BeforeScroll все нормально
«
Последнее редактирование: 21-11-2008 00:35 от murad.88
»
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
Delphi
(Модератор:
x77
) > Тема:
Отображение рисунка в DBImage
Загружается...