AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBGrid direkt an Drucker schicken-Fehler:Zugriffsverletzung
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid direkt an Drucker schicken-Fehler:Zugriffsverletzung

Ein Thema von lnaemi · begonnen am 11. Dez 2008 · letzter Beitrag vom 12. Dez 2008
Antwort Antwort
lnaemi

Registriert seit: 9. Okt 2008
Ort: Vösendorf
27 Beiträge
 
#1

Re: DBGrid direkt an Drucker schicken-Fehler:Zugriffsverletz

  Alt 12. Dez 2008, 20:18
ok, so weit dass was gedrückt wird, habe ich geschaft, nur der hört bei seitenende nicht auf zu drücken.

vielleicht könntet ihr meine fehler finden:
danke

Delphi-Quellcode:
procedure TfrmMain.btnPrintUsersClick(Sender: TObject);
var
  sName, SQL, sRole, sUSR_Nr, sDSC, sACTIVE_DT, sDate :String;
  PageWidth,PageHeight, cv, vv, cc: Integer;
  P, I, J, YPos, XPos, HorzSize, VertSize: Integer;
  zeile, x, y: integer;
  breite, hoehe, randlinks, randoben,wievielgedruckt: integer;
  iCount:Integer;
  zeile_im_grid, gedruckte_zeile : Integer;
  zeilenhoehe, position_in_zeile : Int64;
  spalte_im_grid : Integer;
  my_rect : TRect;
  rueckgabe : Integer;
  spaltenbreite : Array Of Integer;
  
  mmx, mmy: Extended;
  Footer: string;
  AnzSeiten, Seite, Zeilen, HeaderSize, FooterSize, ZeilenSize, FontHeight: Integer;
