Ver Mensaje Individual
  #3  
Antiguo 11-04-2012
JosepMLlort JosepMLlort is offline
Miembro
 
Registrado: abr 2012
Posts: 14
Reputación: 0
JosepMLlort Va por buen camino
Smile Draw Grid y Hint en Delphi 6

Hola,

Yo me he encontrado un problema similar con Delphi 6: quería mostrar un mensaje de ayuda ("Hint") distinto para cada celda de una Draw Grid excepto en la cabecera.

Basándome en la solución de Caro, he hecho lo siguiente:

-Poner la propiedad "ShowHint" de la DrawGrid a "True".
-Crear una variable para contener los mensajes de ayuda de las distintas celdas. Llenar la variable con los valores adecuados (no lo muestro por ser evidente).
-Crear una función "OnMouseMove" de la DrawgGrid y en ella llamar la función "MouseToCell", usándola para actualizar Hint con los valores de la variable:

Código:
Var
  HintDrawGrid1 : Array[1..4, 1..4] Of ShortString;

procedure TForm1.DrawGrid1MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
Var
  ACol, ARow : Integer;
begin
  DrawGrid1.MouseToCell(X, Y, ACol, ARow);
  If (ACol > 0) And (ARow > 0)      { No quiero mostrar Hint en las cabeceras }
   Then DrawGrid1.Hint := HintDrawGrid1[ACol, ARow]
   Else DrawGrid1.Hint := '';
end; { DrawGridMouseMove }
Me funciona perfectamente, con dos únicos detalles mejorables:
-Igual que le pasa a Caro con la String Grid, el mensaje tarda un poco en desaparecer cuando saco el puntero del ratón de la celda, pero sólo si muevo el puntero a otra celda de la String Grid. En cuanto lo saco de la Draw Grid el mensaje desaparece (como debe ser).
-Una vez ha aparecido un mensaje Hint en una de las celdas, no aparece en ninguna otra de la Draw Grid hasta que muevo el puntero fuera de la Draw Grid. O sea, que para obtener Hint de diversas celdas tengo que ir moviendo el puntero fuera y dentro de la Draw Grid.

Si alguien sabe como mejorar estos dos detalles, agradeceré su respuesta.

Saludos
Responder Con Cita