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