![]() |
Ver el tipo al que pertenece una variable u objeto
Hola a todos, tengo el siguiente inconveniente: necesito determinar el tipo de componente que hay en un form para, luego tomar un camino u otro, me explico mejor, el form tiene varios componentes, tsedit, tslabel, tcombobox, etc, etc, cuando reciben el foco debo determinar que tipo de componente recibe el foco, si es un tsedit hago algo, si es un tslabel hago otra cosa, etc,.
Necesitaría algo parecido a VarType pero para analizar el tipo de componente enfocado. Gracias y saludos. |
Hola...
Para saber de que tipo es cierto objeto puedes usar el operador is:
Espero que te sirva para aclarar tu duda. Saludos... |
me ganaste de mano apurado
|
Hola.
Tal como dice maeyanes el operador is te permite averiguar que tipo de objeto es el actual, pero tiene un inconveniente: aceptaría como TButton a un descendiente de él. (Como bién lo aclara maeyanes en la línea de comentario). Para saber exactamente cuál es el tipo del componente tendrías que usar ClassType para averiguarlo. Un ejemplo: Código:
procedure TForm1.ShowTipoCtrl; |
Gracias por las respuestas, les comento como estoy manejando esta cuestión, en el post que envié no había aclarado que lo que me interesaba averiguar es el tipo de componente que dispara un evento, en mi caso, el evento es el OnChange, como saben, el manejador del evento recibe el componente que lo convoca por medio de la variable Sender que es del tipo object. Esta variable tiene una propiedad llamada ClassName que devuelve el tipo de objeto, he utilizado esta propiedad y he resuelto el problema que es muy sencillo, lo que necesitaba poner era un msg al operador que indique la cantidad de caracteres que restan entrar en el campo, pero cuando se trata de un campo tsmemo su comportamiento era diferente, les dejo el código para su revisión.
cuando se trata de un tsmemo, la leyenda que aprece es simplemente la cantidad de caracteres que se han tipeado, pero cuando se trata de un campo tsedit, pongo la cantidad de caracteres disponibles restantes del largo máximo aceptado: Caracter [2000] o bien Caracter [12 de 50] Saludos y nuevamente, gracias por las respuestas. |
La franja horaria es GMT +2. Ahora son las 01:08: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