AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Help !!! - Wo ist steckt der Fehler ab dem 2. Druckaufruf.
Thema durchsuchen
Ansicht
Themen-Optionen

Help !!! - Wo ist steckt der Fehler ab dem 2. Druckaufruf.

Ein Thema von Black07 · begonnen am 1. Aug 2007 · letzter Beitrag vom 1. Aug 2007
Antwort Antwort
Black07

Registriert seit: 10. Jun 2007
24 Beiträge
 
#1

Help !!! - Wo ist steckt der Fehler ab dem 2. Druckaufruf.

  Alt 1. Aug 2007, 19:26
Hi,

bin gerade auf ein Fehler in meinem Programm gestoßen,
der ab dem 2+ Druckauftrag entsteht -welchen ich mir nicht erklären kann .

Das Problem ist ich lasse mir alle Daten in eine Stringlist schreiben,
beim 1.Drucken läuft auch alles glatt -

Doch danach sind nur noch schwarzen Balken auf dem Papier, wo vorher der Textstand,
die Balken sind genau solang wie der Text beim 1. Druck.

Das Problem entsteht also ab dem 2.Aufruf pro Programmstart.


Hier der Code - Hab ich was übersehen?

Delphi-Quellcode:
procedure TForm1.Drucken1Click(Sender: TObject);
var
  r: TRect;
  i: Integer;

begin

  printdiaf1.Execute;

  questprintlist:=TStringList.Create;

  questprint; //FKT: Leert und holt dann die Daten zum drucken in die questprintlist

  with printer do
    begin
      r := Rect(200,200,(Pagewidth - 200),(PageHeight - 200));
      Printer.Title := 'Quest drucken';
      canvas.Font.Size:=12;
      BeginDoc;
      for i := 0 to questprintlist.Count -1 do
        begin
           if questprintlist.strings[i] = '<----new Page ---->then
            {begin
              EndDoc;        //macht einen Seitenvorschub
              BeginDoc;
             end}

             NewPage
           else
         Canvas.TextOut(200,200 + (i *Canvas.TextHeight(questprintlist.Strings[i])),questprintlist.Strings[i]);
        end;
      Canvas.Brush.Color := clBlack;
      Canvas.FrameRect(r);
      EndDoc;
    end;
questprintlist.free;
end;
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#2

Re: Help !!! - Wo ist steckt der Fehler ab dem 2. Druckaufru

  Alt 1. Aug 2007, 19:39
Delphi-Quellcode:
procedure TForm1.Drucken1Click(Sender: TObject);
var
  r: TRect;
  i: Integer;

begin
  if printdiaf1.Execute then //ist doch ne fkt die was hübsches zurück gibt
  begin

  //...

  
  end;
end;
was genau macht denn questprint;? poste vllt noch mal den code.
  Mit Zitat antworten Zitat
Black07

Registriert seit: 10. Jun 2007
24 Beiträge
 
#3

Re: Help !!! - Wo ist steckt der Fehler ab dem 2. Druckaufru

  Alt 1. Aug 2007, 19:46
Zitat von fwsp:
was genau macht denn questprint;? poste vllt noch mal den code.

Also ich sehe hier keinen Fehler

ich lösche die stringlist und lasse dann per ADD Strings reinschreiben.

Die Funkt verwende ich in leicht abgewanter Form für den Speicher und Ladevorgang.
Theoretisch habe ich nur die Stringlist in die geschrieben wird verändert
und zusätzliche Module entfernt.
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#4

Re: Help !!! - Wo ist steckt der Fehler ab dem 2. Druckaufru

  Alt 1. Aug 2007, 20:34
Hallo,

Du tust Dir selber einen Gefallen, wenn Du an der Lesbarkeit Deines Codes arbeitest.
Dein Quelltext strotzt vor Redundanzen.

z.B.

Delphi-Quellcode:
If form1.memoa.Lines.Strings[I] <> '""Then {// ""} Begin
   If I = 0 Then Begin
      stemp := ((form1.memoa.Lines.Strings[I]));
   End;
End;

If form1.memoa.Lines.Strings[I] <> '""Then {//     ""} Begin
   If I > 0 Then Begin
      stemp := ((stemp + ';' + form1.memoa.Lines.Strings[I]));
   End;
End;
Du fragst hier zweimal das Gleiche ab.
Warum machst Du es nicht so:
Delphi-Quellcode:
If form1.memoa.Lines.Strings[I] <> '""Then Begin
   If I = 0 Then
      stemp := ((form1.memoa.Lines.Strings[I]))

   Else If I > 0 Then
      stemp := ((stemp + ';' + form1.memoa.Lines.Strings[I]));
End;
Oder das hier:
Delphi-Quellcode:
If form1.cbjobsuccess.ItemIndex <> -1 Then Begin
   form1.questprintlist.Add('JobSuccess=' + (inttostr(form1.cbjobsuccess.ItemIndex)));
End Else Begin
   form1.questprintlist.Add('JobSuccess=0')
End;
pgb := (pgb + 100);
form1.progbar1.Position := pgb;
Dieses Konstrukt verwendest Du x-Mal. Was ist, wenn es nun auf einmal nicht mehr 'pgb+100' heissen muss, sindern plötzlich 'pgb+101'? Dann änderst Du erstmal an zig Stellen -> hoher Arbeitsaufwand und hohe Fehleranfälligkeit.

Warum baust Du Dir dafür nicht eine Methode, die Du dann immer wieder mit unterschiedlichen Parametern aufrufst?
  Mit Zitat antworten Zitat
Black07

Registriert seit: 10. Jun 2007
24 Beiträge
 
#5

Re: Help !!! - Wo ist steckt der Fehler ab dem 2. Druckaufru

  Alt 1. Aug 2007, 22:06
@ s-off : Werd mich bessern versprochen


____________



Habe übrigen den übeltäter gefunden -

Printer.Canvas.Brush.Color := clBlack; Diese kleine Anweisung bewirkt das der Text als schwarze Fläche gedruckt wird.
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Help !!! - Wo ist steckt der Fehler ab dem 2. Druckaufru

  Alt 1. Aug 2007, 23:56
Canvas.Brush.Color := clBlack; ist daran schuld! Setz mal die Brush-Farbe vor dem Schreiben des Text auf Canvas.Brush.Color := clWhite; Edit:
NARF, man sollte sich zuerst das komplett Topic durchlesen bevor man antwortet...
Wie dem auch sei, besser ist es noch, Du setzt auch die Pen-Farbe vor jedem neuen Zeichnen auf das Canvas auf den gewünschten Wert, da sich das Canvas die zuletzt benutze Farbe merkt.
Es ist zu wahr um schön zu sein...
  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 22:48 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