IDimAttributeProbe.Probe

Синтаксис

Probe(Dimension: IDimensionModel; Attribute: IDimAttribute): Boolean;

Параметры

Dimension - измерение;

Attribute - атрибут измерения.

Описание

Метод Probe проверяет атрибут: если значение True, то поиск будет осуществлен по данному атрибуту, в противном случае - нет. Для использования метода необходимо свойство IDimTextCriteria.CriteriaOptions установить в SearchProbeAttributes.

Пример

В рассматриваемом примере на форме располагаются компоненты: два UiDimension, два EditBox, два DimensionCombo, Button. Для кнопки описано событие OnClick, для формы OnShow.

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; // EditBox1.Text содержит идентификатор базы данных временных рядов
        Inst := (Cat As IMetabaseObject).Open(NullAs 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;

После запуска формы необходимо произвести отметку в раскрывающих списках измерений, затем ввести текст для поиска и нажать на кнопку, после чего отметка в списках будет изменена: останутся выделенными только те элементы, у которых по атрибуту SpecialName будет найден искомый текст.

См. также:

IDimAttributeProbe