AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi pfad eines jpg´s aus einer datenbank anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

pfad eines jpg´s aus einer datenbank anzeigen

Ein Thema von vamp79 · begonnen am 8. Jan 2003 · letzter Beitrag vom 9. Jan 2003
Antwort Antwort
vamp79

Registriert seit: 1. Jan 2003
9 Beiträge
 
#1

pfad eines jpg´s aus einer datenbank anzeigen

  Alt 8. Jan 2003, 18:20
Hallo,

ich hab ein kleines programm, wo bilder oder besser gesagt nur der Pfad der Bilder in einer Datenbank abgespeichert werden. die bilder haben das format .JPG.

alles funtioniert, bild öffnen, pfad speichern, allerdings weiß ich nicht wie ich das bild anzeigen lassen kann.

was soll ich benutzen DBImage oder TImage oder irgendwas anderes??

mein quelltext sieht so aus.




Delphi-Quellcode:
unit Unit1;

interface

uses
  Jpeg, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, DBCtrls, StdCtrls, Mask, DB, DBTables, ExtDlgs;

type
  TForm1 = class(TForm)
    DBEdit1: TDBEdit;
    Button1: TButton;
    DBNavigator1: TDBNavigator;
    DataSource1: TDataSource;
    Table1: TTable;
    OpenPictureDialog1: TOpenPictureDialog;
    Button2: TButton;
    Image1: TImage;
    Label1: TLabel;
    DBImage1: TDBImage;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;



procedure TForm1.Button2Click(Sender: TObject);
begin
If OpenPictureDialog1.Execute then Begin

Table1.Edit;
Table1.FieldbyName('Bild').AsString:=OpenPictureDialog1.Filename;
Table1.Post;
End;

end;

end.


also wer kann mir sagen, was ich machen muß und welchen quelltext ich evlt. irgendwo einfügen muß? ich weiß echt nicht mehr weiter, wie ich das machen soll.

vielen vielen dank schon mal

gruß

