Einzelnen Beitrag anzeigen

Benutzerbild von runningsoft
runningsoft

Registriert seit: 8. Okt 2004
Ort: Bernau
108 Beiträge
 
Delphi 10.4 Sydney
 
#1

RxRichEdit zoomen

  Alt 28. Jan 2013, 14:51
Delphi-Version: 2010
Hallo zusammen,

ich befülle ein RxRichEdit, dass ein A4-Blatt abbildet, zu Testzwecken komplett mit einer vorgegebenen Anzahl Zeilen (in meinem Beispiel bei Arial, 11 Punkt sind es exakt 59). Nun zoome ich das RichEdit am Bildschirm mit folgender Prozedur:

Delphi-Quellcode:
procedure TForm11.SetZoom(var Zoom: double);
var Numerator, Denominator : integer;
begin
if Zoom = 1 then
   begin
   Numerator := 0;
   Denominator := 0;
   end
else
   begin
   Numerator := round(Zoom * 100);
   Denominator := 100;
   end;
//RichEdit gezoomt zeichnen
with RxRichEdit1 do
   begin
   Width := MulDiv(trunc(PageWidth * 10 * Zoom),fScreenLogPixels,254);
   Height := MulDiv(trunc(PageHeight * 10 * Zoom),fScreenLogPixels,254);
   end;
//Inhalt des RichEdits zoomen
SendMessage(RXRichEdit1.Handle, EM_SETZOOM,Numerator,Denominator);
end;
Dabei stelle ich fest, dass offenbar die dargestellte Größe der Schrift nicht "weich" gezoomt wird (so wie in Word), so dass immer die gleiche Anzahl an Zeilen auf meinem RichEdit sichtbar sind. Mal sind es 53/54 Zeilen, dann wieder 59 usw. Besonders schlimm wird es bei einem Zoomfaktor von 50 bzw 45%. Hier wir die Schrift am Bildschirm gar nicht gezoomt, es ist die gleiche Anzahl von Zeilen am Bildschirm sichtbar, mit mehr oder weniger großem unteren Seitenrand.

Die Größe des RichEdits ändert sich korrekt, ebenso die eingestellten Seitenränder, nur die Schriftgröße hakt.

Mach ich einen Fehler bei Aufruf der Message EM_SETZOOM oder muss man am RichEdit was einstellen, damit "sanft" gezoomt wird?

Vielen Dank für Eure Mithilfe.
  Mit Zitat antworten Zitat