Kære Tonni !
Jeg har til mit løsningsforslag brugt en 'Paradox 5.0 for Windows Table'
hvor billederne opbevares i et Binary field.
I et sådan felt hvor man opbevarer "Blobs" kan man opbevare hvad som helst.
'Procedure TForm1.FileToDBButtonClick(Sender: TObject)' som du kan se
nedenfor kan sagtens placere en Gif eller en JPG i feltet. Men det er ikke
ensbetydende med at den slags billeder kan vises med 'DBImage1'. Sådan en
har det vist nok bedst med Bitmaps (BMP).
Men jeg kan da også godt flytte en Gif eller en JPG ind i databasen vha.
clipboard. Men er du helt sikker på at det billede der efterfølgende kommer
til at ligge i den pågældende Blob (felt) også ER en Gif eller en JPG? Jeg
er overbevist om at det bliver oversat til og gemt i BMP-format!
----------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, DBCtrls, Db, DBTables, StdCtrls, Grids, DBGrids;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
Table1: TTable;
DBImage1: TDBImage;
OpenDialog1: TOpenDialog;
DBNavigator1: TDBNavigator;
Panel1: TPanel;
Image1: TImage;
FindPicButton: TButton;
MoveToDBButton: TButton;
FileToDBButton: TButton;
DBGrid1: TDBGrid;
procedure FindPicButtonClick(Sender: TObject);
procedure MoveToDBButtonClick(Sender: TObject);
procedure FileToDBButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FindPicButtonClick(Sender: TObject);
begin
OpenDialog1.InitialDir := 'K:\ProgramDB\Delphi\DBBillede\Pics';
if OpenDialog1.Execute then
begin
Image1.picture.LoadFromFile(OpenDialog1.FileName);
end
end;
procedure TForm1.MoveToDBButtonClick(Sender: TObject);
begin
Table1.Edit;
DBImage1.Picture := Image1.Picture;
Table1.Post;
end;
procedure TForm1.FileToDBButtonClick(Sender: TObject);
var
BS: TBlobStream;
MS: TMemoryStream;
begin
OpenDialog1.InitialDir := 'K:\ProgramDB\Delphi\DBBillede\Pics';
if OpenDialog1.Execute then
begin
if Table1.FieldByName('Billede').datatype = ftBlob then
begin
Screen.Cursor := crHourGlass;
MS := TMemoryStream.Create;
Table1.Edit;
try
MS.LoadFromFile(OpenDialog1.FileName);
BS :=
TBlobStream.Create(TBlobField(Table1.FieldByName('Billede')), bmWrite);
BS.CopyFrom(MS, MS.Size);
BS.Free;
except
MessageDlg('Det lykkedes ikke!',mtError, [mbOk], 0);
end;
Table1.Post;
MS.Free;
Screen.Cursor := crDefault;
end
end
end;
end.
--
A Dio
Bjørn Valstrøm
beartrack@mobil.dk
"Tonni Aagesen" <newsSPAM_ME_NOTpost@e-box.dk> wrote in message
news:jp4H6.67679$o4.5995823@news010.worldonline.dk...
> "Bjorn Valstrom" <beartrack@mobil.dk> skrev i en meddelelse
> news:9ci3ph$cd1$1@news.cybercity.dk...
> Hej og tak for svaret! Men det var ikke helt efter hensigten.
>
> Jeg forklarer lige problemet lidt nærmere:
> Med DBNavigator er jeg i stand til indsætte data i en ny "row" samt slette
> og rette i cellerne - fint nok. Men hvis jeg f.eks. vil ændre et billede
og
> noget tekst i en "row" via Naviagtor, bliver kun teksten opdateret. På min
> form har jeg, udover div. DBEdits også en Button, der kører en
> OpenPictureDialog og læser billedet ind i DBImage.
> Nu troede jeg så, at det billede, der blev vist i DBImage, også blev sat
ind
> i databasen ligesom den gør med mine DBEdits, men det gør den ikke
> Det der undrer mig, er hvis jeg Paste'r billedet ind i DBImage, virker det
> godt nok. Jeg skal bruge filtyperne *.jpg og *.gif..
>
> Kan det virkelig ikke lade sig gøre, få det til at virke med Navigator?
>
> Mvh
> Tonni Aagesen
>
>