vamp79
[Edit=FuckRacism]Delphi-Tags; Absofort code bitte in Tags setzten mit [*delphi] [/*delphi] ( ohne *)[/Edit]
  Mit Zitat antworten Zitat
Helld_River

Registriert seit: 2. Jan 2003
Ort: Hürth
136 Beiträge
 
Delphi 2010 Professional
 
#2
  Alt 8. Jan 2003, 18:50
Hi !
Zitat Delphi-Hilfe (DBImage):
"TDBImage repräsentiert eine BLOB-Grafik an, die in einem Feld des aktuellen Datensatzes einer Datenmenge gespeichert ist."
D.h. dass, um diese Kompo zu benutzen das Bild tatsächlich in der DB stehen muß, und nicht nur der Pfad.

Wenn Du nur einen Pfad abspeicherst, dann solltest Du ein TImage nehmen:

Image1.Picture.Filename:='xyz.jpg';

Hängst Du diesen Aufruf an das OnDataChange-Ereignis deiner DataSource, dann wird immer das zum Datensatz gehörende Bild angezeigt !



Gruß, Helld;
  Mit Zitat antworten Zitat
vamp79

Registriert seit: 1. Jan 2003
9 Beiträge
 
#3
  Alt 8. Jan 2003, 19:17
da stimmt irgendwas nicht, oder ich hab was falsch gemacht.
es kommt immer ein fehlermeldung


Delphi-Quellcode:
unit Unit1;

interface

uses
  Jpeg, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, StdCtrls, Mask, DBCtrls, ExtCtrls, ExtDlgs;

type
  TForm1 = class(TForm)
    DataSource1: TDataSource;
    Table1: TTable;
    DBNavigator1: TDBNavigator;
    DBEdit1: TDBEdit;
    OpenPictureDialog1: TOpenPictureDialog;
    Button1: TButton;
    Image1: TImage;
    Label1: TLabel;
    Bevel1: TBevel;
    procedure Button1Click(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure DataSource1DataChange(Sender: TObject; Field: TField);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
If OpenPictureDialog1.Execute then Begin

Table1.Edit;
Table1.FieldbyName('Bild').AsString:=OpenPictureDialog1.Filename;
Table1.Post;
End;

end;

procedure TForm1.Image1Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName );
end;

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
Image1.Picture.Filename:=''xyz.jpg';
end;

end.

ich versteh das nicht...

was muß ich machen, damit die komponente (TImage) auf die datenbank
zugreift und mir anhand des pfades das bild anzeigt.

vielen dank schon mal

vamp79
[Edit=FuckRacism]Delphi-Tags[/Edit]
  Mit Zitat antworten Zitat
Helld_River

Registriert seit: 2. Jan 2003
Ort: Hürth
136 Beiträge
 
Delphi 2010 Professional
 
#4
  Alt 8. Jan 2003, 19:25
Sorry, mein Fehler !
Die Zeile
--> Image1.Picture.Filename:=''xyz.jpg';

muß natürlich folgendermassen lauten:

Image1.Picture.LoadFromFile:=Table1.FieldbyName('B ild').AsString

Gruß, Helld;
  Mit Zitat antworten Zitat
vamp79

Registriert seit: 1. Jan 2003
9 Beiträge
 
#5
  Alt 8. Jan 2003, 19:50
ich bekomm allerdings da wo das sternchen (*) ist immer noch einen fehler

Image1.Picture.LoadFromFile:=(*)Table1.FieldbyName ('Bild').AsString

die klammer und das sternchen stehen natürlich nicht im quellcode.

im quellcode sieht das so aus:

Image1.Picture.LoadFromFile:=Table1.FieldbyName('B ild').AsString

kennst duzu evtl auch noch eine lösung?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 8. Jan 2003, 22:01
Moin Vamp,

wenn ich jetzt gemein wäre könnte ich Dir ja als Lösung des Problemes mal die Taste F1 vorschlagen

Wenn die Zeile so aussieht
Image1.Picture.LoadFromFile(Table1.FieldbyName('Bild').AsString); müsste es eigentlich gehen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von harrybo
harrybo

Registriert seit: 26. Nov 2002
Ort: Aachen
87 Beiträge
 
Delphi 6 Enterprise
 
#7
  Alt 9. Jan 2003, 15:49
Hi,

es macht auch Sinn, vorher abzufangen, ob das Bild überhaupt existiert:
Delphi-Quellcode:
if FileExists(Table1.FieldbyName('Bild').AsString) then
  Image1.Picture.LoadFromFile(Table1.FieldbyName('Bild').AsString);
Außerdem, ich habe nun schön länger nicht mehr den Event OnDataChange der DataSource benutzt. Grund: das Ereignis OnDataChange tritt für jeden Datensatz der Datenmenge ein, sobal diese aktiviert wird. Man kann das natürlich über Flags kontrollieren, das macht die Programmierung aber unübersichtlich. Ich nutze daher lieber das OnChange Ereignis des datenanzeigenden Objects (z.B. Grid).

Hat dieses Objekt die Ereignisse MouseUp und KeyUp, favorisiere ich sogar diese, da man dann durch Gedrückthalten der Cursortasten schneller durch die Datensätze scrollen kann, denn nur beim Loslassen von Mous-, Cursortaste/ laufen die entsprechenden Aktualisierungen ab.

gruß, harry
Harry Boldt
  Mit Zitat antworten Zitat
Helld_River

Registriert seit: 2. Jan 2003
Ort: Hürth
136 Beiträge
 
Delphi 2010 Professional
 
#8
  Alt 9. Jan 2003, 16:04
Ihr habt natürlichr echt, muss ...LoadFromFile(...); heissen. Hätte mal lieber in die Hilfe schauen sollen, war aber nur aus dem Kopf.

Man muss ja nicht alles wissen, man muss nur wissen, wo es steht (und dann natürlich auch nachschauen )

Gruß, Helld;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz