Probe: IDimAttributeProbe;
The Probe property calls back to determine, by which attributes the search should be based.
In the example the form contains the following components: two UiDimension, two EditBox, two DimensionCombo components, and Button component. The OnClick event is described for the button, the OnShow event is described for the form.
Class UserForm: Form
Memo1: Memo;
EditBox1: EditBox;
uidimCountries: UiDimension;
dcCountries: DimensionCombo;
uidimIndicator: UiDimension;
dcIndicator: DimensionCombo;
Label1: Label;
Label2: Label;
EditBox2: EditBox;
Label3: Label;
Button1: Button;
Mb: IMetabase;
Cat: IRubricator;
Inst: IRubricatorInstance;
pAttrs : IMetaAttributes;
Sub UserFormOnShow(Sender: Object; Args: IEventArgs);
Begin
Mb := MetabaseClass.Active;
Cat := Mb.ItemById(EditBox1.Text).Bind As IRubricator;
Inst := (Cat As IMetabaseObject).Open(Null) As IRubricatorInstance;
pAttrs := Inst.Facts.Dictionary.Attributes;
uidimCountries.Object := pAttrs.FindById("COUNTRY").ValuesObject;
uidimIndicator.Object := pAttrs.FindById("INDICATOR").ValuesObject;
End Sub UserFormOnShow;
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
selections : IDimSelectionSet;
factory : IDimSelectionSetFactory;
FactLookup : IRubricatorFactsLookup;
MetaLookup : IMetaDictionaryLookup;
Criteria : IDimTextCriteria;
ObjProbe : MyProbe;
Begin
factory := New DimSelectionSetFactory.Create;
selections := factory.CreateDimSelectionSet;
selections.Add(dcCountries.Dimension.DimInstance);
selections.Add(dcIndicator.Dimension.DimInstance);
dcCountries.Selection.CopyTo(selections.Item(0), True);
dcIndicator.Selection.CopyTo(selections.Item(1), True);
FactLookup := Inst.CreateFactsLookup;
MetaLookup := FactLookup.Lookup;
Criteria := New DimTextCriteria.Create;
Criteria.SelectOptions := ConditionSelectOptions.SelectedOnly;
Criteria.CriteriaOptions := TextCriteriaOptions.SearchProbeAttributes Or TextCriteriaOptions.FreeText;
Criteria.Text := EditBox2.Text;
ObjProbe := New MyProbe.Create;
Criteria.Probe := ObjProbe;
selections := FactLookup.SetTextCriteria(Criteria, selections);
selections.Item(0).CopyTo(dcCountries.Selection, True);
selections.Item(1).CopyTo(dcIndicator.Selection, True);
End Sub Button1OnClick;
End Class UserForm;
Public Class MyProbe : Object, IDimAttributeProbe
Public Function Probe(Dimension : IDimensionModel; Attribute : IDimAttribute) : Boolean;
Begin
Return (Attribute.Name = "SpecialName");
End Function Probe;
End Class MyProbe;
Start the form and select desired element in drop-down dimension lists, then type in the text to be searched and click the button; list selection changes: only the dimension elements the SpecialName attributes of which contain entered text remain selected.
See also: