AGB  ·  Datenschutz  ·  Impressum  







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

Schrift Größe

Ein Thema von Finki · begonnen am 23. Jul 2013 · letzter Beitrag vom 8. Aug 2013
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#21

AW: Schrift Größe

  Alt 2. Aug 2013, 17:08
Was zur Hölle ist Wordwarp?????
Ein Schreibfehler .WordWrap wäre richtig.

Leerzeilen == zb das hier

text text

text text
genau so meine ich es nicht. Eine Leerzeile hat die Länge 0 (if length(mystring)=0 then ) oder in einem Tstrings.Text gibt es eine solche Zeichenfolge ...#13#10#13#10...

des wäre zu zeit aufwendig ich hab mir eher was richtung microsoft texteditor vorgestellt
Wenn du damit den guten alten Notepad meinst, der Druckt jede Anzeigezeile und bricht sie notfalls um.

@Bjoerk
Was ist TStringListPrintExt; ?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#22

AW: Schrift Größe

  Alt 2. Aug 2013, 17:56
@K-H

Was gibt's bei was von TStringlist ableiten nicht zu verstehen?
Oder gefällt die der Name der Klasse nicht?
Ext steht für Erweiterung und für was steht wohl Print?

So ungewöhnlich?

Hast du sowas ähnliches nicht zu Hause rumfliegen?

Delphi-Quellcode:
  TStringListPrintExt = class(TStringList)
  private
    FWantPageNumbers: boolean;
    FFontColor: TColor;
    FFontStyle: TFontStyles;
    FFontSize: integer;
    FLineSpacing: integer;
    FMarginLeft: integer;
    FMarginTop: integer;
    FOrientation: TPrinterOrientation;
    FFontName: string;
    FTitle: string;
    FFormFeed: char;
    FUsePageBreak: boolean;
    FUseLineBreak: boolean;
    FOnPrintingStrings: TOnPrintingStrings;
    function GetLineHeight: integer;
    function GetCanvasHeight: integer;
    function CheckForNewPage(const Y: integer; const S: string): integer;
    function GetLineWidth(const S: string): integer;
    function GetMaxLineWidth: integer;
    function TrimRightBlankOnly(const S: string): string;
    procedure DoLineBreak(Result: TStringList);
    procedure SetDefaults;
  public
    procedure Print;
    property WantPageNumbers: boolean read FWantPageNumbers write FWantPageNumbers;
    property FontColor: TColor read FFontColor write FFontColor;
    property FontStyle: TFontStyles read FFontStyle write FFontStyle;
    property FontSize: integer read FFontSize write FFontSize;
    property LineSpacing: integer read FLineSpacing write FLineSpacing;
    property MarginLeft: integer read FMarginLeft write FMarginLeft;
    property MarginTop: integer read FMarginTop write FMarginTop;
    property Orientation: TPrinterOrientation read FOrientation write FOrientation;
    property FontName: string read FFontName write FFontName;
    property FormFeed: char read FFormFeed write FFormFeed;
    property UsePageBreak: boolean read FUsePageBreak write FUsePageBreak;
    property UseLineBreak: boolean read FUseLineBreak write FUseLineBreak;
    property Title: string read FTitle write FTitle;
    property OnPrintingStrings: TOnPrintingStrings
      read FOnPrintingStrings write FOnPrintingStrings;
    constructor Create;
  end;
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#23

AW: Schrift Größe

  Alt 2. Aug 2013, 21:59
Hast du sowas ähnliches nicht zu Hause rumfliegen?
Nee hab ich nicht. Ich hatte angenommen, daß es ab XE4 verfügbar ist, oder zu den Jedis gehört, oder ...
Wenn Du so ein geniales Teil hast, hier findest Du ein dankbares Publikum.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#24

AW: Schrift Größe

  Alt 2. Aug 2013, 23:34
@Bjoerk

So macht man das aber nicht. Man baut sich eine abstrakte Klasse, die eine TStrings-Instanz ausgeben kann.
Eine konkrete Ableitung davon erledigt die Ausgabe auf einen Drucker.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#25

AW: Schrift Größe

  Alt 3. Aug 2013, 08:33
Das geht mit einem TMemo nicht, denn die Zeilenumbrüche bei WordWrap=True werden im Text nicht gespeichert.

Wieso versuchst Du dich nicht an TRichEdit? Ich meine, das es dafür sogar eine Demo gibt.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#26

AW: Schrift Größe

  Alt 3. Aug 2013, 09:52
