Beiträge von wpsupport

    Hier wird die Erstellung eines combo feldes beschrieben.

    Ansonsten hier ein kurzes Besipiel:

    Um das gerade selektierte zu markieren reicht es aus den Pointer auf das selektierte mit dem zu zeichnenden Textbox zu vergleichen. Mann muss dafür nicht die Liste durchlaufen. Ich hatte in 2017 das entsprechende Event eingebaut:

    procedure TWPPremTest.WPRichText1BeforePaintLayer(Sender: TObject;

    Editor: TWPRTFEnginePaint; RTFData: TWPRTFDataBlock; Canvas: TCanvas;

    R: TRect; InEditor, IsEditing: Boolean);

    begin

    if InEditor and IsEditing and (RTFData.Kind = wpIsOwnerSelected) then

    begin

    Canvas.Brush.Style := bsSolid;

    Canvas.Brush.Color := $eaefea;

    InflateRect(r,-5,-5);

    Canvas.FillRect( r );

    end;

    end;

    Zitat

    ist list.count dann aber 0 groß!

    Das liegt daran, dass Sie hier kein Objekt des Types wpobjTextObject sonder eine TextBox erstellen. TextBoxen haben wie Bilder den Typ wpobjImage.

    Usually the event TWPRichText.OnRequestHTTPImage is used to load an image which is referenced by a name or id.

    That event is also available in the TWPRTFDataCollection which is accessible through Painter.RTFData. (I renamed "RTF" to "Painter")

    To use the event you need to create an event handler like this:

    Procedure TForm.DoLoadImage(

    RTFData: TWPRTFDataCollectionBase;

    Reader: TWPCustomTextReader;

    const LoadPath, url: string; TextObject: TWPTextObj; var Ok: Boolean) ;

    And assign it to Hint.Painter.OnRequestHTTPImage in code.

    A TWPRichText would cause too much overhead, this can be done easily with the TWPPaintEngine. But it is necessary to override the TBalloonHint.

    The code is also a good example how to use this non-visual class TWPPaintEngine.

    Usage:

    in Form.OnCreate

    aHint := TWPRTFBalloonHint.Create(Self);

    when you need it:

    aHint .Text := '<html><div style="text-align:center">Hello <b>World</b><br>Second Line</div></html>';

    aHint .ShowHint(Mouse.CursorPos);


    (The TWPRTFBalloonHint will officially be part of the next release of WPTools 9.1.)

    Es ist nicht möglich ein PDF in ein RTF einzufügen oder ein RTF in ein PDF.

    Was geht is mehrere PDF Dateien in WPViewPDF plus aneinander zu hängen und dann die Seiten neu zu ordnen und auch Seiten zu löschen.

    Natürlich kann man Bilder (PNG) aus WPViewPDF an beliebigen Stellen in einen Text einfügen - Sektionen braucht man dafür nicht.

    WPTools 6 ist aber überholt.

    The code originally was intended to be inside the loop to skip spaces, this is why the lines are duplicated.

    To solve your problem I would create an ID for each paragraph when it is appended. So you can skip the paragraphs which have been appended before.

    As ID you could use the name property of a paragraph or par.ASet(WPAT_USER, id) (which is not saved to RTF, btw).

    Alternatively you could also use hidden text.

    Es wird also MergeText nach dem Einfügen des Textes aufgerufen und dabei gehen die Attribute verloren, nicht wegen SaveToString!

    Achten Sie bitte darauf, dass die Einfügepunkte << >> das text Attribut besitzen, welches auch der enthaltene Text haben soll.

    Das ist immer wichtig, ob die Felder im header, footer, text box oder im body sind.

    Der Text innerhalb von << >> ist nicht das Feld, sondern der Feldinhalt. Dieser Text ist optional und kann ersetzt werden, er kann auch fehlen.

    Man kann die Attribute des Textes aber so auslesen (--> Mail Merge):

    Contents.MergeAttr.CharAttr := WPRichText1.CPCharAttr;