AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DBImage mit printpdf darstellen

Ein Thema von tom_po · begonnen am 5. Feb 2006 · letzter Beitrag vom 10. Mär 2006
Antwort Antwort
Seite 1 von 2  1 2      
tom_po

Registriert seit: 5. Feb 2006
137 Beiträge
 
Delphi 7 Enterprise
 
#1

DBImage mit printpdf darstellen

  Alt 5. Feb 2006, 23:50
Mit diesem Code hole ich mir ein Image (Bitmap) aus meiner DBisam-DB in meine Form:

Delphi-Quellcode:
dbisamquery2.SQL.Text:='select image from artplan where artigo='+quotedstr(trim(artikel.Text));
dbisamquery2.ExecSQL;
Ich habe ein pdf-Tool zum Darstellen meiner Daten im pdf-Format, wende es schon erfolgreich an. Ich exporte in's pdf schon Barcode, Memo usw
Habe aber jetzt Probleme beim Image mit diesem Code:

printpdf1.draw(100,100, dbimage1.Picture.Bitmap); es gibt diese Meldung:

[Fehler] AknUni.pas(269): Inkompatible Typen: 'TImage' und 'TBitmap'

Tim Young von Dbisam hat mir dies gemailt:
This is really an issue for the TPrintPDF vendor, but you should be able to
cast the TDBImage to a TImage to get the desired result (TDBImage descends
from TImage)

Habe auch schon das probiert:

Delphi-Quellcode:
Image:=TImage.Create(dbimage1);
Image.Picture.Bitmap.Create;
printpdf1.ImageOut(100,200,TImage(Image));
kompiliert zwar, aber beim Anwenden kommt dann ne Fehlermeldung über Exception, siehe Bild

es wird dann auf die letzte Zeile meiner tnpdf-Unit hingewiesen:SetBitmap(ABitmap.Picture.Bitmap); das feld "image" hat in meiner DBIsam-Tabelle den DataType "graphic", musste nach Angaben von Tim Young von DBisam als bmp abgespeichert werden.
Die Komponente in meiner Form ist DBImage.


Wer kann helfen?
Miniaturansicht angehängter Grafiken
error_artplan_133.jpg  
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: DBImage mit printpdf darstellen

  Alt 6. Feb 2006, 09:39
Herzlich willkommen in der Delphi-PRAXiS.

Wenn die Methode Draw() der Komponente PrintPDF ein Image als letzten Parameter erwartet, dann sollte das prinzipiell so funktionieren:

Delphi-Quellcode:
var
  img: TImage;
begin
  img := TImage.Create(nil);
  try
    Image.Picture.Bitmap.Assign(DBImage.Picture.Bitmap);
    printpdf.draw(100,100, image);
  finally
    img.Free;
  end;
end;
DBImage ist kein Nachfahre von TImage, wovon man sich durch einen Blick in die Vererbungshierarchie (Online-Hilfe) leicht selbst überzeugen kann.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
tom_po

Registriert seit: 5. Feb 2006
137 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: DBImage mit printpdf darstellen

  Alt 6. Feb 2006, 12:47
Malibu, zunächst herzlichen Dank, dass Du auf mein Problem antwortest, bin sehr froh darüber, da ich noch Anfänger bin...

Habe Deinen Code mal probiert, leicht geändert (image>>img und dbimage in dbimage1):

Delphi-Quellcode:
procedure Takn.Button3Click(Sender: TObject);
var img: Timage;
begin
 img := TImage.Create(nil);
  try
    Img.Picture.Bitmap.Assign(DBImage1.Picture.Bitmap);
    printpdf1.draw(100,100, img);
  finally
    img.Free;
  end;
end;
kompiliert schön, aber beim Ausführen bekomme ich wieder die CPU-Meldung, siehe Anhang.
Woran liegt das, was meinst Du?
Miniaturansicht angehängter Grafiken
cpu_194.jpg  
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: DBImage mit printpdf darstellen

  Alt 6. Feb 2006, 15:30
Hallo.

Ich vermute dass der Fehler beim Aufruf von PrintPDF.Draw() auftritt. Entweder die Komponente befindet sich nicht im richtigen Zustand, oder du verwendest die Methode eventuell falsch. Gibt es eine öffentlich zugängliche Dokumentation der Komponente? Ist die Komponente OpenSource oder kommerziell? Vielleicht gibt es eine Trial-Version? Hast du einen URL?

Wenn du eine Dokumentation besitzt, dann prüfe nochmal gewissenhaft, welchen Typ und welche Bedeutung der dritte Parameter der Methode Draw() hat.

marabu
  Mit Zitat antworten Zitat
