Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.052 Beiträge
 
Delphi 12 Athens
 
#2

Re: Drucken von TBitmap Objekten

  Alt 29. Apr 2009, 16:14
erstmal sind die Exceptions hier völlig falsch behandelt ... siehe Verständnisfrage zu try-except-finally und dort Verlinktes (Falsche Verwendung von try...except...end)

GetLastError und Exceptions sind völlig unterschiedliche Dinge, also GetLastError hat dort absolut keine Aussagekraft über die aufgetretende Exception!

Vorschlag: (eh dieursprünglichen Exceptions zerstört und durch Nichtssagende Meldungen ersetzt werden ... dann lieber garnichts behandeln und nur die Resourcen schützen)
Delphi-Quellcode:
procedure Protokoll_drucken ();
var Sollwerte: TBitmap;
// ... weitere Variablen
begin

   // Querformat auswählen
   Printer.Orientation := poPortrait;

   // Objekte generieren
   Sollwerte := TBitmap.Create;
   try

     // Maße festlegen
     Dim.X := 362;
     Dim.Y := 212;

     // Zeichnen auf dem Objekt ###############################################################
     with Sollwerte do
       begin
       Width := Dim.X;
       Height := Dim.Y;

       Canvas.Brush.Color := Farbe_Felder;
       Canvas.FloodFill(0,0,clRed, fsBorder);

       Canvas.Brush.Style := bsClear;
       Canvas.Font.Name := 'Courier New';
       Canvas.Font.Style := [fsBold];
       Canvas.Font.Size := 12;
       Canvas.Font.Color := Farbe_Ueberschrift;
     
       // ... hier wird jetzt gnadenlos darauf herumgemalt ...

     end;

     // Text drucken ##############################################################################
     with Printer do
     begin
       BeginDoc;
       try
         // Schrifteinstellungen
         Canvas.Brush.Style := bsSolid;
         Canvas.Font.Name := 'Courier New';
         Canvas.Font.Style := [fsBold];
         Canvas.Font.Size := 12;

         // Messfeld 1 eintragen
         Arect.Left := 100 ;
         Arect.Top := 1200 ;
         Arect.Right := 100 + Sollwerte.Width *7;
         Arect.Bottom := 1200 + Sollwerte.Height *7;
         Canvas.StretchDraw(Arect, Sollwerte);

         // Messfeld 2 eintragen
         Arect.Left := 100 ;
         Arect.Top := 1500 + Sollwerte.Height *7 ;
         Arect.Right := 100 + Sollwerte.Width *7 ;
         Arect.Bottom := 1500 + Sollwerte.Height *7 *2;
         Canvas.StretchDraw(Arect, Sollwerte);

         // Messfeld 3 eintragen
         Arect.Left := 100 ;
         Arect.Top := 1800 + Sollwerte.Height *7 *2;
         Arect.Right := 100 + Sollwerte.Width *7 ;
         Arect.Bottom := 1800 + Sollwerte.Height *7 *3;
         Canvas.StretchDraw(Arect, Sollwerte);
       finally
         EndDoc;
       end;

    finally
      // Freigeben des verwendeten Speichers - Überprüfung auf NIL erfolgt automatisch vor dem Aufruf des Destruktors
      Sollwerte.Free;
    end;
end;
hast du es denn mal über den Debuger versucht undgeschaut wo was wie gemacht wird?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat