![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Всем доброго времени суток. У меня есть БД на Access в нём имеется поле ('Картинка') в котором загружено изображение формата bmp. Требуется вытащить его от туда и поместить в Image1. Я пробовал разными способами на всегда вылазиет ошибка
Bitmap image is not valid помогите разобраться в чём дело. Способы которым я пытался сделать это: 1) Код:
Image1.Picture.Assign(frDM.ADOQuery1.FieldByName('Картинка'))Код:
var
ImgStream:TMemoryStream;
frDM.ADOQuery1.SQL.Text:='SELECT * FROM Table1';
frDM.ADOQuery1.Open;
frDM.ADOQuery1.First;
ImgStream:=TMemoryStream.Create;
(frDM.ADOQuery1.FieldByName('Картинка') as TBlobField).SaveToStream(ImgStream);
ImgStream.Position:=0;
Image1.Visible:=True;
ImgStream.Free; |
| Этот пользователь сказал Спасибо IceExecutioner за это полезное сообщение: | ||
Admin (01.10.2013)
| ||
|
#2
|
||||
|
||||
|
Все намного проще. Для отображения картинок из базы данных используйте компонент DBImage. Укажите для него DataSource и DataField и все.
|
|
#3
|
||||
|
||||
|
|
|
#4
|
||||
|
||||
|
Где-то я читал, что акцесс при записи картинки добавляет несколько байт от себя и это мешает нормально картинки читать в TDBImage.
И наоборот, картинка вставленная извне нехочет отображается акцесом. Здесь наблюдается очень похожая картина. Так-что видимо вам придется заново обновить данные, но уже из под Дельфи. |
|
#5
|
|||
|
|||
|
Цитата:
А можно поподробнее, как вставить картинку из под Делфи в Access? |
|
#6
|
||||
|
||||
|
вот вам примерчик, как это можно сделать:
Код:
unit Unit8;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtDlgs, ExtCtrls, DBCtrls, StdCtrls, DB, Grids, DBGrids, DBClient;
type
TForm8 = class(TForm)
DataSource1: TDataSource;
DBImage1: TDBImage;
DBGrid1: TDBGrid;
Button1: TButton;
DBNavigator1: TDBNavigator;
OpenPictureDialog1: TOpenPictureDialog;
ClientDataSet1: TClientDataSet;
ClientDataSet1ID: TAutoIncField;
ClientDataSet1Photo: TBlobField;
ClientDataSet1FileName: TStringField;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form8: TForm8;
implementation
{$R *.dfm}
procedure TForm8.Button1Click(Sender: TObject);
begin
if not OpenPictureDialog1.Execute then Exit;
ClientDataSet1.Append;
ClientDataSet1.FieldValues['FileName'] := OpenPictureDialog1.FileName;
DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
ClientDataSet1.Post;
end;
end.DFM-файл Код:
object Form8: TForm8
Left = 0
Top = 0
Caption = 'Form8'
ClientHeight = 289
ClientWidth = 537
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object DBImage1: TDBImage
Left = 368
Top = 8
Width = 161
Height = 161
DataField = 'Photo'
DataSource = DataSource1
TabOrder = 0
end
object DBGrid1: TDBGrid
Left = 8
Top = 8
Width = 354
Height = 257
DataSource = DataSource1
TabOrder = 1
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'Tahoma'
TitleFont.Style = []
Columns = <
item
Expanded = False
FieldName = 'ID'
Visible = True
end
item
Expanded = False
FieldName = 'Photo'
Visible = False
end
item
Expanded = False
FieldName = 'FileName'
Width = 272
Visible = True
end>
end
object Button1: TButton
Left = 416
Top = 175
Width = 75
Height = 25
Caption = 'Load'
TabOrder = 2
OnClick = Button1Click
end
object DBNavigator1: TDBNavigator
Left = 8
Top = 269
Width = 200
Height = 18
DataSource = DataSource1
TabOrder = 3
end
object DataSource1: TDataSource
DataSet = ClientDataSet1
Left = 152
Top = 80
end
object OpenPictureDialog1: TOpenPictureDialog
Left = 432
Top = 72
end
object ClientDataSet1: TClientDataSet
Active = True
Aggregates = <>
Params = <>
Left = 96
Top = 80
Data = {
900000009619E0BD010000001800000003000000000003000000900002494404
0001000000010007535542545950450200490008004175746F696E6300055068
6F746F04004B0000000100075355425459504502004900070042696E61727900
0846696C654E616D65010049000000010005574944544802000200640001000C
4155544F494E4356414C55450400010001000000}
object ClientDataSet1ID: TAutoIncField
FieldName = 'ID'
end
object ClientDataSet1Photo: TBlobField
FieldName = 'Photo'
end
object ClientDataSet1FileName: TStringField
FieldName = 'FileName'
Size = 100
end
end
end |