tom_po

Registriert seit: 5. Feb 2006
137 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: DBImage mit printpdf darstellen

  Alt 6. Feb 2006, 15:53
Hallo Marabu, die Komponente ist free (Nishita), hänge ein readme an, siehe auch hier der verwendete Code, auch die Procedure imageout, die ich auch schon testete, aber denselbe Exception (nullpointer) bekomme:

Delphi-Quellcode:
procedure TPrintPDF.Draw(X, Y: Integer; ABitmap:TImage);
begin
ImageOut(X, Y, ABitmap);
end;


procedure TPrintPDF.ImageOut(X, Y: Integer; ABitmap:TImage);
var tempsx,tempsy:double;
begin

tempsx:=((PageWidth)/(WinProcs.GetDeviceCaps(GetDC(0), LOGPIXELSX)*10.625));
tempsy:=((PageHeight)/(WinProcs.GetDeviceCaps(GetDC(0), LOGPIXELSY)*8));

NumberofImages:=NumberofImages+1;
StreamWriteStr(sTempStream,'q');
StreamWriteStr(sTempStream,IntToStr(trunc(ABitmap.Picture.Bitmap.Width*tempsx))+
' 0 0 '+IntToStr(trunc(ABitmap.Picture.Bitmap.Height*tempsy))+
 ' '+IntToStr(X)+' '+IntToStr(PageHeight-Y-trunc(ABitmap.Picture.Bitmap.Height*tempsy))
 +' cm');
StreamWriteStr(sTempStream,'/Im'+IntToStr(NumberofImages)+' Do');
StreamWriteStr(sTempStream,'Q');
SetBitmap(ABitmap.Picture.Bitmap);
end;
Auf Wunsch schicke ich Dir gerne die .pas per Mail zu, dazu würde ich deine e-mail haben, danke nochmals für Deine Hilfe.
Angehängte Dateien
Dateityp: txt readme_211.txt (1,6 KB, 17x aufgerufen)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: DBImage mit printpdf darstellen

  Alt 6. Feb 2006, 16:06
Sieht aus, als ob du alles richtig machst. Hast du die Methoden Draw() bzw. ImageOut() jemals erfolgreich eingesetzt?

Wenn du möchtest, dann zippe die PrintPDF-Komponente und stelle sie hier ein. Falls ich gleich vom Stuhl kippe, dann kann so auch jemand anders dir weiter helfen.

marabu
  Mit Zitat antworten Zitat
tom_po

Registriert seit: 5. Feb 2006
137 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: DBImage mit printpdf darstellen

  Alt 6. Feb 2006, 18:44
Hahahah, wollen wir doch hoffen, dass du dich noch lange auf deinem Stuhl hälst....

anbei die gezippte Komponente inkl. eines Beispiels...mir gefällt die Komponente. Sie hat auch bisher bestens geklappt, habe Text, Memobox, Barcode schon erfoglreich gedruckt, auch schon ein Bild, aber ein TImage mit der Eigenschaft Bitmap, noch kein TDBImage!

Schicke ein Screenprint vom TImage Code im nächsten Posting, weiss nicht, ob man 2 Anhänge hier gleichzeitig machen kann...

Vielleicht bringst du es doch hin, dass ich mein DBImage noch drucken kann, wäre prima.
Angehängte Dateien
Dateityp: zip tnpdf_239.zip (117,1 KB, 1558x aufgerufen)
  Mit Zitat antworten Zitat
tom_po

Registriert seit: 5. Feb 2006
137 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: DBImage mit printpdf darstellen

  Alt 6. Feb 2006, 18:45
hier das Bild von TImage code
Miniaturansicht angehängter Grafiken
image_out_111.jpg  
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: DBImage mit printpdf darstellen

  Alt 6. Feb 2006, 19:40
In der Unit TNPDF brauchst du im interface part diese Definition:

Delphi-Quellcode:
{$IFDEF VER150}
  {$DEFINE DFS_DELPHI_3_UP}
{$ENDIF}
marabu
  Mit Zitat antworten Zitat
tom_po

Registriert seit: 5. Feb 2006
137 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: DBImage mit printpdf darstellen

  Alt 6. Feb 2006, 19:46
mensch marabu, es klappt!!!!!!!!!!!!!bin happy, konnte zum ersten Mal das Bild darstellen.....

VIIIIIIIIIIEEEEEEEEEEEEELEN DAAAAAAAAAAAAAAAAAAANK !!!!!!!!!!!


nur noch ein Problem, es ist nach oben und unten in die Länge gezerrt....schau mal
Miniaturansicht angehängter Grafiken
bildausgabe_107.jpg  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:25 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