Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Zeilenumbruch beim druck (https://www.delphipraxis.net/146979-zeilenumbruch-beim-druck.html)

khh 30. Jan 2010 11:54


Zeilenumbruch beim druck
 
hallo zusammen,
ich weiss jetzt zwar nicht ob ich im richtigen Forum bin, aber trotzdem:

mit
Delphi-Quellcode:

  Printer.Canvas.TextOut(frandlinks ,frandoben + cmtopixel(20,fdpih) , fdruckzeile);
drucke ich die "druckzeile" direkt auf den Drucker

das funktioniert soweit prima, bis auf die Tatsache dass Zeilenumbrüche nicht berücksichtigt werden.

Im String steht definitiv "blabla#13#10 weiterblabla"


Gibts hier ne Möglichkeit, oder muss ich die Zeile händisch auseinander nehmen?


Danke gruss KH

mkinzler 30. Jan 2010 11:56

Re: Zeilenumbruch beim druck
 
Übergebe den Strimg in eine Stringliste und gebe dann jede Zeile separat aus

Luckie 30. Jan 2010 11:58

Re: Zeilenumbruch beim druck
 
Oder probier mal DrawText(Ex).

khh 30. Jan 2010 14:06

Re: Zeilenumbruch beim druck
 
Zitat:

Zitat von mkinzler
Übergebe den Strimg in eine Stringliste und gebe dann jede Zeile separat aus

das hab ich jetzt versucht, leider ohne Erfolg :-(

ich bekomme den String nicht auseinander:-(

wenn ich mir den String anzeigen lasse steht beispielsweise folgendes drin:
Delphi-Quellcode:
0x5c580e0'eine zeile'#13#10'noch eine Zeile'#13#10
was mich dabei irritiert sind die "Stringbegrenzer" dazwischen.
weder Stringreplace noch die function explode:
Delphi-Quellcode:
function Explode(var a: TStrArray; Border, S: string): Integer;
var
  S2: string;
begin
  Result := 0;
  S2 := S + Border;
  repeat
    SetLength(A, Length(A) + 1);
    a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);
    Delete(S2, 1,Length(a[Result] + Border));
    Inc(Result);
  until S2 = '';
end;

mit folgendem aufruf:
Delphi-Quellcode:
       AnzTokens := Explode(A, '#13#10', S);
       for i := 0 to AnzTokens -1 do
       begin
       infozeilen.Add(A[i]);
       fdruckzeile :=  infozeilen[i];
       end;
bekommen diese Umbrüche raus.


wende ich die Funktion aber auf einen normalen string an:
zb dies ist ein = test und dies auch

und filtere auf = , dann liefern die Funktionen das richtige Ergebnis.


Hat jemand nochne Idee?

danke gruss KH

mkinzler 30. Jan 2010 14:09

Re: Zeilenumbruch beim druck
 
Mit einer Stringliste sollte es gehen
Delphi-Quellcode:
var
  sl: TStrings;
  i: Integer;
...
  sl := TStringList.Create;
  sl.Text := <Text>;
  for i := 0 to sl.Count-1 do
  begin
    ..

khh 30. Jan 2010 14:15

Re: Zeilenumbruch beim druck
 
Zitat:

Zitat von mkinzler
Mit einer Stringliste sollte es gehen
Delphi-Quellcode:
var
  sl: TStrings;
  i: Integer;
...
  sl := TStringList.Create;
  sl.Text := <Text>;
  for i := 0 to sl.Count-1 do
  begin
    ..

du bist der Beste, so einfach und es funktioniert ,-)



Gruss KH


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:04 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