/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Indsætte billede i Paradox-table
Fra : Tonni Aagesen


Dato : 29-04-01 20:53

Hej NG,

Jeg ved at lave et program, hvor jeg gerne vil have sat nogle billeder ind i
en DB. Jeg har lavet et DBImage, en OpenPictureDialog, en DBNavigator, og en
Button (Gennemse...).
Når der klikker på knappen udføres følgende:

var
ImgFile : string;
begin
if OpenPictureDialog1.Execute then
begin
ImgFile := OpenPictureDialog1.FileName;
DBImage1.Picture.LoadFromFile(ImgFile);
end;
end;

Nu viser den så billedet i DBImage, og jeg klikker på fluebenet i
DBNavigator i den tro, at billedet så smides ind DB'en. Men det gør det
ikke...
Men hvis jeg Copy'er et billede fra et billedprogram og Paste'r det i
DBImage, så virker det !!

Jeg bruger Delphi 3 Standard (forsideversion)

Håber nogen kan hjælpe, på forhånd tak.
Tonni Aagesen



 
 
Bjorn Valstrom (29-04-2001)
Kommentar
Fra : Bjorn Valstrom


Dato : 29-04-01 23:14

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, DBCtrls, Db, DBTables, StdCtrls;

type
TForm1 = class(TForm)
DataSource1: TDataSource;
Table1: TTable;
DBImage1: TDBImage;
OpenDialog1: TOpenDialog;
DBNavigator1: TDBNavigator;
Panel1: TPanel;
Image1: TImage;
FindPicButton: TButton;
MoveToDBButton: TButton;
procedure FindPicButtonClick(Sender: TObject);
procedure MoveToDBButtonClick(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';
OpenDialog1.FilterIndex := 1; {Bitmaps}
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;

end.

---

Jeg har vist kun tilladt mig at anvende én ekstra komponent (Image1:
TImage). Ellers mener jeg at jeg har holdt mig til de givne
forudsætningerne.


A Dio

Bjørn Valstrøm
beartrack@mobil.dk

"Tonni Aagesen" <newsSPAM_ME_NOTpost@e-box.dk> wrote in message
news:Sp_G6.67041$o4.5949089@news010.worldonline.dk...
> Hej NG,
>
> Jeg ved at lave et program, hvor jeg gerne vil have sat nogle billeder ind
i
> en DB. Jeg har lavet et DBImage, en OpenPictureDialog, en DBNavigator, og
en
> Button (Gennemse...).
> Når der klikker på knappen udføres følgende:
>
> var
> ImgFile : string;
> begin
> if OpenPictureDialog1.Execute then
> begin
> ImgFile := OpenPictureDialog1.FileName;
> DBImage1.Picture.LoadFromFile(ImgFile);
> end;
> end;
>
> Nu viser den så billedet i DBImage, og jeg klikker på fluebenet i
> DBNavigator i den tro, at billedet så smides ind DB'en. Men det gør det
> ikke...
> Men hvis jeg Copy'er et billede fra et billedprogram og Paste'r det i
> DBImage, så virker det !!
>
> Jeg bruger Delphi 3 Standard (forsideversion)
>
> Håber nogen kan hjælpe, på forhånd tak.
> Tonni Aagesen
>
>



Tonni Aagesen (30-04-2001)
Kommentar
Fra : Tonni Aagesen


Dato : 30-04-01 03:42

"Bjorn Valstrom" <beartrack@mobil.dk> skrev i en meddelelse
news:9ci3ph$cd1$1@news.cybercity.dk...

[klip]

> procedure TForm1.FindPicButtonClick(Sender: TObject);
> begin
> OpenDialog1.InitialDir := 'K:\ProgramDB\Delphi\DBBillede\Pics';
> OpenDialog1.FilterIndex := 1; {Bitmaps}
> 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;

[klap]

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



Bjorn Valstrom (30-04-2001)
Kommentar
Fra : Bjorn Valstrom


Dato : 30-04-01 11:39

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
>
>





Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste