Beiträge von wpsupport

    Hi,

    Please make sure to not use any runtime packages.

    For the project set the destination project and always do a Build All after you changed the destination .

    Julian

    Each page can be rotated individually by 90 degrees angle.

    You can use this command:

    COMPDF_RotatePage = 492; // StrParam = page list, for example "1-2", (1 based)

    // StrParam = page number, 1 based

    // IntParam = Rotation value

    // Rotation: ([1,2,3,4]-1)*90 or +- offset

    // StrParam="selected" and StrParam="all" is also possible

    This component will only be installed if the compiler symbol WPVIEW4 and DELPHIXE is defined in WPViewPDFINC.INC.

    It uses the IDesigner interface, therefor it requires a newer Delphi edition.

    Hi, a positioned image cannot be handled as a character - they are internally handled completely differently.

    The images are still added from left to right to the images of a page when found in a paragraph. This logic was not changed.

    Zitat

    kann ich in einer vorhandenen PDF-Datei nachträglich die Seitengröße ändern?

    Z.B. von DIN A5 auf DIN A 4

    Ja, mit WPViewPDF PLUS geht das:

    Code
     pdf.command(COMPDF_SaveScaledPDFMode, 4); // wpScalePerThousand
     try
        // Skaliere von DinA4 auf DinA5
        pdf.command(COMPDF_SaveScaledPDFSetX, round(1/sqrt(2)*1000));
        pdf.command(COMPDF_SaveScaledPDFSetY, round(1/sqrt(2)*1000));
        pdf.Plus.SaveToFile(SaveDialog1.FileName);
     finally
        pdf.command(COMPDF_SaveScaledPDFMode, 0);
     end;

    Anmerkungen und Felder können nich komplett angepasst werden, u.U. ist dann die Schriftgrösse in Feldern zu gross.

    Zitat

    Eigentlich ist das, was ich da vorhabe, nur eine "Krampflösung" mit der Tabelle in der Tabelle, weil ich Probleme mit Tabellenzeilen mit fester Höhe habe!

    Dort verhält sich das Editieren sehr merkwürdig und für den Benutzer nicht nachvollziehbar:

    Solange man im verfügbaren Bereich tippt ist alles in Ordnung, kommen aber ein paar #10 Zeilenvorschübe und Text hinzu, bleibt der Cursor irgendwie am unteren Zellenrand, springt dann teilweise ein Zeichen zurück und selbst mit 'zig-fachem Del-Taste drücken bekommt man den unsichtbaren teil des Textes unten nicht wieder hoch! Auch de Cursortasten arbeiten dann in solch einem Text nicht mehr richtig!

    Deswegen wollte ich eine Zelle, die keine Höhenbegrenzung hat, in solch eine höhenbegrenzte Zelle einfügen, da funktioniert die Editiererei nämlich so wie erwartet...

    Wenn Sie in einer höhenbegrenzten Zelle mehr als möglich Text eingeben muss der Text irgendwann versteckt werden. Ich sehe hier keine Fehlfunktion.

    ParentCell ist wie so dokumentiert:

    Retrieve the reference to the cell the table which is parent to this cell is located in. If the cell is not in a nested table ParentCell will be nil.

    Es handelt sich also bereits um die Zelle welche ihre unter Tabelle beinhaltet.

    Code
    par := WPRichText1.ActiveParagraph.ParentCell;
    if par=nil then raise Exception.Create('Nicht in Untertabelle');
    htbl := par.ParentTable
    Zitat

    Wenn man sich in einer Zelle befindet kann man mit Cell auf diese Zelle zugreifen, ausserdem gibt es noch ParentRow und ParentTable.

    Wenn Sie fragen zu einer Funktion haben, zögern Sie nicht bei gedrückter CTRL Taste in der IDE auf den Funktionsnamen zu klicken. Das bringt dann die Implementierung zum Vorschein, was oft Klarheit schafft.

    Code
    while par.ParentPar <> nil do
       par := par.ParentPar;

    verlässt alle unter absätze sodass man in dem obersten Level wiederfindet. Das wäre nach der Beschreibung die erste Tabelle, also das Tabellenobjekt, nicht die

    Wenn man sich in einer Zelle befindet kann man mit Cell auf diese Zelle zugreifen, ausserdem gibt es noch ParentRow und ParentTable.

    Dies sind alles Funktionen welche den ParagraphType abfragen.

    Mit par := WPRichText1.ActiveParagraph.ParentTable; haben sie die aktuelle Tabelle, also evtl die Untertabelle bei Schachtelung.

    Tip.: Untertabellen würde ich nur sehr sparsam verwenden und wenn es wirklich Sinn macht.

    Zitat

    Habe ich aber einen Butten neben dem WPRichText welcher das Gleiche auslösen soll, ist ActiveParagraph falsch!

    So habe ich es getestet und ActiveParagraph las in meinem Test immer noch den Text in der Tabellenzelle aus. (!)

    ActiveParagraph ist auch nicht "falsch", es ist nur so, dass irgendwie in Ihrem Projekt die Position des Cursors geändert wird - bzw. der aktive Layer verlassen.

    SetFocus setzt nicht unbedingt die cursor position.

    OnLeaveRTFDataBlock wird normalerweise aufgerufen wenn durch einen Klick ein Layer (also Header/Footer/TextBox) verlassen wird. Wenn Sie den even abfangen und in dem Handler einen breakpoint plazieren, können Sie vermutlich anhand des Stacks herausfinden, wieso der wechsel stattfindet.

    Andere Gelegenheiten für breakpoints finden sich in WPRTEDEFS.pas:

    function TWPRTFDataCursor.MoveTo(paragraph: TParagraph ...)

    procedure TWPRTFDataCursor.set_RTFData(x: TWPRTFDataBlock);