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;
|