Wenn ich im Footer einer Tabelle ein Textobjekt platziere und es rechtsbündig ausrichte (Preise und Überträge sollen rechtsbündig sein)
Code
else if ColNr = 3 then
begin
field := par.AppendNewObject(wpobjTextObject);
field.Name := 'PAINT_CALC';
field.Source := 'Uebertrag';
par.ASet(WPAT_Alignment, 2);
end;
dann stimmt die Formatierung nicht, das Gleiche gilt für zentrierte Darstellung.
Rechtsbündig: Ab einer bestimmten Textlänge wächst der Text rechts aus der Zelle heraus, obwohl links noch Platz ist
Zentriert: Ab einer bestimmten Länge wird der Text rechts länger ohne dass der Anfang weiter nach links rückt obwohl da noch Platz ist.
Nachstellen kann man den Fehler durch 2 kleine Änderungen in der Demo CalcTable:
1) die Preisspalte den Schutz wegschalten und
2) die Fußzeile rechtsbündig,
dann im Preis ein paar Ziffern dazutippen
Code
procedure TWPTableCalc.LongTableDemoCell(RowNr, ColNr: Integer;
par: TParagraph);
var
field: TWPTextObj;
begin
if ColNr = 1 then
par.ASet(WPAT_COLWIDTH_PC, 1000)
else
begin
par.ASet(WPAT_COLWIDTH_PC, 9000);
// Tippen im Preis erlauben
// par.ASet(WPAT_ParProtected, 1);
end;
if RowNr = -1 then // Header
begin
if ColNr = 1 then
par.SetText('NR')
else
par.SetText('VALUE');
par.ASetColor(WPAT_BGCOLOR, $F0F0F0);
end
else if RowNr = -2 then
// Footer
begin
if ColNr = 2 then
begin
par.Append('Subtotal on this page :');
field := par.AppendNewObject(wpobjTextObject);
field.Name := 'PAINT_CALC';
/// <<-- fixed value to trigger event
field.Source := 'RNDNR'; // <<-- name of field to be sumed
par.Append(#10 + 'Subtotal :');
field := par.AppendNewObject(wpobjTextObject);
field.Name := 'PAINT_CALC';
/// <<-- fixed value to trigger event
field.Source := 'LASTTOTAL'; // <<-- we save this value each row
end;
par.ASetColor(WPAT_BGCOLOR, $F0F0F0);
// rechtsbündige Ausgabe
par.ASet(WPAT_Alignment, 2);
end
else
begin
if ColNr = 1 then
par.SetText(IntToStr(RowNr))
else
begin
// This is the field which is displayed
field := par.AppendNewObjectPair(wpobjMergeField, FloatToStr(Part));
field.Name := 'RNDNR';
// Calculate the running total
Total := Total + Part;
// This is the total, we cannot see it
field := par.AppendNewObject(wpobjTextObject, false, false, HiddenText);
field.Name := 'LASTTOTAL';
/// <<-- fixed value to trigger event
field.Params := FloatToStr(Total); // We use that
//
Part := Part + Increment;
end;
end;
end;
Alles anzeigen
Es wäre schön wenn es dafür eine Lösung gibt!
Ciao
Stefan