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.