AGB  ·  Datenschutz  ·  Impressum  







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

Mehrere Memo´s auf einem Blatt drucken.

Ein Thema von N30N · begonnen am 12. Nov 2007 · letzter Beitrag vom 30. Dez 2008
Antwort Antwort
N30N

Registriert seit: 7. Aug 2007
78 Beiträge
 
#1

Mehrere Memo´s auf einem Blatt drucken.

  Alt 12. Nov 2007, 10:28
Delphi-Quellcode:
var
  Zeile: Integer;
  PrintText: TextFile;
begin
  AssignPrn(PrintText);
  Rewrite(PrintText);
  Printer.Canvas.Font := Memo1.Font;
  for Zeile := 0 to Memo1.Lines.Count - 1 do
  Writeln(PrintText, Memo1.Lines[Zeile]);
  CloseFile(PrintText);
end;

Das ist der Code, mit dem ich das Memo1 auf meinem Formular ausdrucken lasse. Wie kann ich jetzt zum Beispiel noch mehr Memofelder auf dieses Blatt drucken?

Einfach unterhalb des ersten Memofeldes.


Wie stell ich das an?
Ich bin ein Delphi-Anfänger.
  Mit Zitat antworten Zitat
marabu

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

Re: Mehrere Memo´s auf einem Blatt drucken.

  Alt 12. Nov 2007, 10:32
Hallo,

du darfst die Druckausgabe erst mit CloseFile() schließen, wenn du fertig bist - sonst wird der Druckjob abgeschlossen und die Seite aus dem Drucker geschoben.

Grüße vom marabu
  Mit Zitat antworten Zitat
N30N

Registriert seit: 7. Aug 2007
78 Beiträge
 
#3

Re: Mehrere Memo´s auf einem Blatt drucken.

  Alt 12. Nov 2007, 10:40
Super!


Habs raus, richtiger Code müsste also folgender sein:


Delphi-Quellcode:
var
  Zeile: Integer;
  PrintText: TextFile;
begin
  AssignPrn(PrintText);
  Rewrite(PrintText);
  Printer.Canvas.Font := Memo1.Font;
  for Zeile := 0 to Memo1.Lines.Count - 1 do
  Writeln(PrintText, Memo1.Lines[Zeile]);

  for Zeile := 0 to Memo2.Lines.Count - 1 do
  Writeln(PrintText, Memo2.Lines[Zeile]);

  CloseFile(PrintText);
end;


Jetzt noch ne kleine Frage: Wie änder ich die Schriftgröße auf dem Ausdruck? Die Schriftgröße im Memofeld soll nicht höher werden!

Und noch eine wo wir grade dabei sind: Wie kann ich es anstellen, dass neben die erste Line von Memo1 auch gleich die erste Line von Memo2 gedruckt wird? Das ganze also nicht untereinander, sondern nebeneinander!

Wär echt klassee wenn das jemand weiss, danke schonmal
Ich bin ein Delphi-Anfänger.
  Mit Zitat antworten Zitat
marabu

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

Re: Mehrere Memo´s auf einem Blatt drucken.

  Alt 12. Nov 2007, 10:53
Was die Font-Size angeht, so schaue dir mal Printer.Canvas.Font an - da gibt es eine Eigenschaft Size.

Parallele Spalten drucken ist einfach, wenn du mit mono-spaced fonts (z.B. Courier) arbeitest. Es genügt dann, wenn du den Text der linken Spalte mit Leerzeichen auffüllst. Ansonsten wird es etwas komplizierter.
  Mit Zitat antworten Zitat
N30N

Registriert seit: 7. Aug 2007
78 Beiträge
 
#5

Re: Mehrere Memo´s auf einem Blatt drucken.

  Alt 12. Nov 2007, 11:53
Delphi-Quellcode:
var
  Zeile: Integer;
  PrintText: TextFile;
