2010-08-02 36 views
1

J'ai un TcxGridDBTableView dans une fenêtre, et dragmode est défini sur dmAutomatic. Quand je fais glisser une ligne par-dessus une autre, ça marche très bien. Mais quand je glisse et dépose une rangée à l'extérieur de la fenêtre, je n'arrive pas à l'événement 'OnEndDrag' de TcxGridDBTableView.Comment faire pour faire face à TcxCustomGrid-TcxCustomGrid Glisser-déposer lorsque je fais glisser un objet vers l'extérieur de la fenêtre?

Ex .:

procedure TfrmMyForm.cxGridDBTableViewEndDrag(Sender, Target: TObject; X, Y: Integer); 
begin 
    ShowMessage('ClassName: ' + Sender.ClassName); 
end; 

Je debuggin, et j'ai un point d'arrêt à la ligne ShowMessage, mais quand je laisse tomber une ligne en dehors de la fenêtre, le programme ne s'arrète pas à la ligne. J'utilise la grille quantique expresse pour implémenter cela.

Répondre

0

Glisser/déposer dans une autre application (je suppose que vous voulez dire que par "en dehors des fenêtres") n'est pas trivial.
La meilleure solution que je trouve est la composante DragDrop Suite de Anders Melander:
http://melander.dk/delphi/dragdrop

+0

J'apprécie les réponses. Mais peut-être que mon problème est plus simple qu'il ne semble l'être. J'ai juste besoin d'un drapeau qui m'indique si le drag-n-drop a été fait avec succès. Parce que j'ai besoin d'annuler les changements que je fais quand je commence à faire glisser lorsque la «baisse» n'a pas été acceptée, par exemple, dans le cas où je fais glisser une ligne à l'extérieur de l'application Windows. Désolé pour mon mauvais anglais. – Haruki

0

Si l'on suppose que par « fenêtre » vous voulez dire la fenêtre d'application, qui est parce que le drag-n-drop mis en place par les contrôles est pour glisser -n-drop dans une application uniquement. Pour glisser-déposer d'une application à une autre, vous devez utiliser le glisser-déposer OLE. Soit vous-même mis en œuvre (ce n'est pas trop difficile), soit en utilisant une bibliothèque.

La documentation MSDN sur OLE drag-n-drop est plutôt bonne. Le point de départ pour la lecture: Data Transfer (COM)

Deux bibliothèques Je suis au courant:

+0

J'apprécie les réponses. Mais peut-être que mon problème est plus simple qu'il ne semble l'être. J'ai juste besoin d'un drapeau qui m'indique si le drag-n-drop a été fait avec succès. Parce que j'ai besoin d'annuler les changements que je fais quand je commence à faire glisser lorsque la «baisse» n'a pas été acceptée, par exemple, dans le cas où je fais glisser une ligne à l'extérieur de l'application Windows. Désolé pour mon mauvais anglais. – Haruki