J'ai l'événement OnMouseMove, au cours de laquelle je veux trouver une valeur de certaine cellule (pas nécessairement celle sous la souris). Fondamentalement, la question est: Comment accéder aux données de la cellule en utilisant ses coordonnées x et y sans le sélectionner, en changeant de focus, etc?Comment déterminer la valeur de la cellule DbGrid pendant l'événement OnMouseMove
0
A
Répondre
2
Tofig, vous pouvez utiliser la procédure MouseCoord
pour obtenir la ligne actuelle et col, mais pour montrer la valeur des pos [Col,Row]
vous devez définir la propriété DataLink.ActiveRecord
à la valeur de ligne et créer un nouveau descendant de la classe pour accéder à la propriété protégée .
vérifierons ce code
type
THackGrid = class(TCustomDBGrid); //Create a new class to access the protected properties
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
Cell : TGridCoord;
Row,Col : integer;
OrigActiveRecord : integer;
begin
inherited;
Cell:=DBGrid1.MouseCoord(X,Y);
Col:= Cell.X;
Row:= Cell.Y;
if dgTitles in DBGrid1.Options then Dec(Row); //if the titles are shown then adjust Row index (-1);
if dgIndicator in DBGrid1.Options then Dec(Col); //if the indicator is shown then adjust the Column index (-1);
if THackGrid(DBGrid1).DataLink.Active and (Row>=0) and (Col>=0) then
begin
OrigActiveRecord:=THackGrid(DBGrid1).DataLink.ActiveRecord; //save the original index
try
THackGrid(DBGrid1).DataLink.ActiveRecord:= Row;
Label1.Caption:=DBGrid1.Columns[Col].Field.AsString; //show the current value in a tlabel
finally
THackGrid(DBGrid1).DataLink.ActiveRecord:= OrigActiveRecord; //restore the index
end;
end;
end;
Questions connexes
- 1. onMouseMove obtenir la position de la souris
- 2. Comment déterminer la valeur de la cellule sélectionnée dans DataGrid? (WPF)
- 3. comment obtenir la valeur de la cellule dans l'iphone?
- 4. Comment déterminer le nombre de lignes Delphi DBGrid
- 5. accéder à la valeur de cellule Datagridview pendant que sa valeur est éditée
- 6. Excel VSTO - Désactiver RibbonButton pendant la modification de cellule
- 7. Comment obtenir la valeur de la cellule d'affichage Datagrid?
- 8. Comment affecter une valeur à la cellule de la cellule de données wpf
- 9. récupère la valeur de la cellule de ligne de table
- 10. comment modifier la valeur du dictionnaire pendant la boucle
- 11. Comment obtenir la valeur de cellule de listview
- 12. Retourne la valeur de la cellule datagridview dans vb.net
- 13. Conserver la valeur entrée dans la cellule de DevExpress Xtragrid
- 14. Tableau Voir la valeur de la cellule de l'iphone
- 15. Delphi DBGrid défilement avec la souris
- 16. Jquery Récupérer la valeur de la cellule en fonction de l'état d'une autre cellule
- 17. Ne conserve pas la valeur de la cellule
- 18. Utiliser la valeur de cellule dans la formule vlookup
- 19. WPF Toolkit DataGrid SelectionChanged Récupérer la valeur de la cellule
- 20. Sélectionnez la valeur d'une cellule dans GridView
- 21. onmousemove dans firefox
- 22. Comment obtenir le changement de la valeur de la cellule lors de la fermeture du formulaire?
- 23. comment stocker la valeur de cellule de la grille dans la zone de texte
- 24. Rendre une cellule dans un JTable modifiable - la valeur par défaut de la cellule
- 25. Prototype - obtenir la valeur dans la cellule du tableau
- 26. Comment sélectionner (mettre en surbrillance et recevoir le focus) le texte entier de la cellule sélectionnée dans Delphi DBGrid?
- 27. Greasemonkey onmousemove script
- 28. Comment définir la valeur div sur toute la hauteur de la cellule?
- 29. Accès à la valeur d'un calendrier Richfaces pendant la validation
- 30. Comment rechercher la valeur de cellule de tableau cliquée à partir de la page ASP.NET MVC?
Vous n'avez pas besoin d'obtenir MouseCoord. L'événement OnMouseMove les a déjà. – Linas
@Linas, les valeurs X et Y retournent un point (X, Y), vous avez besoin de la fonction 'MouseCoord' pour convertir ces valeurs aux index col et row, vérifiez ce lien http://docwiki.embarcadero.com/VCL /fr/Grids.TCustomGrid.MouseCoord – RRUZ
Merci, cela a fonctionné. J'ai cependant le sentiment qu'il devrait y avoir un moyen plus facile. Je veux dire que DbGrid devrait stocker ces valeurs quelque part, afin de les peindre. Ne pouvons-nous pas simplement y accéder directement? –