Gruezi
Ich habe im WPTools3 eine Routine geschrieben, welches die effektive Höhe das ganzen Textes bestimmt.
Nach Anpassungen an WPTools5 (Version 5.18..6d +premium Demo) sieht die Routine so aus:
procedure TForm1.Button10Click(Sender: TObject);
var
par : TParagraph;
lin : TLine;
lpos: Integer;
Result: Integer;
begin
Result := 0;
par := WPRichText1.FirstPar;
while (par<>nil) do begin
for lpos := 0 to par.LineCount-1 do begin
lin := par.lines[lpos];
if (paprIsTable in par.prop) and (par.paprIsRightPar) then begin
//Result := Result + lin.Height;
end else begin
Result := Result + lin.Height;
end;
end;
par := par.next;
end;
ShowMessage(inttostr(Result));
end;
Alles anzeigen
Zu berücksichtigen gilt, das wenn man zB eine Tabelle mit einer Zeile und 4 Spalten hat, die Höhe 4 Mal zu hoch ist. Das habe ich in der Routine eingebaut.
So, jetzt habe ich folgende Fragen zu WPTools5:
1.
Gibt es in WPTools5 eine einfachere Methode, um die Höhe zu berechnen?
2.
Ist eine Zeile leer, gibt lin.height leider immer den Wert 0 zurück.
Das mag ja noch gut sein, wenn man noch überhaupt keinen Text eingeben hat. Aber spätestens nach dem drücken der Return-Taste, müsste die erste Zeile eine Höhe>0 haben.
Gebe ich in der ersten Zeile ein Zeichen ein, dann hat lin.height den Wert 106 (bei einer Schriftgrösse 11). Lösche ich das Zeichen wieder, bleibt der Wert bei 106. Nur beim ersten Erstellen einer Zeile habe ich statt den Wert 106 leider den Wert 0.
Folgendes Beispiel dazu:
In einem leeren TWPRichText drücke ich 5 Mal die Return Taste und dann die Taste 'a'.
Eigentlich müsste jetzt die Höhe dieses Textes 6x106 als 636 betragen. Ich bekomme aber nur den Wert 106 zurück.
Was mir auch noch dabei aufgefallen ist: Sobald ich ein Zeichen in eine leere Zeile eingebe, rutschen die unteren Zeilen um ca. einen Pixel nach unten. Warum? eine leere Zeile und eine nicht leere Zeile müsste doch die gleiche Höhe haben.
3.
Gibt es noch weitere Unterschiede zwischen WPTools3 und WPTools5 die man beachten muss, um die Höhe zu berechnen?
Schon mal vielen Dank für die Beantwortung meiner Fragen.
Ich möchte nämlich gerne auf die Version 5 updaten, wenn es nicht zu viele Zeit beansprucht, mein Programm anzupassen.