begin
  Printer.Canvas.Font.size :=15;
  AssignPrn(PrintText);
  Rewrite(PrintText);
  Printer.Canvas.Font := Memo1.Font;
  for Zeile := 0 to Memo1.Lines.Count - 1 do
  Writeln(PrintText, Memo1.Lines[Zeile]);

  for Zeile := 0 to Memo2.Lines.Count - 1 do
  Writeln(PrintText, Memo2.Lines[Zeile]);

  CloseFile(PrintText);
end;

Hmmm, also Printer.Canvas.Font.size :=15; habe ich eingefügt, allerdings bringt das garnix beim Ausdruck. Hab ich es vielleicht an die falsche Stelle gesetzt? Hatte es auch schonmmal vor Closefile(Printtext); stehen, allerdings hat sich auf dem Ausdruck auch nichts geändert. Es bleibt bei Schriftgröße 8


Zitat:
Parallele Spalten drucken ist einfach, wenn du mit mono-spaced fonts (z.B. Courier) arbeitest. Es genügt dann, wenn du den Text der linken Spalte mit Leerzeichen auffüllst. Ansonsten wird es etwas komplizierter.

Mir isses relativ wurscht welchen Font ich benutze ^^ Hauptsache ich kann den Inhalt von Memo1 und den Inhalt von Memo2 nebeneinader darstellen. Am besten wäre es ja, Memo1 linksbündig zu machen, und Memo2 rechtsbündig zu machen. Aber wie?? Ich hab keinen Plan
Ich bin ein Delphi-Anfänger.
  Mit Zitat antworten Zitat
marabu

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

Re: Mehrere Memo´s auf einem Blatt drucken.

  Alt 12. Nov 2007, 12:01
Es kann nur so funktionieren:

Delphi-Quellcode:
// ...
begin
  AssignPrn(PrintText);
  Rewrite(PrintText);
  Printer.Canvas.Font.Assign(Memo1.Font);
  Printer.Canvas.Font.size := 15;
  // ...
end;

EDIT: Nachschlag

Delphi-Quellcode:
function FormatLine(lines1, lines2: TStrings;
    index, leftColWidth, colDist, leftMargin: Integer;
    var line: string
): Boolean;
var
  line1, line2: string;
begin
  line1 := IfThen(index < lines1.Count, lines1[index]);
  line2 := IfThen(index < lines2.Count, lines2[index]);
  line := Format('%s%*s%s%s', [
            StringOfChar('+', leftMargin),
            leftColWidth,
            line1,
            StringOfChar('+', colDist),
            line2
          ]);
  Result := (index < lines1.Count) or (index < lines2.Count);
end;

procedure TDemoForm.Button3Click(Sender: TObject);
const
  LEFT_COL_WIDTH = 10;
  COL_DIST = 2;
  LEFT_MARGIN = 5;
var
  index: Integer;
  line: string;
  PrintText: TextFile;
begin
  AssignPrn(PrintText);
  Rewrite(PrintText);
  Printer.Canvas.Font.Assign(Memo1.Font);
  Printer.Canvas.Font.size :=15;

  index := 0;
  while FormatLine(Memo1.Lines, Memo2.Lines, index, LEFT_COL_WIDTH, COL_DIST, LEFT_MARGIN, line) do
  begin
    Writeln(PrintText, line);
    Inc(index);
  end;

  CloseFile(PrintText);
end;
Getippt und nicht getestet.
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#7

Re: Mehrere Memo´s auf einem Blatt drucken.

  Alt 30. Dez 2008, 22:37
Hi,

auch ich habe bisher unter Delphi noch nicht ein einziges Dokument zu Papier gebracht und brauche nun etwas Schwieriges.

Ich muss ein Memo auf einem A4-Blatt mehrspaltig ausdrucken. D.h. wenn es 30 Zeilen in Schrift Arial Größe 6 sind, dann zwei Spalten, wenn es mehr als 60 sind, dann 3.
Sind es mehr als 90 dann muss unter Spalte 1 ein wenig Freiraum und dort weitere 30 Zeilen drucken.

Ich weiß das diese Frage für die Druckprofis hier schon fast Blasphemie ist, aber ich blick durch den Druckkram nun einfach nicht durch.

Gruss und danke für die Geduld

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  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 17:43 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