Hint para linhas do DBgrid

Delphi

07/10/2004

Olá! Gostaria de saber se alguém conhece algum modo de exibir um Hint diferente para cada linha do DBGrid. Por exemplo: se o usuário deixar o mouse em cima de uma determinada linha do Grid apontando por exemplo para uma tabela de clientes e eu quisesse mostrar no Hint a última compra feita por esse cliente.


Delphi32

Delphi32

Curtidas 0

Respostas

Fabio_lamber

Fabio_lamber

07/10/2004

Amigo faz assimMostrar o Hint para cada coluna do StringGrid
Para testar o exemplo abaixo inclua no seu form um componente StringGrid

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
Col,Row : integer; // Declarar esta variável
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
// Evento OnCreate do Form
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Hint := ´0 0´;
StringGrid1.ShowHint := True;
end;
// Evento OnMouseMove do componente StringGrid
procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var r,c : integer;
begin
StringGrid1.MouseToCell(X, Y, C, R);
if ((Row <> r) or (Col <> c)) then
begin
Row := r; Col := c;
Application.CancelHint;
StringGrid1.Hint := ´Linha: ´+IntToStr(r)+#32+´Coluna: ´+IntToStr(c);
end;
end;



GOSTEI 0
Delphi32

Delphi32

07/10/2004

baseado no seu código adaptei para o seguinte no DBGrid:

procedure TForm1.DBGrid1MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var t:TGridCoord;
begin
   t := DBGrid1.MouseCoord(X,Y);
   Application.CancelHint;
   DBGrid1.Hint := ´X: ´+IntToStr(t.X)+#1310+
                   ´Y: ´+IntToStr(t.Y);
end;


O problema é que se a pessoa está na linha 1 e coluna 1 e depois desce a barra de rolagem mas continua passando o mouse sobre a linha 1 e coluna 1 relativa ele ainda retorna esse 1,1. O que eu queria na verdade era descobrir qual linha da tabela é aquela onde o mouse está passando por cima.

Alguem tem alguma idéia?

até!


GOSTEI 0
POSTAR