Ver Mensaje Individual
  #6  
Antiguo 02-01-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Histri.

Un ejemplo básico con dos items:
Código Delphi [-]
type
  TForm1 = class(TForm)
    FileListBox1: TFileListBox;
    PopupMenu1: TPopupMenu;
    Edit1: TEdit;
    ...
  private
    procedure miCopyClick(Sender: TObject);
    procedure miDeleteClick(Sender: TObject);
  public
  end;

...

implementation

procedure TForm1.miCopyClick(Sender: TObject);
var
  i: Integer;
begin
  if not DirectoryExists(Edit1.Text) then
    raise Exception.Create('Ruta inválida');
  with FileListBox1 do
  begin
    if Directory = Edit1.Text then
      raise Exception.Create('Las carpetas de origen y destino son las mismas');
    for i := 0 to Items.Count-1 do
      if Selected[i] then
        if not CopyFile(PChar(Directory+'\'+Items[i]),
                        PChar(Edit1.Text +'\'+ Items[i]), True) then
          MessageBox(Handle,PChar('Error: '+SysErrorMessage(GetLastError)),'',
                     MB_ICONERROR);
  end;
end;

procedure TForm1.miDeleteClick(Sender: TObject);
const
  MSG = '¿ Desea borrar el archivo %s ?';
var
  i: Integer;
begin
  with FileListBox1 do
  begin
    for i := 0 to Items.Count-1 do
      if Selected[i] then
        if MessageBox(Handle, PChar(Format(MSG,[Directory+'\'+Items[i]])),
                      '', MB_ICONQUESTION+MB_YESNO) = IDYES then
          if not DeleteFile(PChar(Directory+'\'+Items[i])) then
            MessageBox(Handle,PChar('Error: '+SysErrorMessage(GetLastError)),'',
                       MB_ICONERROR);
    Directory := '.';
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  miCopy, miDelete: TMenuItem;
begin

  miCopy := TMenuItem.Create(Self);
  miCopy.Caption := '&Copiar';
  miCopy.OnClick := miCopyClick;
  PopupMenu1.Items.Add(miCopy);

  miDelete := TMenuItem.Create(Self);
  miDelete.Caption := '&Borrar';
  miDelete.OnClick := miDeleteClick;
  PopupMenu1.Items.Add(miDelete);

  FileListBox1.Directory := 'C:\Una_Carpeta'; // Orígen
  FileListBox1.MultiSelect := True;   // Selección múltiple
  FileListBox1.PopupMenu := PopupMenu1;
end;
...
Cree los ítems y eventos de PopupMenu1 en tiempo de ejecución para darle mas claridad al ejemplo, pero lo podes realizar en tiempo de diseño.
Para que la copia se realice, el edit debe contener una carpeta de destino válida.

Saludos

Edito: Pero el ejemplo no evita el uso de un PopupMenu como solicitabas en el mensaje #3.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 02-01-2014 a las 14:00:20.
Responder Con Cita