max2048 a écrit :
Oui ça serait parfait ça C'est un composant à part ?
(Et Michel Bardou, c'est qui ? )
Merci d'avance.
|
Tentative d'affichage (on verra comment ça passe )
ATTENTION ! 1/ il doit manquer un '//' quelque part. Je le corrige sans cesse ds mes progs : le compilo te dira où.
2/ Les fôtes d'aurtograffe ne sont pas de moi
Les routines:
// Requiert ShellApi ds Uses !
procedure copier(Handle:HWND;Source,Cible:String);
var
lpFileOp:TSHFileOpStructA;
TabFrom:array[0..255] of char;
i:integer;
begin
For i:=0 to length(Source)-1 do TabFrom[i]:=Source[i+1];
TabFrom[length(Source)]:=#0;// pFrom peut contenir plusieurs noms de fichier. Les noms doivent être séparés par le caractère #0.
TabFrom[length(Source)+1]:=#0;// d'après mes essais, le dernier nom de fichier doit être suivi de deux caractères #0.
{-----préparation du paramètre lpFileOp qui sera passé en paramètre à SHFileOperation -----}
lpFileOp.Wnd:=handle;
lpFileOp.wFunc:=FO_COPY; // l'action sera une copie
lpFileOp.pFrom:=TabFrom; // contient le ou les fichiers /dossiers à recopier
lpFileOp.pTo:=PAnsiChar(Cible); // ce vers quoi on recopie
lpFileOp.fFlags:=FOF_NOCONFIRMATION;
// + FOF_RENAMEONCOLLISION; //si le fichier cible existe déjà,
// il est copié sous un nom du style copie (1) de...
{ fin de la préparation du paramètre lpFileOp}
SHFileOperation(lpFileOp); // procède à la copie
end;
procedure effacer(Handle:HWND;Source:String);
var
lpFileOp:TSHFILEOPSTRUCTA;
TabFrom:array[0..255] of char;
i:integer;
begin
For i:=0 to length(Source)-1 do TabFrom[i]:=Source[i+1];
TabFrom[length(Source)]:=#0;
TabFrom[length(Source)+1]:=#0;
lpFileOp.Wnd:=handle;
lpFileOp.wFunc:=FO_DELETE; // l'action sera un effacement
lpFileOp.pFrom:=TabFrom; // contient le ou les fichiers /dossiers à recopier
lpFileOp.pTo:='';
lpFileOp.fFlags:=FOF_NOCONFIRMATION;
SHFileOperation(lpFileOp); // procède à l'effacement
end;
procedure deplacer(Handle:HWND;Source,Cible:String);
var
lpFileOp:TSHFILEOPSTRUCTA;
TabFrom:array[0..255] of char;
i:integer;
begin
For i:=0 to length(Source)-1 do TabFrom[i]:=Source[i+1];
TabFrom[length(Source)]:=#0;
TabFrom[length(Source)+1]:=#0;
lpFileOp.Wnd:=handle;
lpFileOp.wFunc:=FO_MOVE; // l'action sera un déplacement
lpFileOp.pFrom:=TabFrom; // contient le ou les fichiers /dossiers à déplacer
lpFileOp.pTo:=PAnsiChar(Cible); // ce vers quoi on déplace
lpFileOp.fFlags:=FOF_NOCONFIRMATION;
// + FOF_RENAMEONCOLLISION; //si le fichier cible existe déjà,
le copier sous un nom du style copie (1) de...
SHFileOperation(lpFileOp); // procède au déplacement
end;
procedure renommer(Handle:HWND;Source,Cible:String);
var
lpFileOp:TSHFILEOPSTRUCTA;
TabFrom:array[0..255] of char;
i:integer;
begin
For i:=0 to length(Source)-1 do TabFrom[i]:=Source[i+1];
TabFrom[length(Source)]:=#0;
TabFrom[length(Source)+1]:=#0;
lpFileOp.Wnd:=handle;
lpFileOp.wFunc:=FO_RENAME; // l'action sera un "renommage"
lpFileOp.pFrom:=TabFrom; // contient le ou les fichiers /dossiers à déplacer
lpFileOp.pTo:=PAnsiChar(Cible); // ce vers quoi on déplace
lpFileOp.fFlags:=FOF_NOCONFIRMATION;
// + FOF_RENAMEONCOLLISION; //si le fichier cible existe déjà,
il le copier sous un nom du style copie (1) de...
SHFileOperation(lpFileOp); // procède au déplacement
end;
******************* MES petites adaptations ***************
-----------------------------
procedure Ton_Nom_Renommer(Handle:HWND;Source,Cible:String);
var
lpFileOp:TSHFILEOPSTRUCTA;
TabFrom:array[0..255] of char;
i:integer;
begin
For i:=0 to length(Source)-1 do TabFrom[i]:=Source[i+1];
TabFrom[length(Source)]:=#0;
TabFrom[length(Source)+1]:=#0;
lpFileOp.Wnd:=handle;
lpFileOp.wFunc:=FO_RENAME; // l'action sera un "renommage"
lpFileOp.pFrom:=TabFrom; // contient le ou les fichiers /dossiers à déplacer
lpFileOp.pTo:=PAnsiChar(Cible); // ce vers quoi on déplace
//lpFileOp.fFlags:=FOF_ALLOWUNDO; // préserve la possibilité d'annuler le déplacement
// + FOF_RENAMEONCOLLISION; //si le fichier cible existe déjà, il le copie sous un nom du style copie (1) de..
SHFileOperation(lpFileOp); // procède au déplacement
end;
procedure Ton_Nom_Effacer(Handle:HWND;Source:String; Vers_Corbeille : boolean);
var
lpFileOp:TSHFILEOPSTRUCTA;
TabFrom:array[0..255] of char;
i:integer;
begin
For i:=0 to length(Source)-1 do TabFrom[i]:=Source[i+1];
TabFrom[length(Source)]:=#0;
TabFrom[length(Source)+1]:=#0;
lpFileOp.Wnd:=handle;
lpFileOp.wFunc:=FO_DELETE; // l'action sera un effacement
lpFileOp.pFrom:=TabFrom; // contient le ou les fichiers /dossiers
// à recopier
lpFileOp.pTo:='';
if Vers_Corbeille = TRUE then
begin
lpFileOp.fFlags:=FOF_ALLOWUNDO;
// préserve la possibilité d'annuler l'effacement
end
else
begin
// Pas de possibilité d'annuler l'effacement
lpFileOp.fFlags:=FOF_NOCONFIRMATION;
end;
SHFileOperation(lpFileOp); // procède à l'effacement
end;
procedure Ton_Nom_Deplacer(Handle:HWND;Source,Cible:String);
var
lpFileOp:TSHFILEOPSTRUCTA;
TabFrom:array[0..255] of char;
i:integer;
begin
For i:=0 to length(Source)-1 do TabFrom[i]:=Source[i+1];
TabFrom[length(Source)]:=#0;
TabFrom[length(Source)+1]:=#0;
lpFileOp.Wnd:=handle;
lpFileOp.wFunc:=FO_MOVE; // l'action sera un déplacement
lpFileOp.pFrom:=TabFrom; // contient le ou les fichiers /dossiers à déplacer
lpFileOp.pTo:=PAnsiChar(Cible); // ce vers quoi on déplace
//lpFileOp.fFlags:=FOF_ALLOWUNDO; // préserve la possibilité d'annuler le déplacement
// + FOF_RENAMEONCOLLISION; //si le fichier cible existe déjà, il le copie sous un nom du style copie (1) de..
SHFileOperation(lpFileOp); // procède au déplacement
end;
***********