PDA

Ver la Versión Completa : Hint que no desaparezca


juggern
24-06-2022, 13:24:37
Hola chicos,

Tengo una dudilla que seguro que es una chorrada y es una opción sin más pero no la encuentro, se me está escapando.
Tengo un botón y le pongo un Hint, todo bien, pero lo que quiero es que al mostrar el hint, no desaparezca, que se quede ahí mostrado hasta que se mueva el ratón como funciona en casi todos los sitios.
Ahora lo que hace es que se muestra durante un ratillo y luego se quita.

Se puede hacer?

Gracias!!

Un saludo

Casimiro Notevi
24-06-2022, 18:46:43
Puedes crearte tu propio hint, ejemplo (http://www.clubdelphi.com/foros/showthread.php?t=8887&highlight=THintWindow).

elrayo76
25-06-2022, 03:56:17
Buenas, te paso estas dos funciones que yo tengo creadas a ver si te sirven.



function ShowHint(aText: String): THintWindow;
var
objHintPos: TPoint;
objHintBox: TRect;
strShortHint: String;
arrShortHint: array[0..255] of Char;

begin
Result := THintWindow.Create(nil);

strShortHint := GetShortHint(aText);
objHintPos := Mouse.CursorPos; // Obtiene la posición del puntero.

Inc(objHintPos.Y, 6);
objHintBox := Bounds(0, 0, Screen.Width, 0);
DrawText(Result.Canvas.Handle, StrPCopy(arrShortHint, strShortHint), -1, objHintBox,
DT_CALCRECT or DT_LEFT or DT_WORDBREAK or DT_NOPREFIX);

OffsetRect(objHintBox, objHintPos.X, objHintPos.Y);
Inc(objHintBox.Right, 6);
Inc(objHintBox.Bottom, 2);

Result.ActivateHint(objHintBox, strShortHint);
end;

procedure RemoveHint(var aHint: THintWindow);
begin
if Assigned(aHint) then
begin
aHint.ReleaseHandle;
FreeAndNil(aHint);
end;
end;



Ahora lo que tienes que hacer es poner ShowHint cuando en mouse pasa por encima del botón y cuando se va de ahí arriba usar otro evento y llamara RemoveHint



Si esto lo quieren en todos los botones lo que te aconsejo es que te crees un componente donde nuevo con el botón donde tenga esta funcionalidad. De esta forma solo tienes que pasarle el texto y te desentiendes de lo que pasa con el Hint



Saludos,
El Rayo

manelb
25-06-2022, 18:35:11
Podrías simplemente asignar un valor considerablemente elevado a la propiedad Application.HintHidePause al arrancar la aplicación.

Saludos a todos...

juggern
26-06-2022, 09:52:00
Hola chicos,

Ahora no estoy delante del pc pero suena a que justo es la propiedad que comenta manelb.
Mañana pruebo.

Un saludo

juggern
27-06-2022, 09:08:40
Buenos días chicos,

Ya probé lo que decía manelb y es justo lo que buscaba, esa era la propiedad que no encontraba.

Muchas gracias!!

Un saludo