Déplacement des éléments

De RAD Studio
Aller à : navigation, rechercher

Remonter à Implémentation du glisser-déplacer dans les contrôles

Si un contrôle indique qu'il peut accepter un élément déplacé, il doit le traiter s'il est effectivement lâché. Pour gérer les éléments lâchés, attachez un gestionnaire à l'événement OnDragDrop du contrôle qui accepte l'opération lâcher. Comme l'événement "glisser-dessus", l'événement "glisser-déplacer" indique la source de l'élément déplacé et les coordonnées du curseur de la souris lorsqu'il est au-dessus du contrôle acceptant l'élément. Le dernier paramètre vous permet de contrôler le chemin emprunté par un élément au cours de l'opération glisser ; vous pouvez, par exemple, utiliser ces informations pour modifier la couleur affichée par les composants si un élément est déposé.

Dans l'exemple VCL suivant, une arborescence de répertoires, qui accepte les éléments déplacés depuis une boîte liste de fichiers, répond en déplaçant les fichiers vers le répertoire sur lequel ils sont lâchés :

 procedure TFMForm.DirectoryOutline1DragDrop(Sender, Source: TObject; X,
   Y: Integer);
 begin
   if Source is TFileListBox then
     with DirectoryOutline1 do
       ConfirmChange('Move', FileListBox1.FileName, Items[GetItem(X, Y)].FullPath);
 end;
void __fastcall TForm1::TreeView1DragDrop(TObject *Sender, TObject *Source,
	int X, int Y) {
   if (Source->InheritsFrom(__classid(TFileListBox))) {
	TTreeNode *pNode = TreeView1->GetNodeAt(X, Y); // pNode is drop target
	AnsiString NewFile = pNode->Text + AnsiString("//") + ExtractFileName
		(FileListBox1->FileName); // build file name for drop target
	MoveFileEx(FileListBox1->FileName.c_str(), NewFile.c_str(),
		MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED); // move the file
   }
}

Voir aussi