Recalculates all formulas for the referenced worksheet.
PROCEDURE RecalculateWS(worksheet : HANDLE);def vs.RecalculateWS(worksheet):
return None| Name | Type | Description |
|---|---|---|
| worksheet | HANDLE | Handle to worksheet. |
This does not update the screen, so you should also do:
ResetObject(worksheet);
WSImage := GetWSImage(worksheet);
If WSImage <> NIL then ResetObject(WSImage);PROCEDURE WSrecalc;
{ (c) Petri Sakkinen 2008, except the key part which is (c) Victor via VSFR }
VAR
i, n : INTEGER;
objName : STRING;
foundObject : HANDLE;
OK : BOOLEAN;
FUNCTION DoIt (h : HANDLE) : BOOLEAN;
BEGIN
RECALCULATEWS(h);
RESETOBJECT(h); { these two lines }
RESETOBJECT(GETWSIMAGE(h)); { are the key part! }
END;
BEGIN
n := NAMENUM;
FOR i := 1 TO n DO BEGIN
foundObject := GETOBJECT(NAMELIST(i));
IF GETTYPE(foundObject) = 18 THEN ok := DoIt(foundObject);
END;
END;
RUN(WSrecalc); {Recalculate}
RecalculateWS(tempHandle);
ResetObject(tempHandle);
SetObjectVariableBoolean(tempHandle,82,FALSE);
END
SetWSCellBorder(wsHand, kFldNameRow, kLocCol, kNumRows, kRadiusCol, TRUE, TRUE, TRUE, TRUE, TRUE);
str := Concat('=DATABASE(INOBJECT & (R IN [''NNA_PropertyLine_CurveData''])) & (L=', QStr(GetLName(GetLayer(objHand))), ')');
SetWSCellFormula(wsHand, kNumRows, 0, kNumRows, 0, str);
SetWSColumnOperators(wsHand, kNumRows, -1, 0, 0, 0, 0, 0);
RecalculateWS(wsHand);
END;
BEGIN
RecalculateWS( MyWSHandle );
SetRField(objHand, objName, 'UpdateWS', 'FALSE');
ResetObject(MyWSHandle);
WSImage := GetWSImage(MyWSHandle);
IF WSImage <> NIL THEN ResetObject(WSImage);vs.RecalculateWS(worksheet)See also in tutorials: 21. Hello Worksheet — Create and Populate, 22. Selected Objects → Worksheet Rows, 23. Count Objects by Criteria (Formula-Driven), 24. Auto-Populating Database Row
Availability: from VectorWorks9.0