Ver Mensaje Individual
  #8  
Antiguo 23-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por agustincs
la opcion hint no me sirve, ya que tengo avilitado un cuadrado especial para la ayuda y por tanto quiero que aparezca ahi.
No sé a qué te refieres exactamente con un "cuadrado especial" pero pienso que puedes lograr lo que deseas perfectamente con la propiedad Hint en lugar de complicarte la vida con OnMouseMove. Lo único que tienes que saber es cómo usar dicha propiedad.

La VCL de Delphi lleva un registro de por dónde va pasando el cursor del ratón y cada vez que pasa por un control genera el evento OnHint del objeto Application. En este evento tienes disponible la propiedad Application.Hint que contiene el Hint del control sobre el que estás. Si estás pasando sobre la imágen entonces Application.Hint contendrá el hint de la imagen. Al salir de la imagen, si el control al que llegas no tiene hint entonces Application.Hint estará vacío.

De esta forma, suponiendo que por "cuadrado especial" entiendes un label podrías poner el evento OnHint así:

Código Delphi [-]
Label1.Caption := Application.Hint;

El problema aquí será si usas la propiedad Hint para otros controles además de las imágenes pues entonces tu "cuadrado especial" mostrará también los hints de dichos controles. Esto puede ser lo que quieres pero en caso contrario puedes determinar en el evento OnHint si el control sobre el que estás es o no una imagen:

Código Delphi [-]
var
  Control: TControl;

begin
  Control := ControlAtPos(ScreenToClient(Mouse.CursorPos), true);
  if Control is TImage then
    Label1.Caption := Application.Hint
  else
    Label1.Caption := '';
end;

Lo que resta es saber cómo asignas este evento OnHint. En las últimas versiones de Delphi puedes usar el objeto TApplicationEvents (en la paleta Aditional) y asignar ahí el evento OnHint. En versiones anteriores tendrás que crear tú mismo un método de tu formulario:

Código Delphi [-]
procedure AppHint(Sender: TObject);

y asignarlo manualmente en el evento OnCreate:

Código Delphi [-]
Application.OnHint := AppHint;

// Saludos
Responder Con Cita