Bonjour,
je souhaiterais afficher une bulle perso sur une dbgrid
cette bulle sera differente selon la ligne survolée
je sais comment afficher une bulle mais pas comment recuperer la ligne que je survole avec la souris :?
Version imprimable
Bonjour,
je souhaiterais afficher une bulle perso sur une dbgrid
cette bulle sera differente selon la ligne survolée
je sais comment afficher une bulle mais pas comment recuperer la ligne que je survole avec la souris :?
Je fais ca avec une StringGrid
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure Tfrm.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;X, Y: Integer); Var C, R : Longint; Chaine: String; begin TStringGrid(Sender).MouseToCell(X, Y, C, R); If (c<0)Or(r<0) Then Exit; Chaine:= TStringGrid(Sender).Cells[2,R]; If Chaine<>TStringGrid(Sender).Hint Then Begin TStringGrid(Sender).Hint := Chaine; Application.ActivateHint(Mouse.CursorPos); End; end;
Il te faudra peut être l'adapter pour un DBGrid
oui moi aussi je l'ai deja fait sur une StringGrid :D
le probleme c'est que pour les DBGrid, MouseToCell ne marche pas
donc je n'arrive pas a savoir sur quelle ligne je me trouve 8O
Tu peux utiliser une classe parent du DbGrid, genre TCustomGrid, qui, elle a sa propriété MouseToCell de publiée.
(C'est pas très propre mais ca peut fonctionner)
bah oauis mais j'ai une DBGrid, et pas une CustomGrid
j'ai essayé ça
mais ça ne change rien au probleme, je ne recupere pas la ligne ou je suisCitation:
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
ScrPt, GrdPt: TPoint;
Cell: TGridCoord;
begin
if not (Sender is TDBGrid) then exit;
ScrPt := Mouse.CursorPos;
GrdPt := (Sender as TDBGrid).ScreenToClient(ScrPt);
Cell := (Sender as TDBGrid).MouseCoord(GrdPt.X, GrdPt.Y);
if cell.y>=0 then begin
(sender as tdbgrid).Hint:=aligne[cell.y];
(sender as tdbgrid).ShowHint:=true;
Application.ActivateHint(Mouse.CursorPos);
end;
end;
moi je voudrais recuperer la ligne, aller chercher des infos à partir de cette ligne, et les afficher dans une bulle :?
Oui, je sais, TCustomGrid est une classe parente de TDbGrid Donc tu peux caster le Sender avec et utiliser les fonctionsCitation:
Envoyé par jmulans
Citation:
Envoyé par Aide Delphi
Donc dans l'exemple que je te donne, tu peux tester avec TCustomGrid au lieu de TStringGrid pour caster le SenderCitation:
Envoyé par Aide delphi
je ne voit pas vraiment comment faire
j'essaie
mais ça ne marche pas, MouseToCell n'existe pasCitation:
(Sender as TCustomGrid).MouseToCell(X, Y, ACol, ARow);
Et comme çà : Attention c'est laid ^^
Au fait çàCode:
1
2 TCustomDrawGrid(TCustomGrid(Sender)).MouseToCell(X, Y, ACol, ARow);
et çàCode:(Sender as TCustomGrid)
C'est la même chose, sauf que le deuxieme il y a moins à écrire :aie:Code:TCustomGrid(Sender)
ouais ça à l'air de marcher, je vais essayer ça :)