type TDbGridCheater = class(TDBGrid); var OldX, OldY : Integer; // Code à placer dans l'évenement "OnMouseMove" de ton DBGrid procedure TFrame_Viewer.Viewer_DBGridMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var MyDBGrid : TDBGrid ; Coord : TGridCoord ; OldRec : integer ; var ACol, ARow : Integer; begin MyDBGrid := TDBGrid(Sender); with MyDBGrid do begin // Hint par défaut Hint := '' ; // On active l'affichage du hint si celui-ci est désactivé If ( ShowHint = FALSE ) Then ShowHint := TRUE ; // Coordonnées ( Colonne, Ligne ) en fonction de la position du curseur Coord := MouseCoord(X, Y); if ( Coord.X >= 0 ) and ( Coord.X < Columns.Count ) and ( Coord.Y >= 0 ) then begin // Sauvegarde de l'enregistrement en cours OldRec := TDbGridCheater(MyDBGrid).DataLink.ActiveRecord; // Placement sur l'enregistrement sous le curseur TDbGridCheater(MyDBGrid).DataLink.ActiveRecord := Coord.Y - 1; // Mise en place du hint // Ici, on affiche juste le contenu de la cellule sous le curseur Hint := Columns[Coord.X].Field.AsString; If ( X <> OldX ) and ( Y <> OldY ) Then begin // Sauvegarde de l'emplacement actuel OldX := X ; OldY := Y ; // Forçage de l'affichage du hint Application.CancelHint; end; // Restauration de l'enregistrement en cours TDbGridCheater(MyDBGrid).DataLink.ActiveRecord := OldRec; end; end; end;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionunit Unit1; interface uses Windows, Messages, SysUtils, Classes, Controls, Forms, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; procedure FormCreate(Sender: TObject); procedure DoShowHint(var HintStr: String ; var CanShow: Boolean; var HintInfo: THintInfo); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Application.OnShowHint := DoShowHint; Application.HintPause := 0; Label1.ShowHint := true; end; procedure TForm1.DoShowHint(var HintStr: String ; var CanShow: Boolean; var HintInfo: THintInfo); begin if HintInfo.HintControl=Label1 then begin HintInfo.ReshowTimeout := 1000; // Périodicité de la màj. Label1.Hint := TimeToStr( Time ); end; end; end.