FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
Hola...
Para saber de que tipo es cierto objeto puedes usar el operador is:
Espero que te sirva para aclarar tu duda. Saludos... |
#3
|
|||
|
|||
me ganaste de mano apurado
|
#4
|
||||
|
||||
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; var i: Integer; TC: TClass; begin for i:= ControlCount -1 downto 0 do begin TC:= Controls[i].ClassType; if TC = TButton then ShowMessage('TButton'); if TC = TLabel then ShowMessage('TLabel'); if TC = TButtonExt then ShowMessage('TButtonExt') end end;
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 21-05-2010 a las 03:22:26. |
#5
|
|||
|
|||
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. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Variable : Tabla.Objeto... sepuede..? | PABECO | Conexión con bases de datos | 2 | 08-05-2010 17:40:31 |
acceder a objeto mediante una variable | joanajj | Varios | 37 | 12-07-2007 18:02:06 |
Clase, objeto, tipo? | [Gunman] | OOP | 3 | 04-01-2006 16:11:32 |
Como Asignar Variable Tipo Array de Tform a otro Array del Mismo tipo | morfeo21 | Varios | 5 | 17-08-2004 17:39:51 |
Enlazar una variable a un objeto | Nuria | Varios | 2 | 20-01-2004 17:00:40 |
|