Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Saber en que columna de un dbgrid esta el mouse (https://www.clubdelphi.com/foros/showthread.php?t=61406)

gesjug 06-11-2008 10:18:15

Saber en que columna de un dbgrid esta el mouse
 
Verán necesito que cuando pase el mouse por encima de determinadas columnas muestre el hint del datagrid, pero solo en determinadas columnas, eso digo yo que activando y desactivando el hint del dbgrid al detectar que esta en esas columnas, el problema es que no se como hacer para saber en que columna esta solo moviendose, sin hacer click ni nada.
He revisado los foros y no he sabido hacerlo, he visto algunos con el mismo problema pero no se como lo resuelven y las soluciones que veo son para stringgrid no para dbgrid.
Si me pudieran echar una mano estaria muy agradecido.
Un saludo y gracias por su tiempo

coso 06-11-2008 13:23:07

Hola. Prueba con esto:

Código Delphi [-]
procedure TForm1.DBgrid1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
var
          p : TGridCoord;
begin
          p := DBGrid1.MouseCoord(X,Y);
          DBGrid1.Hint := DBGrid1.Columns[p.x-1].FieldName;
end;

Tambien puedes echar un vistazo a TCustomGrid.Hittest

Caro 06-11-2008 13:29:45

Hola, puedes hacerlo con la función MouseCoord de tu DBGrid.

Código Delphi [-]
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
 Coordenadas : TGridCoord;
begin
 Coordenadas := DBGrid1.MouseCoord(X,Y);
 Edit11.Text := IntToStr(Coordenadas.X); //Columna
 Edit12.Text := IntToStr(Coordenadas.Y); //Fila
end;

Saluditos

gesjug 06-11-2008 17:06:49

Hola:

Gracias por sus respuestas.
Lo que yo intento no es saber las coordenadas del mouse, si no saber cuando el mouse esta sobre una determinada columna, para, en ese momento, desplegar el hint del dbgrid.

coso 06-11-2008 17:48:55

Hola de nuevo. Eso es exactamente lo que hace DBGrid.MouseCoord. saludos.

Caro 07-11-2008 13:35:41

Hola de nuevo, como te dice el amiguito coso, eso es lo que hace el MouseCoord te da la fila y columna donde esta el mouse, donde X es la columna y Y es la fila. En tu codigo solo debes preguntar si es esa columna

Código Delphi [-]
begin
 Coordenadas := DBGrid5.MouseCoord(X,Y);

 if Coordenadas.X = 2 then 
  DBGrid5.Showhint := True //Si es columna 2 mostramos el hint
 else
  DBGrid5.Showhint := False; // sino no mostramos hint

Saluditos

gesjug 10-11-2008 11:36:19

funciona perfecto.
Muchas gracias


La franja horaria es GMT +2. Ahora son las 01:14:52.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi