Algorithm: IMetabaseObjectDescriptor;
The Algorithm property determines description of the algorithm that will be calculated.
Executing the example requires that the repository contains a regular report with the REPORT identifier and a calculation algorithm with the ALGORITHM identifier. The algorithm and the regular report contain a parameter based on the same repository dictionary.
The file system should contain the button image file D:\Work\Image\btn16x16.png.
Add links to the Express, IO, Metabase and Report system assemblies.
Sub UserProc;
Var
Mb: IMetabase;
Report: IPrxReport;
UserBtn: IPrxUserButton;
AlgAction: IPrxUserButtonActionAlgorithm;
AlgParam: IAlgorithmParam;
ElementKeys: Array;
Begin
Mb := MetabaseClass.Active;
Report := Mb.ItemById("REPORT").Edit As IPrxReport;
// Create a new custom button
UserBtn := Report.UserButtons.AddByType(PrxUserButtonType.Algorithm);
UserBtn.Name := "Start algorithm";
// Set up custom button
UserBtn.Icon := New FileStream.Create("D:\Work\Image\btn16x16.png", FileOpenMode.Read, FileShare.DenyNone);
UserBtn.IconType := "png";
UserBtn.SmallIcon := False;
// Set up actions
AlgAction := UserBtn.Action As IPrxUserButtonActionAlgorithm;
AlgAction.Algorithm := Mb.ItemById("ALGORITHM");
AlgParam := AlgAction.Params.Item(0);
AlgParam.Type := AlgorithmParamType.Constant;
ElementKeys := New Variant[2];
ElementKeys[0] := 1;
ElementKeys[1] := 2;
(AlgParam.Control As IAlgorithmConstantParamControl).ConstantValue := ElementKeys;
// Save changes
(Report As IMetabaseObject).Save;
End Sub UserProc;
After executing the example a new custom button is created in the regular report. Name and image are set for the button. Algorithm calculation is selected as a custom button action. A constant value that is a selection of two elements with the specified keys will be sent to calculation algorithm parameter.
See also: