Maximale Höhe eines Paragraphen

  • Ich würde gerne ein Bild einfügen, dass im aktuellen Paragraphen 100% der Resthöhe einnimmt. Wie kann ich

    in WPTools6 diese Höhe berechnen.

    Prinzipiell benutze ich:

    with fRichText.Header do

    SizeY:=round( MulDiv(PageHeight - TopMargin - BottomMargin,// - MarginHeader - MarginFooter,

    StrToInt(FirstWordSeparator('%', s, False)),100) / cScaleFactor);

    für die maximale Höhe - allerdings könnte ein wenig Text darüber stehen (oder ein Header/Footer).

    Versucht habe ich RichText.ActivePar.HeightTotal bzw. RichText.CPYPos benutzt... ohne echten Erfolg..

  • Skalieren/Verzerren darf ich das Bild auf keinen Fall - das müsste doch gehen sonst könnte doch niemand irgendwelche Formatierungen machen?!?!.

    Wie könnte ich das bei einer Tabelle machen. Könnte ich da eine 1x1 Tabelle (mit 100% Resthöhe/Breite) mit unsichtbarem Rahmen einfügen und die maximale Höhe/Breite ermitteln?

  • Genau. Es darf nicht skaliert werden - würde es skaliert würden feine Gitterlinien, die auch mm entsprechen würden skaliert werden und

    deren Abstand stimmt dann nicht mehr. Deshalb die Frage - wie kann ich genau herausfinden, wieviel Platz noch auf der Seite frei ist um genau

    ein Bild einpassen zu können.

    Geht das mit einer neueren Version? Es wäre natürlich schön wenn es mit einer alten auch noch geht...

    • Offizieller Beitrag

    Genau. Es darf nicht skaliert werden - würde es skaliert würden feine Gitterlinien, die auch mm entsprechen würden skaliert werden und

    deren Abstand stimmt dann nicht mehr. Deshalb die Frage - wie kann ich genau herausfinden, wieviel Platz noch auf der Seite frei ist um genau

    ein Bild einpassen zu können.

    Das geht nicht, was geht ist das zeichnen eines passendes Bildes (mit den Abständen) in dem Event OnPaintTextObject

  • Nur wie hoch muss das objekt dann sein???

    und warum könnte folgender code nicht funktionieren?:
    Die Seiten sind immer 0 und der Loop endet vorzeitig, obwohl schlußendlich das erzeugte Bild mit höhe SizeY auf Seite 3 landet.

    // ###########################################

    // #### Iteratively change the size until it fits on the page

    gra := TBitmap.Create;

    gra.SetSize(1, 1);

    wpimg:=TWPOImage.CreateImage(fRichText.Memo.RTFData, memGra);

    with fRichText.Header do

    SizeY:=round( MulDiv(PageHeight - TopMargin - BottomMargin,// - MarginHeader - MarginFooter,

    1,100) / cScaleFactor);

    textObj := fRichText.TextObjects.Insert(wpimg);

    wpimg.WidthTW :=Round(SizeX*cScaleFactor);

    wpimg.HeightTW:=Round(SizeY*cScaleFactor);

    textObj.Height := MulDiv(wpImg.HeightTW, 2, 3);

    fRichText.ReformatAll(True, True);

    curPage := fRichText.CPPage; //textObj.ParentRTFPage;

    scale := 100;

    repeat

    dec(scale, 2);

    with fRichText.Header do

    SizeY:=round( MulDiv(PageHeight - TopMargin - BottomMargin,// - MarginHeader - MarginFooter,

    scale,100) / cScaleFactor);

    wpimg.HeightTW:=Round(SizeY*cScaleFactor);

    textObj.Height := MulDiv(wpImg.HeightTW, 2, 3);

    fRichText.ReformatAll(True, True);

    //isOnSamePage := textObj.ParentRTFPage = curPage;

    isOnSamePage := fRichText.CPPage = curPage;

    until (isOnSamePage) or (scale < 70);

    textObj.Free;

    gra.Free;

    • Offizieller Beitrag

    Das funktioniert so nicht, da das CPPage nicht eindeutig ist - ein Absatz kann auf mehreren Seiten gleichzeitig sein. CPPage ist für die Navigation und nicht für eine schleife gedacht.

    WPTools kann auch Seiten in den Text einblenden, diese sind nicht Teil des Textes. Stichwort: External Pages.

    Oder man fügt ein Absatz- oder Seiten Bild ein - der Absatz hätte dann nur einen Seitenumbruch. Sowas könnte man dann auch so wieder später laden. Das ausgemessene Bild erzeugt evtl einen anderen Umbruch, je nach Treiber.

    Das problem lässt sich vielleicht anders lösen, dafür kann ich gerne Tips per e-mail geben.

    Grundlage ist aber immer die aktuelle Version von WPTools.