Delphi: Drag-and-drop com múltipos arquivos

Delphi: Drag-and-drop com múltipos arquivos

4 de junho de 2012 0 Por Ramos de Souza Janones
Como vender Software - Seja desktop, web ou MobilePowered by Rock Convert

O controle TShellListView (a parte do pacote de controles Shell) pode ser usado para exibir arquivos do sistema de arquivos. Emparelhado com casca TShellTreeView, o TShellListView pode ser usado para imitar interface de usuário Windows Explorer.

Dica Delphi: O nome completo (path) do arquivo selecionado é armazenado na propriedade SelectedFolder. Ou seja, se um arquivo é selecionado em um shell list view, para ter seu nome pode ler-se: ShellListView1.SelectedFolder.PathName.

Note-se que SelectedFolder é do tipo TShellFolder, e sua propriedade IsFolder avisam se o item selecionado é uma pasta ou um arquivo.

Powered by Rock Convert

 

Quando a propriedade é definida MultiSelect (true) para ver a lista de shell, para obter a lista de arquivos selecionados, você precisa percorrer os itens e verificar se um item é selecionado.

Aqui está um exemplo de arrastar-soltar arquivos selecionados a partir do TShellListView para um controle TMemo. Coloque um  controle TMemo em um formulário e coloque seu nome como “memoSelectedFiles”. Coloque, também, um TShellListView.

No Memo, nos eventos OnDragDrop e OnDragOver coloque o código a seguir:

LEIA TAMBÉM:  Aprenda Delphi para Android e iOS de graça (ou quase)

//No evento OnDragDrop
procedure TSimpleFilesForm.memoSelectedFilesDragDrop(Sender, Source: TObject; X, Y: Integer);
var
files: TStringList;
slv : TShellListView;
cnt: Integer;
begin
slv := TShellListView(Source);

files := TStringList.Create;
try
if NOT slv.MultiSelect then
files.Add(slv.SelectedFolder.PathName)
else //multiselect
begin
for cnt := 0 to -1 + slv.Items.Count do
begin
//selected and NOT folder
if slv.Items[cnt].Selected AND (NOT slv.Folders[cnt].IsFolder) then
files.Add(slv.Folders[cnt].PathName);
end;
end;

//display selected files in memo
memoSelectedFiles.Lines.Assign(files);
finally
files.Free;
end;
end;

//No evento OnDragOver
procedure TSimpleFilesForm.memoSelectedFilesDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := Source is TShellListView;
end;

 

O que achou desta Dica Delphi, especialmente em menus. Comente, compartilhe com a comunidade suas dicas. Vamos fazer a comunidade Delphi voltar a crescer.

» Programação » Delphi

Powered by Rock Convert
Siga os bons!
Últimos posts por Ramos de Souza Janones (exibir todos)
vote
Article Rating
LEIA TAMBÉM:  Como usar o banco de dados Oracle com o Delphi
Sumário
Delphi: Drag-and-drop com múltipos arquivos
Nome do artigo
Delphi: Drag-and-drop com múltipos arquivos
Descrição
O controle TShellListView (a parte do pacote de controles Shell) pode ser usado para exibir arquivos do sistema de arquivos. Emparelhado com casca TShellTreeView, o TShellListView pode ser usado para imitar interface de usuário Windows Explorer.
Autor
Nome
Ramos da Informática
Logo