Over het script: Hier is een eenvoudig script dat een tabel proportioneel schaalt zodat deze in de tekstkolom past waarin deze zich bevindt. Dit script werkt met de huidige tabel, maar kan eenvoudig worden uitgebreid om met alle tabellen in een document of boek te werken.
De gegevens verzamelen: Klik met uw cursor in een tabel die geschaald moet worden. U zult enkele basisgegevens moeten verzamelen om de tabel correct te schalen. Hier is geannoteerde code om de benodigde gegevens in variabelen in te stellen.
// De geselecteerde tabel.
Set vTbl = SelectedTbl;
// De huidige breedte van de tabel.
Set vTblWidth = vTbl.TblWidth;
// De breedte van de kolom waarin de tabel zich bevindt.
Set vColWidth = vTbl.TextLoc.Object.InTextObj.Width;
De variabele vColWidth is de breedte van de kolom in een meerkolomig tekstframe. Heeft het tekstframe slechts één kolom, dan is de kolombreedte gelijk aan de tekstframebreedte. Hebt u meerdere kolommen, maar wilt u de tabel schalen naar de breedte van het tekstframe, gebruik dan de volgende regels in plaats van de laatste twee regels hierboven.
// De breedte van het tekstframe waarin de tabel zich bevindt.
Set vColWidth = vTbl.TextLoc.Object.InTextFrame.Width;
Nu kan het script enkele berekeningen uitvoeren om uit te rekenen hoeveel de tabel moet worden geschaald.
// Deel de kolombreedte door de tabelbreedte.
Set vScaleFactor = vColWidth / vTblWidth;
Hoe schaal ik de tabel?
De eigenschap TblWidth van de tabel is alleen-lezen, dus u kunt dit niet gebruiken om de tabel te schalen.
// Dit werkt niet.
Set vTbl.TblWidth = vTblWidth * vScaleFactor;
In plaats daarvan moet u de breedte van elke individuele kolom van de tabel wijzigen. Deze breedtes worden opgeslagen in een MetricList genaamd TblColWidths.
// Stel een variabele in voor de tabelkolombreedte.
Set vWidths = vTbl.TblColWidths;
Een metrische lijst is een lijst met meetwaarden. In dit geval is er voor elke kolom in de tabel een lid van de lijst. Als de tabel vijf kolommen heeft, bevat de TblColWidth-lijst vijf leden.
De sleutel tot het script is om door de lijst met meetwaarden te lopen, elk ervan met vScaleFactor te vermenigvuldigen en de nieuwe waarde terug in de lijst in te voegen.
// Loop door de lijst en bereken de nieuwe breedte
// van elke tabelkolom.
Loop While(vCounter <= vWidths.Count) LoopVar(vCounter)
Init(1) Incr(1)
Get Member Number(vCounter) From(vWidths) NewVar(vWidth);
Set vNewWidth = vWidth * vScaleFactor;
Replace Member Number(vCounter) In(vWidths) With(vNewWidth);
EndLoop
De variabele vCounter verhoogt met 1 (Incr(1)) vanaf 1 (Init(1)) tot het aantal leden in vWidths (vWidths.Count). Elk lid wordt met de schaalfactor vermenigvuldigd en het lid wordt vervangen door de nieuwe waarde.
Uw variabele vWidths MetricList bevat nu de juiste breedtes om de tabel naar de kolombreedte te schalen. Het enige wat nog overblijft is om de nieuwe waarden aan de tabel toe te wijzen.
Set vTbl.TblColWidths = vWidths;