PDA

Ver la Versión Completa : Link label firemonkey


juniorSoft
20-02-2017, 04:21:59
Hola amigos,

Aunque quizás sea algo simple no he dado con el funcionamiento en Firemonkey que un label al pasar el cursor del mouse se resalte y al salir vuelva a su estado normal, he intentado lo siguiente

procedure TForm1.Label1MouseEnter(Sender: TObject);
begin
with Label1 do
begin
FontColor := TAlphaColors.red;
Font.Style := Font.Style + [TFontStyle.fsUnderline];
end;
end;

procedure TForm1.Label1MouseLeave(Sender: TObject);
begin
with Label1 do
begin
FontColor := TAlphaColors.blue;
Font.Style := Font.Style - [TFontStyle.fsUnderline];
end;
end;

Luego como esto no me funciono he probado con el componente ColorAnimation al cual lo asigno al label y en su propieadad PropertyName le asigno FontColor y en sus respectivos StartValue y EndValue le asigno los colores al entrar y salir del control, pero tengo dudas en la propiedad trigger la cual he probado con los valores que da la lista pero ninguno me ha funcionado.

AgustinOrtu
20-02-2017, 04:52:48
Hay dos cuestiones:

1. La propiedad HitTest (http://docwiki.embarcadero.com/Libraries/en/FMX.Controls.TControl.HitTest) de la clase TControl. Esta propiedad controla si el componente genera o no los eventos relacionados con el mouse. Para controles TLabel por defecto esta a False. Si pones un punto de ruptura en los bloques de codigo que publicaste vas a ver que tus eventos no se estaban ejecutando nunca

2. La propiedad StyledSettings (http://docwiki.embarcadero.com/Libraries/en/FMX.StdCtrls.TPresentedTextControl.StyledSettings). Esta es un poco mas complicada. Basicamente es un set (conjunto) de valores booleanos (banderas). Si la bandera esta a True, quiere decir que si modificas el aspecto del control usando las propiedaes (como en tu caso el color de la fuente) los cambios no seran reflejados; si la bandera esta a False, en ese caso los cambios si se reflejan

Te recomiendo que leas la documentacion:

FMX.Types.TStyledSetting (http://docwiki.embarcadero.com/Libraries/en/FMX.Types.TStyledSetting) este enumerativo define todos los posibles valores que se pueden activar o desactivar en una propiedad de tipo TStyledSettings

Using the StyledSettings property (http://docwiki.embarcadero.com/RADStudio/en/Setting_Text_Parameters_in_FireMonkey#Using_the_StyledSettings_Property) en donde la documentacion aclara mi ultimo parrafo

Tabla (http://docwiki.embarcadero.com/Libraries/en/FMX.Graphics.ITextSettings) en donde se muestra la relacion entre cada bandera y la propiedad que es afectada

Para corregir tu codigo simplemente debes modificar estas dos propiedades de tu objeto TLabel


Label1.HitTest := False;
Label1.StyledSettings := Label1.StyledSettings - [TStyledSetting.FontColor];

Casimiro Notevi
20-02-2017, 09:31:23
Hola amigos
Recuerda poner los tags al código fuente, ejemplo:

http://www.clubdelphi.com/images/UtilizarTAGs.png

Gracias :)

juniorSoft
20-02-2017, 13:34:24
Excelente AgustinOrtu funciono a la perfección.

Pase por alto la propiedad HitTest en cuanto a la propiedad StyledSettings también hay que tenerla muy en cuenta para que funcione.

Gracias por tu ayuda,

Por otro lado he utilizado algunos de los componentes animations y creo que puede lograrse el efecto con ellos utilizando un colorAnimation aunque por esta via no me ha funcionado. En este link https://community.embarcadero.com/blogs/entry/skill-sprint-using-effects-animations-transitions-on-firemonkey-components encontré algunos videos y veo que hay buena información.

Gracias por la corrección Casimiro Notevi, lo tomaré en cuenta.