![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Таблица отображается в dbgrid. Вот код 2 кнопок. Не грузит изображения. Уже по всякому пробывал надоело мучиться с ним. Может поможет кто?
![]() Код:
procedure TForm10.sButton4Click(Sender: TObject);
var
Blob:TMemoryStream;
begin
try
if OpenPictureDialog1.Execute then
begin
ADOQuery1.Edit;
TBLOBField(ADOQuery1.FieldByName('Фото')).LoadFromFile(OpenPictureDialog1.FileName);
ADOQuery1.Post;
ADOQuery1.Refresh;
end;
except
on e:Exception do
end;
end;
procedure TForm10.sButton5Click(Sender: TObject);
var
jpg:TJPEGImage;
Blob:TMemoryStream;
bmp:TBitmap;
begin
try
bmp:=TBitmap.Create;
jpg:=TJPEGImage.Create;
ADOQuery1.First;
Blob:=TADOBlobStream.Create(TBlobField(ADOQuery1.FieldByName('Фото')),bmRead);
jpg.LoadFromStream(Blob);
DBImage1.Picture.Assign(jpg);
ADOQuery1.Post;
ADOQuery1.Refresh;
jpg.Free;
Blob.Free;
bmp.Free;
except
on e:Exception do
begin
jpg.Free;
Blob.Free;
bmp.Free;
end;
end;
end; |
|
#2
|
||||
|
||||
|
Не уверен, что вообще у вас получится отобразить jpg через DBImage1. Методы для отображения JPG есть только у TImage. Вот в него и отображайте из базы текущее значение поля примерно так:
Код:
procedure TForm32.ADOTable1AfterPost(DataSet: TDataSet);
var
Jpg: TJPEGImage;
begin
if DataSet['Picture'] = null then Exit;
Jpg := TJpegImage.Create;
Jpg.LoadFromStream(TADOBlobStream.Create(TBlobField(ADOTable1.FieldByName('Picture')), bmRead));
Image1.Picture.Bitmap.Assign(Jpg);
Jpg.Free;
end; |
| Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
Вовайн (12.03.2015)
| ||
|
#3
|
|||
|
|||
|
Цитата:
|
|
#4
|
||||
|
||||
|
Вот пример из DRKB для загрузки\выгрузки блобом *.jpg, только предварительно напихайте в табличку несколько картинок и потом пощёлкайте мышой по записям
|
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Вовайн (12.03.2015)
| ||
|
#5
|
|||
|
|||
|
Цитата:
![]() А не работает, спасибо) Последний раз редактировалось Вовайн, 12.03.2015 в 19:21. |
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Вовайн (13.03.2015)
| ||
|
#7
|
|||
|
|||
|
Цитата:
Тут изменял. Что то не так может? Код:
ADOTable1.ConnectionString:= 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=' + ExtractFileDir(ParamSTR(0)) + '\База.accdb;' + 'Mode=ReadWrite;Persist Security Info=false'; ADOTable1.Active:= true; |
|
#8
|
|||
|
|||
|
Могу свой проект скинуть, но у меня в xe7 и с alpha skin.
|
|
#9
|
||||
|
||||
|
Да у вас похоже неправильно текущий акцессовский провайдер задан - посмотрите что система использует, его и вписывайте
|
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Вовайн (13.03.2015)
| ||
|
#10
|
|||
|
|||
|
Цитата:
|
|
#11
|
||||
|
||||
|
Здесь простая система - берётся коннектстрока от datasourse и вместо статического пути к базе задаётся динамический с помощью ParamSTR(0), это чтоб папку таскать можно было в разные места на машинке без ошибок при запуске, проверьте ещё раз путь к accdb-файлу
|
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Вовайн (13.03.2015)
| ||
|
#12
|
|||
|
|||
|
Цитата:
Последний раз редактировалось Вовайн, 13.03.2015 в 19:49. |
|
#13
|
|||
|
|||
|
Совсем другим способом получилось)
|