Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Problem bei RichEdit und Scalierung (https://www.delphipraxis.net/181179-problem-bei-richedit-und-scalierung.html)

leo03 22. Jul 2014 15:38

Problem bei RichEdit und Scalierung
 
Hallo

Kann man irgendwie verhindern das bei RTFEdits die Font.Size bei Scalieren geändert wird?

Ich verwende ein TDBRichEdit um RTF Inhalte für ein später druckbares Formular einzugeben.
Jetzt habe ich gemerkt dass wenn die Anwendung hochscaliert wird (z.B. über die DPI Einstellung in der Systemsteuerung\Alle Systemsteuerungselemente\Anzeige) auch automatisch die Font.Size des TDBRichEdit mit hochgedreht wurde.
Wenn der Benutzer nun einen Text in das (bisher leere) RTF eingibt und dann druckt, dann passt der Inhalt nicht mehr aufs Papier weil die Schrift viel zu gross ist.
Wenn im TextBlob Feld des DB-Records vor scalierung schon was drin war, spielt es keine Rolle da im RTF Text auch der vorher passende Font.Size drin ist. Jedoch bei leeeren/neuen Records wird der neue Inhalt mit den zu grossen Font-Eintellungen im RTF gespeichert.

Vor allem ältere Leute drehen scheinbar gerne mal ihre DPI hoch um auf ihren hochaufgelösten aber viel zu kleinen Monitoren überhaupt noch etwas lesen zu können.
Das hochscalieren macht mir sonst in der GUI keine Probleme, jedoch das Drucken der zu grossen RTF Inhalte ist lästig.

Was ich versucht habe
- Statt Windows die Scalierung zu überlassen die Delphi Methode ScaleBy() verwenden. Jedoch auch diese verändert die Font.Size der RichEdit Controls.
- Eine Möglichkeit gesucht in der Printing Software den Font zu fixieren. Jedoch da gibt es leider nix. (macht auch eigentlich keinen Sinn da man verschiedenen Fonts/Formatierungen in einem RTF ja auch so zum Drucken möchte).

Gibt es eventuell über das TDBRichEdit Control ein Property um den Default Font generell zu fixieren?
Dann wäre zwar der Text auf dem Monitor auch in kleiner Orginalgröße, damit könnte ich aber leben wenn der Druck dann passt.

Danke für eure Hilfe

-------------------------
um das ganze mal zu veranschaulichen
- ein RichEdit Control aufs Form geben (kann auch das normale ohne Datenanbindung sein)
- Ein Button mit der Funktion RichEdit1.Print('');
- Anwenung starten, Text eigeben, Drucken
- Danach mit der selben Anwendung auf einer DPI von 125 oder 150 (wem die Windows DPI Umstellung mit anschliessendem neuanmelden zu mühsam ist, kann auch vor dem Druck die Delphi Funktion ScaleBy(140,100) aufrufen um nur das Delphi Form um 40% hochzuscalieren. Wenn man die zwei Drucke vergleicht fällt auf, das auf dem 2.Ausdruck der gedruckte Text ebenfalls grösser ist.

Perlsau 22. Jul 2014 16:07

AW: Problem bei RichEdit und Scalierung
 
Glaube nicht, daß das so geht, denn die Fonts in den anderen Komponenten (Buttons, Edits usw.) erhalten ja ebenfalls eine größere Schriftart. Was du machen könntest:

Verwende statt des TDBRichEdit das TjvDBRichEdit aus den Jedi-Komponenten. Das hat nämlich ein Zoom-Property. Wie du es jetzt genau veranstaltest, daß sich sich die Schriftgrößen deines aktuell angezeigten RTF-Textes beim Scalieren der gesamten Form nicht ändern, mußt du ausprobieren: Entweder nach dem Scalieren neu aus der DB einlesen und danach das Zoom-Property deines TjvDBRichEdits entsprechend einstellen.

Bei mir erhält ein Neues Dokument in einem TjvDBRichEdit als Default-Font stets den Font, der im zuvor angezeigten Dokument zuletzt dargestellt oder mit dem gearbeitet wurde. U.U. mußt du auch das Font-Property deines TjvDBRichEdits wieder auf die ursprüngliche Größe einstellen, falls sich dessen Wert geändert hat.

Übrigens: Alles ungetestet ...

leo03 22. Jul 2014 16:52

AW: Problem bei RichEdit und Scalierung
 
danke für deine rasche Antwort

tja, dann wird mir in dem Fall nix anderes übrigbleiben als dynamisch bei jedem Control einen StandardFont zu setzen. Wie und wann ich das mache muss ich mir noch überlegen.
Da TDBRichEdit kein ZoomProperty hat bleibt dann halt der angezeigte Text im RTF klein, kann ich aber wie gesagt damit leben wenns mit dem Druck passt.

Schade, ich dachte es gibt ein einfaches ScalingFlag um die Font.Änderung beim Scalieren zu blocken. :(
trotzdem Danke

P.S: kann man eigentlich irgenwie herausfinden um wieviel Prozent das Control vergrössert/scalliert wurde?. Dann würde ich mir den Einsatz des TjvDBRichEdit überlegen und dann auch gleich den ZoomFaktor entsprechend anpassen damit auch die Optik der grösseren Text-Anzeige wieder passt.

Perlsau 22. Jul 2014 17:57

AW: Problem bei RichEdit und Scalierung
 
Zitat:

Zitat von leo03 (Beitrag 1266353)
P.S: kann man eigentlich irgenwie herausfinden um wieviel Prozent das Control vergrössert/scalliert wurde?. Dann würde ich mir den Einsatz des TjvDBRichEdit überlegen und dann auch gleich den ZoomFaktor entsprechend anpassen damit auch die Optik der grösseren Text-Anzeige wieder passt.

Das kann ich dir nicht sagen, da ich mit Scaling noch nicht wirklich gearbeitet habe. Aber du kannst deinen TjvDBRichEdits eine Kontrollkomponente verpassen, so daß der User selbst die Vergrößerung einstellen kann, so wie das z.B. beim Wordpad (ab Win 7) der Fall ist.


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