begin
   //Kopfzeile, Fußzeile, Zeilenabstand, Schriftgröße festlegen
  HeaderSize := 100;
  FooterSize := 200;
  ZeilenSize := 36;
  FontHeight := 36;
   wievielgedruckt := 0;
  sDate := DateToStr(date());
        Printer.Orientation := TPrinterOrientation(poPortrait);
        Printer.BeginDoc;
  //Druck auf mm einstellen
  mmx := GetDeviceCaps(Printer.Canvas.Handle, PHYSICALWIDTH) /
    GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSX) * 25.4;
  mmy := GetDeviceCaps(Printer.Canvas.Handle, PHYSICALHEIGHT) /
    GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY) * 25.4;
  VertSize := Trunc(mmy) * 10;
  HorzSize := Trunc(mmx) * 10;
  SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC);

 try
                Printer.Title:='Benutzerliste';
                Printer.Canvas.Font.Name:='Arial';
                Printer.Canvas.Brush.Color:=clwhite;
                Printer.Canvas.Font.Height:=50;
    Printer.Canvas.Font.Style := [fsBold];

    Printer.Canvas.TextOut(1500, -300, 'Datum:');
    Printer.Canvas.TextOut(1650, -300, sDate);
    Printer.Canvas.TextOut(500, -350,'Liste der aktiven Benutzer in BAForms');
    Printer.Canvas.TextOut(495, -400,'---------------------------------------------------------');
    //Spalten-name platzieren
    //Zeilenanzahl festlegen
  Zeilen := (VertSize - HeaderSize - FooterSize) div ZeilenSize;
  //Seitenanzahl ermitteln
  if DM.tblUsr.RecordCount mod Zeilen <> 0 then
    AnzSeiten := DM.tblUsr.RecordCount div Zeilen + 1
  else
    AnzSeiten := DM.tblUsr.RecordCount div Zeilen;
  Seite := 1;
         // Daten aus datenbank lesen - aktive benutzer
    DM.tblUsr.Filter:= 'ACTIVE_Q <> ' + QuotedStr('0');
    DM.tblUsr.Filtered := True;
     spalte_im_grid := -700;
     Printer.Canvas.Font.Style := [];
     Printer.Canvas.Font.Height:=40;
     //DM.tblUsr.RecordCount-1
      //seitennummerierung
    Printer.Canvas.TextOut(100, -600 ,'Username');
    Printer.Canvas.TextOut(100, -650 ,'-------------');
    Printer.Canvas.TextOut(400, -600 ,'Name');
    Printer.Canvas.TextOut(400, -650 ,'-------------');
        Printer.Canvas.TextOut(900, -600 ,'Rolle');
    Printer.Canvas.TextOut(900, -650 ,'----------');
    Printer.Canvas.TextOut(1100, -600 ,'Aktiviert am');
    Printer.Canvas.TextOut(1100, -650 ,'----------------');
    //Grid Drucken
  for P := 1 to AnzSeiten do
  begin
    //Kopfzeile
    Printer.Canvas.Font.Height := 48;
    Printer.Canvas.TextOut((HorzSize div 2 - (Printer.Canvas.TextWidth(Printer.Title) div 2)),
      - 20,Printer.Title);
    Printer.Canvas.Pen.Width := 5;
    Printer.Canvas.MoveTo(0, - HeaderSize);
    Printer.Canvas.LineTo(HorzSize, - HeaderSize);
    //Fußzeile
    Printer.Canvas.MoveTo(0, - VertSize + FooterSize);
    Printer.Canvas.LineTo(HorzSize, - VertSize + FooterSize);
    Printer.Canvas.Font.Height := 36;
    Footer := 'Seite: ' + IntToStr(Seite) + ' von ' + IntToStr(AnzSeiten);
    Printer.Canvas.TextOut((HorzSize div 2 - (Printer.Canvas.TextWidth(Footer) div 2)),
      - VertSize + 150,Footer);
    //Zeilen drucken
    Printer.Canvas.Font.Height := FontHeight;
    YPos := HeaderSize + 10;
    for I := 1 to Zeilen do
    begin
                if DM.tblUsr.RecordCount >= I + (Seite - 1) * Zeilen then
                begin
                        sUSR_Nr := DM.tblUsr.Fields[0].AsString;
                        sName := DM.tblUsr.Fields[1].AsString;
                        sRole := DM.tblUsr.Fields[2].AsString;
                        sACTIVE_DT := DM.tblUsr.Fields[4].AsString;
                        sDSC := DM.tblUsr.Fields[15].AsString;
                        Printer.Canvas.TextOut(100, spalte_im_grid , sName);
                        Printer.Canvas.TextOut(400, spalte_im_grid, sDSC);
                        Printer.Canvas.TextOut(900, spalte_im_grid , sRole);
                        Printer.Canvas.TextOut(1100, spalte_im_grid , sACTIVE_DT);
                        wievielgedruckt := wievielgedruckt +1;
                        spalte_im_grid := spalte_im_grid -40;
                        DM.tblUsr.Next;
                   end;
    end;
    Inc(Seite);
    if Seite <= AnzSeiten then begin
    Printer.NewPage;
    spalte_im_grid := -200;
    Printer.Canvas.TextOut(100, -200 ,'Username');
    Printer.Canvas.TextOut(100, -250 ,'-------------');
    Printer.Canvas.TextOut(400, -200 ,'Name');
    Printer.Canvas.TextOut(400, -250 ,'-------------');
    Printer.Canvas.TextOut(900, -200 ,'Rolle');
    Printer.Canvas.TextOut(900, -250 ,'----------');
    Printer.Canvas.TextOut(1100, -200 ,'Aktiviert am');
    Printer.Canvas.TextOut(1100, -250 ,'----------------');
    end;
  end;
    Printer.EndDoc;
    Printer.Free;
     EXCEPT
         on E: EDatabaseError do ShowMessage(E.Message);
     ELSE
         Application.MessageBox('Drucken fehlgeschlagen!', 'Fehler!');
     END;

end;
I'm the ONE!
  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 15:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz