Resource

Resource Basics

Resource Name Search Partial Text
Resource Version 1.0
Category Search Scripts
Downloads 696
Release Date 8/17/2021 10:32:24 AM
 

Resource Details

Description This script searches trhough the entire catalog for a text part that can be entered.
Installation Instructions n.a.
Usage Instructions Click the drop down in the Tab Bar
Select this script
Changes in this version n.a.
Special Requirements
 

Author Information

Author Name IDimager Support
 

Script

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;