TIEPortableDevices.DeleteFromDevice
 
Declaration
function DeleteFromDevice(const sDeviceID, sObjectID : WideString; bDeleteSubObjects: Boolean = True): Integer; overload;
function DeleteFromDevice(const sDeviceID, sObjectID : WideString; bDeleteSubObjects: Boolean; var sResultText: WideString): Integer; overload;
function DeleteFromDevice(const sDeviceID : WideString; ssObjectIDs : TStrings; bDeleteSubObjects: Boolean = True): Integer; overload;
function DeleteFromDevice(const sDeviceID : WideString; ssObjectIDs : TStrings; bDeleteSubObjects: Boolean; var sResultText: WideString): Integer; overload;
function DeleteFromDevice(Indexes : TStrings; bDeleteSubObjects: Boolean = True): Integer; overload;
Description
Delete files or folders from a device.
 | Parameter |  Description |  
 | sDeviceID |  The ID of the device to delete from (e.g. ActiveDeviceID |  
 | sObjectID or ssObjectIDs |  The ID(s) of the file(s) or folder(s) to delete (e.g. ActiveFolderID |  
 | bDeleteSubObjects |  If sObjectID is a folder, then enabling bDeleteSubObjects will also delete all objects in sub-folders |  
 | sResultText |  Is filled with a response from the WPD API regarding the success or failure of the action (e.g. "1 file was successfully deleted) |  
 
Result is a count of the files deleted, or -1 if an error was encountered.
// Delete the current folder and all sub-folders
IEPortableDevices.DeleteFromDevice( IEPortableDevices.ActiveDeviceID, IEPortableDevices.ActiveFolderID, True );
// Delete the selected file or folder
procedure TfrmMain.btnDeleteFromDeviceClick(Sender: TObject);
var
  sResultText: WideString;
  Idx: Integer;
  aObject: TIEWPDObject;
begin
  if lbxObjects.ItemIndex < 0 then
    exit;
  Idx := fPortableDevices.ObjectIDToIndex( lbxObjects.Items[ lbxObjects.ItemIndex ] );
  aObject := fPortableDevices.Objects[ Idx ];
  if MessageDlg( 'Are you sure you want to delete the file: ' + aObject.Filename, mtConfirmation, [ mbYes, mbNo ], 0 ) = mrYes then
  begin
    ShowTempHourglass;
    // Note: bDeleteSubObjects is true, so if a folder is selected it will also delete any files in it
    if IEPortableDevices.DeleteFromDevice(  IEPortableDevices.ActiveDeviceID, aObject.ID, True, sResultText ) > -1 then
      lbxObjects.Items.Delete( lbxObjects.ItemIndex );
    ShowMessage( sResultText );
  end;
end;
// Delete all displayed files
procedure TfrmMain.btnDeleteAllClick(Sender: TObject);
var
  sResultText: WideString;
  iCount: Integer;
begin
  if lbxObjects.Items.Count = 0 then
    exit;
  if MessageDlg( format( 'Are you sure you want to delete the %d files in this folder?', [ lbxObjects.Items.Count ] ),
                mtConfirmation, [ mbYes, mbNo ], 0 ) = mrYes then
  begin              
    ShowTempHourglass;
    iCount := IEPortableDevices.DeleteFromDevice( IEPortableDevices.ActiveDeviceID, lbxObjects.Items, True, sResultText );
    if iCount = -1 then
      ShowMessage( sResultText )
    else
    begin
      lbxObjects.Items.Clear;
      ShowMessage( format( '%d files were successfully deleted', [ iCount ] ));
    end;
  end;
end;