Autor Beitrag
ACID
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53


D7 Pers
BeitragVerfasst: Fr 24.06.05 15:25 
:shock:
Hilfe, Hilfe!!!
Ich habe versucht mit
ausblenden Delphi-Quelltext
1:
2:
    if printer.Canvas.TextHeight(text1)>aoah then
    aoah:=printer.Canvas.TextHeight(text1);


Die höhe Textes in Pixeln die auf dem Drucker erscheinen werden zu ermitteln.
Diese anweisung liegt in einer schleife.
Jedesmal wenn diese 2 Zeilen vom Programm abgearbeitet werden, bekomme ich pro Zeile ein leeres Blatt.
Wie kann ich das anders schreiben damit dies nicht mehr passiert?
Sitze schon seit 9 Stunden vorm Rechner und Programmiere, so langsam geht mir die Puste aus.
Bitte helft mir schnell damit ich Feierabend machen kann.


Moderiert von user profile iconChristian S.: Topic aus CLX / Delphi Language (Object-Pascal) verschoben am Fr 24.06.2005 um 15:41
Moderiert von user profile iconTino: Titel überarbeitet.
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Fr 24.06.05 15:44 
Titel: Re: Hilfe Drucker wirft 100 leere Seiten aus!!!
user profile iconACID hat folgendes geschrieben:
:shock:
Hilfe, Hilfe!!!
Ich habe versucht mit
ausblenden Delphi-Quelltext
1:
2:
    if printer.Canvas.TextHeight(text1)>aoah then
    aoah:=printer.Canvas.TextHeight(text1);



ich kann nicht ganz nachvollziehen und werd auch aus diesem kleinen stückchen Code
nicht ganz schlau und überhaupt vom Drucken auch noch keine Ahnung aber wie es aussieht
hast du zuweisungsrichtung vieleicht vertauscht?

So ginge es evtl.

ausblenden Delphi-Quelltext
1:
2:
    if printer.Canvas.TextHeight(text1)>aoah then
            printer.Canvas.TextHeight(text1) := aoah;


Und noch was, beim Drucker ist eine höhere Auflösung als aufm Monitor vieleicht einen höheren
Wert setzen?
ACID Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53


D7 Pers
BeitragVerfasst: Fr 24.06.05 16:01 
Der Drucker hat ne andere auflösung, das ist mir schon klar.
Deshalb möchte ich den wert aoah haben weil der mir sagt wie hoch der text1 auf dem drucker in Pixeln ist.
Mit diesem wert berechne ich dann die Zeilenhöhe für die Ausgabe.
An dieser stelle soll noch nichts ausgegebne werden.
Und Printer.begindoc folgt in meinem Programm erst viel Später, deshalb wundere ich mich ja auch das er lauter leere Seiten rausgibt.
Text1 beziehe ich aus einer MemoBox.

Hier nochmal die ganze Schleife
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  for xx:=0 to listview2.Items.Count-1 do
  begin
    text1:=listview2.Items.Item[xx].SubItems[11];
    if printer.Canvas.TextHeight(text1)>aoah then
    aoah:=printer.Canvas.TextHeight(text1);
  end;

Nun habe ich auch feststellen müssen das aoah immer der letzte wert ist der in der schleife vorkommt, obwohl ja eigentlich nur der größte drinn stehen sollt.
Ach so bevor ich es Vergesse Ich Arbeite mit QPrinters. Siehe www.delphi-forum.de/...ie+und+wo_44143.html oder
www.delphi-forum.de/...+zuweisen_44155.html.
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Fr 24.06.05 17:10 
Das mit den leeren Seiten ist mir auch in Java bei ersten Druckversuchen passiert!
Aber da hatte ich nicht richtig das Canvas Object (Graphics in Java) an Drucker geleitet
und bei versuchen auch eine Schleife programmiert wo einzelnen Zeilen ausgegeben werden
und sowohl auf dem Bildschirm als auch auf den Drucker und weil die Ausgabe nur einmal
auf dem Bildschirm kam und beim neuzeichnen der Bildschirmausgabe keine Ausgabe kamm
hatte ich den Zeiger in der Liste auf die erste Zeile wieder gesetzt und dabei wurden
an den Drucker ganz viele Leere Seiten geschickt in der "Endlosschleife"