AGB  ·  Datenschutz  ·  Impressum  







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

Problem bei RichEdit und Scalierung

Ein Thema von leo03 · begonnen am 22. Jul 2014 · letzter Beitrag vom 22. Jul 2014
Antwort Antwort
leo03

Registriert seit: 18. Jul 2006
5 Beiträge
 
#1

Problem bei RichEdit und Scalierung

  Alt 22. Jul 2014, 16:38
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.

Geändert von leo03 (22. Jul 2014 um 16:44 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Problem bei RichEdit und Scalierung

  Alt 22. Jul 2014, 17:07
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 ...
  Mit Zitat antworten Zitat
leo03

Registriert seit: 18. Jul 2006
5 Beiträge
 
#3

AW: Problem bei RichEdit und Scalierung

  Alt 22. Jul 2014, 17:52
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.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: Problem bei RichEdit und Scalierung

  Alt 22. Jul 2014, 18:57
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.
  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 09:59 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