Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Hint que no desaparezca (https://www.clubdelphi.com/foros/showthread.php?t=95738)

juggern 24-06-2022 13:24:37

Hint que no desaparezca
 
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.

elrayo76 25-06-2022 03:56:17

Buenas, te paso estas dos funciones que yo tengo creadas a ver si te sirven.


Código Delphi [-]
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


La franja horaria es GMT +2. Ahora son las 10:25:01.

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