Membres inscrits :668
Membres en ligne : 0 Invités en ligne : 5 |
Bonjour à tous.
Le contrôle wxGrid possède quelques fonctions non documentées, notament celle permettant d'activer le Drag'n'Drop d'une cellule. Il s'agit de wxGrid::EnableDragCell(). Voici une méthode basique pour l'utiliser.
Tout d'abord, pour qu'un contrôle ou une fenêtre puisse être l a destination du Drag'n'Drop avec wxWidgets, il faut utiliser une classe dérivée de wxDropTarget.
Pour notre exemple, nous allons faire simple : nous allons faire simple : le Drag'n'Drop permettra de copier/déplacer uniquement le texte contenu dans une cellule, sans se soucier d'un éventuel format. Nous allons donc dériver une classe existante pour le Drag'n'Drop de texte : wxTextDropTarget. Nous appellerons cette classe wxDndCell. Code wxWidgets://Fichier wxdndcell.h Code wxWidgets://Fichier wxdndcell.cpp Maintenant, pour que la wxGrid accepte d'être la destination du Drag'n'Drop, il faut affecter une instance de cette classe à la wxGrid concernée : Code wxWidgets:wxGridTestFrame::wxGridTestFrame(wxFrame *frame, const wxString& title) Avec le code ci-dessus, notre grille accepte déjà le Drag'n'Drop de texte depuis une autre application : cool, non ? Maintenant, il nous reste à gérer le Drag'n'Drop à l'intérieur même de la grille. Pour cela, il faut intercepter l'événement EVT_GRID_CELL_BEGIN_DRAG. Code wxWidgets:BEGIN_EVENT_TABLE(wxGridTestFrame, wxFrame) Avec ce code, il est du coup possible de copier/déplacer le contenu d'une cellule vers une autre application (bloc notes, par exemple).
Et voilà, c'est tout.
Et le pire, c'est que ça marche... Faites l'essai vous-même...
Il n'y a pas encore de commentaire pour ce snippet. |