var ATextBox: TvxTextBox; function CreateForm: TvxSceneForm; var ARoot: TvxVisualObject; ALabel: TvxLabel; begin result := TvxSceneForm.Create(nil); result.Caption := UTF8Encode('Search by partial text'); result.Position := poScreenCenter; result.Height := 100 * result.DPIFactor; ARoot := result.Root; ALabel := TvxLabel.Create(ARoot); ALabel.Text := 'Enter text part to search for:'; ALabel.TextAlign := vgTextAlignNear; ALabel.Padding.Left := 10; ALabel.Padding.Top := 10; ALabel.Align := vaTop; ARoot.AddObject(ALabel); ATextBox := TvxTextBox.Create(ARoot) ATextBox.Padding.Left := 10; ATextBox.Padding.Right := 10; ATextBox.Padding.Top := 10; ATextBox.Align := vaTop; ATextBox.Text := 'flower'; ARoot.AddObject(ATextBox); end; procedure SearchOperation(ASearchString: WideString); var ADs: TDBXOMClientDataSet; AData: TidElement; AColl: TImageCollection; begin ADs := PublicCatalog.NewDataset; ADs.CommandText := 'select distinct ' + PublicCatalog.FullColumnList('i.') + ' ' + 'from v_catalogitem i ' + 'inner join idSearchData s on s.RelatedGUID = i.GUID ' + 'where s.ContentValue like ''%' + StrTran(ASearchString, '''', '''''') + '%'' ' + 'UNION ALL ' + 'select distinct ' + PublicCatalog.FullColumnList('i.') + ' ' + 'from v_catalogitemversion i ' + 'inner join idSearchData s on s.RelatedGUID = i.GUID ' + 'where s.ContentValue like ''%' + StrTran(ASearchString, '''', '''''') + '%'' ' + ''; ADs.LockType := ReadLockType; ADs.OpenSet; try AData := TidElement.Create(nil); try PublicBroadCast(nil, 'OpenNewTab', nil); PublicBroadCastRequest(nil, 'ActiveCollection', AData); AColl := AData.Data; AColl.Clear; AColl.Items.AddDataset(ADs, True); PublicBroadCast(nil, 'RefreshActiveCollection', nil); finally AData.Free; end; finally ADs.CloseSet; end; PublicCatalog.FreeDataset(ADs); end; var AForm: TvxSceneForm; begin AForm := CreateForm; try ATextBox.Text := ReadFromRegistry('', 'scSearchText.LastText', ''); AForm.PrepareModal([mbOK, mbCancel]); AForm.ShowModal; if AForm.ModalResult = mrOk then begin if Trim(ATextBox.Text) = '' then Say('No text entered') else begin WriteToRegistry('', 'scSearchText.LastText', ATextBox.Text); SearchOperation(ATextBox.Text); end; end; finally AForm.Free; end; end;