Resource

Resource Basics

Resource Name Search by File Size (MB)
Resource Version 1.0
Category Search Scripts
Downloads 383
Release Date 11/7/2025 10:16:47 AM
 

Resource Details

Description This script searches through the entire Photo Supreme Catalog for a file size limitation (specified in MB)
Installation Instructions 1. Download the script to your hard drive
2. Select Tools -> Scripter
3. Load the Script as saved in step 1
4. Run the script
Usage Instructions After starting the script, you can enter the file size and condition (>= or <=) to search for.
Changes in this version initial version
Special Requirements Photo Supreme V5
 

Author Information

Author Name IDimager Support
 

Script

var
  ATextBox: TvxTextBox;
  AGTCondition: TvxRadioButton;
  ALTCondition: TvxRadioButton;

  function CreateForm: TvxSceneForm;
  var
    ARoot: TvxVisualObject;
    ALabel: TvxLabel;
  begin
    result := TvxSceneForm.Create(nil);
    result.Caption := UTF8Encode('Search by File Size MB');
    result.Position := poScreenCenter;
    result.Height := 130 * result.DPIFactor;

    ARoot := result.Root;

    ALabel := TvxLabel.Create(ARoot);
    ALabel.Text := 'Enter file size in MB:';
    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;
    ARoot.AddObject(ATextBox);

    AGTCondition := TvxRadioButton.Create(ARoot);
    AGTCondition.GroupName := 'Condition';
    AGTCondition.Padding.Left := 10;
    AGTCondition.Padding.Right := 10;
    AGTCondition.Padding.Top := 10;
    AGTCondition.Align := vaTop;
    AGTCondition.Text := 'greater or equal than';
    ARoot.AddObject(AGTCondition);

    ALTCondition := TvxRadioButton.Create(ARoot);
    ALTCondition.GroupName := 'Condition';
    ALTCondition.Padding.Left := 10;
    ALTCondition.Padding.Right := 10;
    ALTCondition.Padding.Top := 10;
    ALTCondition.Align := vaTop;
    ALTCondition.Text := 'less or equal than';
    ARoot.AddObject(ALTCondition);
  end;

  function Condition: WideString;
  begin
    if AGTCondition.IsChecked then
      result := '>='
    else
      result := '<='
  end;

  procedure SearchFileName(ASearchString: WideString);
  var
    ADs: TDBXOMClientDataSet;
    AData: TidElement;
    AColl: TImageCollection;
  begin
    ASearchString := StrTran(ASearchString, ',', '.');
    if not IsValidNumberString(ASearchString, False, '.') then
    begin
      Say2('The value should be a valid number' + CrLf2W + 'Tip: Use the dot (.) as decimal separator' + CrLfW + 'Tip: Do not use thousands separator', ASearchString);
      exit;
    end;

    ADs := PublicCatalog.NewDataset;

    ADs.CommandText := 'select ' + PublicCatalog.FullColumnList('') + ' ' +
                       'from   v_catalogitem ' +
                       'where  (FileSize/1048576.0) ' + Condition + ' ' + ASearchString + ' ' +
                       'UNION ALL ' +
                       'select ' + PublicCatalog.FullColumnList('') + ' ' +
                       'from   v_catalogitemversion ' +
                       'where  (FileSize/1048576.0) ' + Condition + ' ' + 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('', 'scSearchFileSize.LastText', '');
    AGTCondition.IsChecked := ReadFromRegistry('', 'scSearchFileSize.LastGTCondition', 0) = 1;
    ALTCondition.IsChecked := ReadFromRegistry('', 'scSearchFileSize.LastLTCondition', 0) = 1;

    if (not AGTCondition.IsChecked) and
       (not ALTCondition.IsChecked)
    then
      AGTCondition.IsChecked := True;

    AForm.PrepareModal([mbOK, mbCancel]);
    AForm.ShowModal;
    if AForm.ModalResult = mrOk then
    begin
      WriteToRegistry('', 'scSearchFileSize.LastLTCondition', iif(ALTCondition.IsChecked, 1, 0));
      WriteToRegistry('', 'scSearchFileSize.LastGTCondition', iif(AGTCondition.IsChecked, 1, 0));
      WriteToRegistry('', 'scSearchFileSize.LastText', ATextBox.Text);
      SearchFileName(ATextBox.Text);
    end;
  finally
    AForm.Free;
  end;
end;