FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Saber si un control tiene asignado OnEnter
Hola compis.
He hecho la tipica funcion para resaltar los controles de entrada (TEdit, TmaskEdit, etc). Todo funciona bién. Este es el código El tema es que algunos controles ya tienen las funciones onenter y onexit activadas, asi que las sustituyo. Lo que no acierto es ha averiguar si el control ya tiene asignados los enventos para no incluirlos en esta funcion, y que sean esa funciones las que gestionen su entrada y salida algo si como Si no, despues de activar la funcion tengo re reescribir el codigo a cada control que tenga un onenter o un onextit FechaVencimiento.onExit := FechaVencimientoExit A ver si sabeis como hacerlo (y me lo contais, .) Thanks |
#2
|
||||
|
||||
Hola.
Proba de este modo:
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 13-06-2012 a las 14:34:47. Razón: corregir identación |
#3
|
||||
|
||||
Hola,
No sé si me estoy perdiendo algo, pero, ¿qué pasa si se usa la función "Assigned"? Tal que así:
Última edición por dec fecha: 13-06-2012 a las 14:51:54. |
#4
|
||||
|
||||
Cita:
// Saludos |
#5
|
||||
|
||||
Haciendo una combinación del código de ecfisa y Dec:
La línea "Self.Components[i].inheritsFrom(TCustomEdit)" es más adecuada a tu caso (tienes varios clases de editores). Además, sino me equivoco funcionará con TMemo's. Saludos. |
#6
|
||||
|
||||
Bueno, bueno...sin pelearse
Muchas gracias a todos, lo mas "sencillo" y con menos código es el metodo de dec. Ya solo falta que se pueda acceder a la clase del formulario (self) y asi esa rutina se puede incorporar a biblioteca y no tener que ponerla en cada formulario. Es decir sustituir TFormProveedorFactura por Self. ¿que, sabeis hacerlo?
|
#7
|
||||
|
||||
Hola.
Del modo que te sugerí, no tendrías ningún problema. Ejemplo:
Y detectará si el método cuyo nombre enviamos está activo en cualquier componente. Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#8
|
||||
|
||||
Gracias ecfisa
Si que detecta el metodo, sin hacer referencia al formulario, lo que falta es que la asignacion tambien sea anonima
Todavia hay que hacer referencia a "TFormProveedorFactura" para asignarle el nuevo evento, ¿como podriamos hacerlo con Self o como parametro? Thanks |
#9
|
||||
|
||||
Cita:
Si lo que quieres es asignar ControlExit al componente, creo que te sobraría con
Si el problema es que es el bucle el que hace:
Siempre puedes ponerle al procedimiento un "AOwner: TComopnent" y recorrer ese. Es decir:
__________________
La Madurez se llama... ~~~Gaia~~~ Última edición por ozsWizzard fecha: 14-06-2012 a las 13:32:41. |
#10
|
||||
|
||||
Cita:
Fijate si te sirve de este modo:
Ejemplo de uso:
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#11
|
||||
|
||||
Gracias, gracias
Al final es una combinacion de los metodos de ecfisa y y ozswizzard. En esta procedure se produce el error [DCC Error] UnitProveedorFactura.pas(1099): E2362 Cannot access protected symbol TWinControl.OnEnter [DCC Error] UnitProveedorFactura.pas(1099): E2035 Not enough actual parameters en las lineas Obj.OnEnter := ControlEnter; Obj.OnExit := ControlExit;
asi que de momento el mejor resultado es
Asi que este pequeño codigo se puede trasportar al resto de formularios y con solo cambiar el formulario propietario ya esta y no se toca mas código. Las rutinas para comprobar metodos y asignarlos ya estan en la bliblioteca general de funciones (Gracias de nuevo). Digo esto por que si lo saco de type TForm, se queja de la siguiente linea [DCC Error] UnitProveedorFactura.pas(1099): E2009 Incompatible types: 'method pointer and regular procedure' en AssignMethod(AOwner.Components[i], 'OnEnter', ControlEnter); osea, la buena seria esta para que no hubiera que tocar nada de codigo, pero no se resolver el problema 'method pointer and regular procedure'
Saludos Última edición por cesarsoftware fecha: 15-06-2012 a las 11:06:35. |
#12
|
||||
|
||||
Perdona que siga, pero me he dado cuenta que se puede hacer mas sencillo si pertenecen a la clase del formulario
Ya solo falta sacarlo del formulario y que este (Self) sea un parametro Sigo, a ver si lo consigo |
#13
|
||||
|
||||
Es que yo lo hice para que lo pusieras en una unidad externa al formulario, así sólo tienes que poner en el uses de cada formulario (o hacer un formulario padre del cual hereden todos) y ya está.
Pensé, además, que era lógico que para llamar a "ControlesResaltados" había que pasarle el formulario, Bueno, me alegro de que te haya funcionado.
__________________
La Madurez se llama... ~~~Gaia~~~ |
#14
|
||||
|
||||
Hola ozaWizzard.
pero no te da error Obj.OnEnter := ControlEnter; [DCC Error] Metodos.pas(47): E2362 Cannot access protected symbol TWinControl.OnEnter Uso Delphi 10,si no la verdad que lo ideal es que sea una unidad y la llamemos en el uses. ¿Que version usas? |
#15
|
||||
|
||||
La verdad es que ni lo probé, lo puse aquí directamente
__________________
La Madurez se llama... ~~~Gaia~~~ |
#16
|
||||
|
||||
Pero vamos, que lo del "as Tipo" lo puedes hacer a un nivel que te permita modificarle el OnEnter o el OnExit, aunque si así funciona, pues mejor
Yo es que asigno el método OnExit a unos TEdit y unos TMemo, por lo tanto, en lugar de TWinControl usaba TCustomEdit y si funciona.
__________________
La Madurez se llama... ~~~Gaia~~~ |
#17
|
||||
|
||||
Yo he probado con TLabeledEdit y tambien me dice
[DCC Error] Metodos.pas(70): E2009 Incompatible types: 'method pointer and regular procedure' Asi que me quedo como estoy, ya le hemos dedicado unas horas y tampoco es que se nos vaya la vida en ello. Muchas Gracias Compi. Una cervecitas, pago Yo. |
#18
|
||||
|
||||
No, sí está claro, en la pregunta del principio lo pone, saber si el componente tiene ese propiedad, yo he tirado por la calle de en medio...
Acepto la cerveza
__________________
La Madurez se llama... ~~~Gaia~~~ |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Saber si un método tiene implementación | gushynet | OOP | 24 | 06-03-2009 20:52:57 |
Saber si un parametro de un Query ha sido asignado | sinalocarlos | Varios | 1 | 26-03-2008 02:44:38 |
Saber qué procedimento tiene asignado un evento | Ohcan | OOP | 2 | 21-06-2005 13:56:38 |
Como saber los dias que tiene un mes?? | alfredosg19 | Varios | 3 | 06-03-2005 12:56:12 |
Saber si la Variable tiene letras | cmgenny | Varios | 1 | 11-05-2004 08:00:59 |
|