Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как добавить фотографию в поле Graphic? [D7, Paradox]


Страницы:   1 2

Andreich ©   (2004-02-06 15:34:00) 

Как добавить фотографию в поле Graphic?

Table1.FieldByName("foto").......;


residen007   (2004-02-07 22:45:00) [1]

Решение здесь уже приведено, я лишь хочу спросить -- а на фига в хрупкую таблицу Paradox добавлять blob-объект, не проще ли ссылку на файл с изображением в какой-нибудь директории?


VLAD-MAL   (2004-02-06 17:58:00) [2]

>MV (06.02.04 17:48) [22]
>В Uses стоит DB?

да, стоит, я уже не знаю что и делать


- тогда, похоже, ты меня обманываешь...


Andreich   (2004-02-06 17:57:00) [3]

dbImage1.Picture.Bitmap.SaveToStream(form1.Table1.FieldByName("foto") as TBlobField);

выдает ошибку
[Error] Unit2.pas(239): Undeclared identifier: "TBlobField"


VLAD-MAL   (2004-02-06 17:54:00) [4]

И как ругается?


Andreich   (2004-02-06 17:53:00) [5]

>MV (06.02.04 17:48) [22]
>В Uses стоит DB?

да, стоит, я уже не знаю что и делать


MV   (2004-02-06 17:48:00) [6]

В Uses стоит DB?


Andreich   (2004-02-06 17:45:00) [7]

Ну а почему этот пример не работает, если все правильно?
dbImage1.Picture.Bitmap.SaveToStream(form1.Table1.FieldByName("foto") as TBlobField);


MV   (2004-02-06 17:23:00) [8]

Пора в другую ветку...


Val   (2004-02-06 17:22:00) [9]

>Romkin © (06.02.04 17:17) [17]
можно спросить, как прочитать/посмотреть tif? ;)


MV   (2004-02-06 17:20:00) [10]

А где взять TStream?


Romkin   (2004-02-06 17:17:00) [11]

Достали...

function GetStreamImgType(Stream: TStream): TClass;
var
StreamPos: int64;
ImgSign: string;
begin
StreamPos := Stream.Position;
try
//BMP если не определено
Result := Graphics.TBitmap;
//JPEG
SetLength(ImgSign, 4);
Stream.Seek(6, soFromCurrent);
Stream.Read(ImgSign[1],4);
if (UpperCase(ImgSign) = "JFIF") or (UpperCase(ImgSign) = "EXIF") then
Result := Jpeg.TJPEGImage;
//WMF
Stream.Position := StreamPos;
SetLength(ImgSign, 4);
Stream.Read(ImgSign[1],4);
if ImgSign = #$D7#$CD#$C6#$9A then
Result := Graphics.TMetafile;
finally
Stream.Position := StreamPos;
end;
end;

procedure LoadProperImage(Stream: TStream; Picture: TPicture);
var
Img: TGraphic;
StreamPos: int64;
begin
StreamPos := Stream.Position;
Img := TGraphicClass(GetStreamImgType(Stream)).Create;
try
Stream.Position := StreamPos;
Img.LoadFromStream(Stream);
Picture.Graphic := Img;
finally
Img.Free;
end;
end;

function LoadPictureFromBLOB(Picture: TPicture; Field: TBlobField): boolean;
var
Stream: TStream;
begin
Result := False;
if not Field.isNULL then
begin
Stream := TMemoryStream.Create;
try
Field.SaveToStream(Stream);
Stream.Position := 0;
LoadProperImage(Stream, Picture);
Result := True;
finally
Stream.Free;
end;
end;
end;

procedure SavePictureToBlob(Picture: TPicture; Field: TBlobField);
var
Stream: TStream;
begin
if not (Field.DataSet.State in [dsEdit, dsInsert]) then
Field.DataSet.Edit;
Field.Clear;
if Assigned(Picture.Graphic) then
if not Picture.Graphic.Empty then
begin
Stream := TMemoryStream.Create;
try
Picture.Graphic.SaveToStream(Stream);
Stream.Position := 0;
Field.LoadFromStream(Stream);
finally
Stream.Free;
end;
end;
end;

uses DB, Jpeg, Graphics, Classes как минимум

И не надо спрашивать, где взять Picture


VLAD-MAL   (2004-02-06 16:58:00) [12]

А как насчет простого примера
gsvserg © (06.02.04 16:26) [12]
uses db;
?


Andreich   (2004-02-06 16:52:00) [13]

>MV

Просто пример который ты мне дал не работает:
dbImage1.Picture.Bitmap.SaveToStream(form1.Table1.FieldByName("foto") as TBlobField);

выдает ошибку
[Error] Unit2.pas(239): Undeclared identifier: "TBlobField"


gsvserg   (2004-02-06 16:29:00) [14]

согласен


Val   (2004-02-06 16:28:00) [15]

не, uses МОЗГИ, блин, честное слово.


gsvserg   (2004-02-06 16:26:00) [16]

uses db;


MV   (2004-02-06 16:26:00) [17]

Давай-давай. Попробуй еще AsFoto, AsPhoto, AsImage, AsWhatIwant, AsWhyIAmSoFat, AsWhyIAmSoClever...


Andreich   (2004-02-06 16:25:00) [18]

Да даже если так все равно та же самая ошибка

dbImage1.Picture.Bitmap.SaveToStream(form1.Table1.FieldByName("foto") as TBlobField);

[Error] Unit2.pas(239): Undeclared identifier: "TBlobField"


Andreich   (2004-02-06 16:23:00) [19]

Вернее так
form1.Table1.FieldByName("foto").Asblobfield:= dbimage1.Picture.bitmap ;


MV   (2004-02-06 16:23:00) [20]

Издевается!

Где я такой бред приводил:

form1.Table1.FieldByName("foto").Asblobfile:= dbimage1.Picture.bitmap ;

??????


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо