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;