Rufo, ich hab die Klasse seinerzeit halt von TStringlist abgleitet, fand ich irgendwie einfacher. Wie auch immer. K-H, ich hab auch nicht den Anspruch geniale Klassen zu erstellen. Mein Code ist an der Stelle eh völlig uninteressant. War nur ein Vorschlag. Hab den Code auch absichtlich nicht vollständig gepostet, fänd ich dem TE gegenüber unfair. Schließlich sucht TE hier Unterstützung für seine Variante (die TE demnächst posten wollte) und ich möchte TE nicht meine aufschwatzen.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#27

AW: Schrift Größe

  Alt 4. Aug 2013, 11:08
Wäre aber flexibler, eine Klasse zu schreiben, die eine TStringlist ausgeben kann. Die kann man dann auch mit der Eigenschaft 'Memo.Lines' füttern. Eine abstrakte Klasse wird dazu zunächst einmal nicht benötigt. Eine reicht, imho.
  Mit Zitat antworten Zitat
MeierZwoo

Registriert seit: 3. Dez 2012
106 Beiträge
 
#28

AW: Schrift Größe

  Alt 4. Aug 2013, 13:48
Die umbrochenen Zeilen des Memos sind doch in TMemo.Lines : TStrings; enthalten. Wenn also das Memo proportional auf dem Drucker ausgegeben werden soll (wobei sich der TE mit proportional oder nicht nie so richtig mit sich selbst einig war) reicht es doch:

a) einen Skalierungsfaktor zwischen TMemo-Breite und Drucker-Nutzen-Breite zu ermitteln (Drucker-Nutzen-Breite = druckbarerer Bereich in x, abzüglich Heftrandbereich (wird heute aber eh meist weggelassen), abzüglich einer Reserve, falls die Druckausgabe etwas länger läuft),

b) mit diesem Skalierungsfaktor die Schriftgröße (gleiche Schrift) und den Zeilenabstand für den Drucker setzen, eben proportional zum Memo,

c) für den Druck den y-Startwert und die max. Zeilen/Seite festlegen (Seiten-Startwerte), weil wohl die wenigsten heutigen Drucker einen automatischen Seitenvorschub machen, und wenn, dann mit verstümmelten Seiten-End- und -Anfangszeilen,

d) und dann die TMemo.Lines von Anfang [0] bis Ende [length-1] abklappern, bei jeder Zeile auch einen Zeilenvorschub machen (y erhöhen), egal ob was drin ist in der Zeile oder nicht (Thema "Leerzeilen"), dabei den y-Wert mitzählen und rechtzeitig vor Erreichen des max-y-Wertes die Seite abschließen (Printer.NewPage; ) und eine neue beginnen (Seiten-Startwerte resetten) (Falls nicht das Ende der Lines erreicht sind).

Dabei fällt nur noch die extrem schwierige Entscheidung an, das Ganze in Pixeln oder mm zu machen (ich perönlich verwende grundsätzlich mm, auch weil ich beim Testdruck so schlecht Pixel messen kann und weil mm, einmal gemäß der Druckerauflösung gesetzt, auch immer mm sind).

Evtl. kann man, wie von mir auch ganz am Anfang erwähnt, eine Zeilenlängenmessung der längsten Zeile (nicht die meisten Zeichen sondern die größte Laufweite (ausgegebene Zeilenbreite)) in der Memo.canvas machen und diese längste Zeile dann in der Printer.canvas "nachmessen", um sicher zu gehen, daß die Schriftgröße für den Drucker stimmt. Dabei muß aber auch der Schrift-Stil berücksichtigt werden.

Wenn der TE allerdings das Memo nicht proportional, sondern mit festgelegten Schriftgrößen ausgeben will, kann er ja TMemo.Text : string; verwenden und muß dann eben neu umbrechen. Ansonsten gilt außer dem jeweilgen Zeilen-Textinhalt dasselbe wie oben.

FF beim Neuumbrechen mit nicht-fixed Schriften.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#29

AW: Schrift Größe

  Alt 4. Aug 2013, 19:07
Die umbrochenen Zeilen des Memos sind doch in TMemo.Lines : TStrings; enthalten.
Sind sie bei 'Wordwrap=true' wohl angeblich nicht. Dann ist der Zeilenumbruch auf dem Bildschirm einfach reine Kosmetik.
  Mit Zitat antworten Zitat
Finki

Registriert seit: 2. Jul 2013
120 Beiträge
 
FreePascal / Lazarus
 
#30

AW: Schrift Größe

  Alt 5. Aug 2013, 07:15
Wieso versuchst Du dich nicht an TRichEdit? Ich meine, das es dafür sogar eine Demo gibt.
Wenn ich mich richtig erinnere ist das doch eine erweiterung, richtig oder? und das problem ist die hat mein Professor bei dem wir das abgeben müssen nicht .....
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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:33 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