PDA

Ver la Versión Completa : Mostrar hint al entrar en DBEDIT


fjolivares
05-04-2004, 11:47:19
Hola a todos. Estoy intentando mostrar una ayuda cuando el usuario entra en algunos DBEDIT. Una idea sería mostrar el hint cuando el usuario entre en el DBEDIT, aunke sea con el tabulador. el hint solo se muestra al pasar por encima el raton.

¿Existe alguna manera de mostrar el hint mediante codigo?

Saludos y gracias.

yusnerqui
05-04-2004, 15:08:47
¿Existe alguna manera de mostrar el hint mediante codigo?

Saludos y gracias.

esto lo tomé textualmente del truco 135 del trucomanía, espero te sirva
Utiliza esta función para mostrar el hint de un componente. Recuerda guardar el handle que te devuelve en una
variable para despues destruir el Hint.:



function RevealHint (Control: TControl): THintWindow;
var
ShortHint: string;
AShortHint: array[0..255] of Char;
HintPos: TPoint;
HintBox: TRect;
begin
{ Create the window: }
Result := THintWindow.Create(Control);

{ Get first half of hint up to '|': }
ShortHint := GetShortHint(Control.Hint);

{ Calculate Hint Window position & size: }
HintPos := Control.ClientOrigin;
Inc(HintPos.Y, Control.Height + 6);
HintBox := Bounds(0, 0, Screen.Width, 0);
DrawText(Result.Canvas.Handle,
StrPCopy(AShortHint, ShortHint), -1, HintBox,
DT_CALCRECT or DT_LEFT or DT_WORDBREAK or DT_NOPREFIX);
OffsetRect(HintBox, HintPos.X, HintPos.Y);
Inc(HintBox.Right, 6);
Inc(HintBox.Bottom, 2);

{ Now show the window: }
Result.ActivateHint(HintBox, ShortHint);
end; {RevealHint}



//Ejemplo de llamada:



var
mango:THintWindow;
begin
mango:=RevealHint(Button1);




//Para hacer desaparecer el hint:



procedure RemoveHint (var Hint: THintWindow);
begin
Hint.ReleaseHandle;
Hint.Free;
Hint := nil;
end; {RemoveHint}



//Ejemplo de llamada:



RemoveHint(mango)



Donde 'mango' es el handle que hemos guardado al llamar a RevealHint

fjolivares
05-04-2004, 16:20:16
gracias yusnerqui, consigo q aparezca una ventanita de hint. el tema es q si muevo el form mientras se muestra el hint, este se keda detras del form.

¿no hay manera de provocar q aparezca el propio hint del control?

Saludos y gracias.

roman
05-04-2004, 17:20:26
Podrías poner un StatusBar en el formulario y escribir el hint en él cuando se entre a un control. Por ejemplo, en el evento OnEnter:

StatusBar.SimpleText := DBEdit.Hint;

// Saludos

fjolivares
06-04-2004, 09:39:00
Gracias roman, ayer por la tarde hize eso. estuve probando un componente gratuito que se llama zballon q hacia lo que queria, pero me resultaba engorroso de cara al usuario. al final muestro el hint en un memo en el evento onenter.

Saludos.

roman
06-04-2004, 17:47:30
Comprendo. Al principio suena muy bonito eso de poner hints en ventanitas por todos lados y si son de formas especiales qué mejor. Pero pasado el entusiasmo inicial cualquier usuario se harta.

// Saludos