CriteriaOptions: TextCriteriaOptions;
CriteriaOptions: Prognoz.Platform.Interop.Dimensions.TextCriteriaOptions;
Свойство CriteriaOptions определяет параметры поиска.
Для выполнения примера разместите на форме компонент Label с наименованием LABEL1, EditBox/TextBox с наименованием EDITBOX1/TEXTBOX1, два компонента Button с наименованиями BUTTON1/BUTTON2, компонент DimensionTree/DimensionTreeNet с наименованием DEMENTIONTREE1/DEMENTIONTREENET1, UiDimension/UiDimensionNet с наименованием UIDEMENTION1/UIDEMENTIONNET1 и MetabaseOpenDialog/MetabaseOpenDialogNet с наименованием METABASEOPENDIALOG1/METABASEOPENDIALOGNET1.
Измените значения свойства Text для компонентов: Label значение «Текст поиска», EditBox/TextBox задайте пустое значение, для компонента Button с наименованием BUTTON1 установите значение «Поиск», для BUTTON1 значение «Открыть». Для компонента DimensionTree/DimensionTreeNet свойству Dimention установите значение «UiDimension1/UiDimensionNet1».
Добавьте ссылки на системные сборки: Dimentions и Metabase.
Class UserProc: Form
EditBox1: EditBox;
Button1: Button;
Button2: Button;
Label1: Label;
UiDimension1: UiDimension;
MetabaseOpenDialog1: MetabaseOpenDialog;
DimensionTree1: DimensionTree;
Function Search(DimInst: IDimInstance; SearchStr: String): IDimSelection;
Var
Result: IDimSelection;
TextCriteria: IDimTextCriteria;
OrmManager: IDimOrmManager;
Begin
If IsNull(dimInst) Or searchStr.IsEmpty Then
Return Result;
End If;
TextCriteria := New DimTextCriteria.Create;
TextCriteria.CriteriaOptions := TextCriteriaOptions.LikeText Or TextCriteriaOptions.SearchStringAttributes;
TextCriteria.Text := SearchStr;
Result := DimInst.CreateSelection;
OrmManager := New DimOrmManager.Create;
OrmManager.CreateCondition(DimInst.Dimension, TextCriteria).SelectElements(Result);
Return Result;
End Function search;
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Begin
UiDimension1.Selection := Search(UiDimension1.DimInstance, EditBox1.Text);
End Sub Button1OnClick;
Sub Button2OnClick(Sender: Object; Args: IMouseEventArgs);
Begin
If MetabaseOpenDialog1.Execute(Self) Then
UiDimension1.Active := False;
UiDimension1.Dimension := MetabaseOpenDialog1.Object.Bind As IDimensionModel;
UiDimension1.Active := True;
End If;
End Sub Button2OnClick;
End Class UserProc;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Metabase;
…
Function Search(dimInst: IDimInstance; SearchStr: String): IDimSelection;
Var
Result: IDimSelection;
TextCriteria: DimTextCriteria;
OrmManager: IDimOrmManager;
Begin
If DimInst = Null Or String.IsNullOrEmpty(SearchStr) Then
Return Result;
End If;
TextCriteria := New DimTextCriteria.Create();
TextCriteria.CriteriaOptions := TextCriteriaOptions.tecropLikeText Or TextCriteriaOptions.tecropSearchStringAttributes;
TextCriteria.Text := SearchStr;
Result := DimInst.CreateSelection();
OrmManager := New DimOrmManager.Create();
OrmManager.CreateCondition(DimInst.Dimension, TextCriteria).SelectElements(Result, Null);
Return Result;
End Function Search;
Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Begin
UiDimensionNet1.Selection := search(UiDimensionNet1.DimInstance, TextBox1.Text);
End Sub;
Private Sub button2_Click(sender: System.Object; e: System.EventArgs);
Begin
If MetabaseOpenDialogNet1.Execute(Self) Then
UiDimensionNet1.Active := False;
UiDimensionNet1.Dimension := MetabaseOpenDialogNet1.Object.Bind() As IDimensionModel;
UiDimensionNet1.Active := True;
End If;
End Sub;
End Class;
После запуска формы нажмите кнопку «Открыть» и выберите справочник. В результате в форме отобразится иерархический список элементов справочника. Введите текст для поиска и нажмите кнопку «Поиск». В результате отметка в списках будет изменена: будут отмечены только те элементы, которые соответствуют критерию поиска.

См. также: