pionowe wyrównanie z przerwami liniowych programowania. Algorytm dla jednej komórki:
- Policz liczbę znaków w danych (
iTextLen
).
- Znajdź liczbę linii tekstu w komórce (
iLineNum
). Obliczono empirycznie.
- Znajdź długość wiersza w znakach (
iLineLen
). Obliczono empirycznie.
Oblicz liczbę policzonych połówek według wzoru (iLineNum — 1) — (iTextLen/iLineLen)
.
@formula
składni kryształu
Local NumberVar iLineNum:= 5;
Local NumberVar iLineLen:= 30;
Local NumberVar iTextLen:= Length({DataSource});
Local StringVar sRet:= '';
Local NumberVar i;
Local NumberVar iLinesNum:= Truncate(iLineNum - 1) - Truncate(iTextLen/iLineLen);
For i:= 1 to iLinesNum Do (sRet:= sRet + chr(13));
sRet
dodawania wzoru w górnej i dolnej części danych. Obiekty tekstowe będą wyglądały następująco:
{@formula}{DataSource}{@formula}
Wielkość czcionki @formula
musi być o połowę mniejsza niż rozmiar czcionki {DataSource}
. Na przykład, jeżeli rozmiar czcionki {DataSource}
równa 20 The @formula
powinna być równa 10:
Algorytm działa lepiej z nieproporcjonalnego kroju, ale z czcionką proporcjonalną działa w większości przypadków.
Algorytm dla wielu komórek różni się tylko tym, że iLineNum
będzie maksymalną liczbą znaków w danych wszystkich komórek.
Nie dla tekstu wyśrodkowanego nie jest. – Richard
Co za wstyd ... –