![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
TEdit - Readonly
Hola a tod@s:
Después de muchos años programando en Delphi 5, me he llevado una sorpresa sobre el funcionamiento del component TEdit. Para verlo mejor, inicia un nuevo proyecto y coloca dos componentes TEdit sobre un form. Al comopnente TEdit2 le asignamos la propiedad ReadIOnly a true. Ahora, en el evento OnExit del TEdit1 escribimos el siguiente código:
Ahora ejecutamos el programa. Hay dos modos de pasar de un TEdit a otro: tecla tab, o ratón. Si utilizamos la tercla tab, todo funciona según lo esperado. Sin embargo, si utilizamos el ratón, después de responder a ShowMessage, no podemos ecribir en TEdit2. ¿Alguna solución? |
#2
|
||||
|
||||
Pero, ¿en qué evento pones ese código?
Ya lo he visto ![]() Pon el edit2.readonly:=false en el onenter del edit2
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal Última edición por Casimiro Notevi fecha: 10-05-2012 a las 14:09:27. |
#3
|
|||
|
|||
Gracias Casimiro, pero eso tampoco funciona.
|
#4
|
||||
|
||||
Si en el OnExit del Edit1 pones el código que dices, por cierto Setfocus sobraría, te tiene que funcionar con el ratón y con la tecla TAb, por cierto acabo de hacer la prueba.
Revisa el código no tengas alguna cosa por ahí que no estés viendo. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
![]() |
#5
|
|||
|
|||
Marcos, insisto en el error. E incluso se produce sin tener la propiedad ReadOnly a True.
Mi sospecha es que al hacer click sobre el segundo TEdit se activa la seleción de texto. Posteriormente se hace la llamada a ShowMessage y, a partir de ahí, todo se lía. |
#6
|
||||
|
||||
Pues como no pongas todo el código fuente... porque adivinos ya no podemos ser
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
|||
|
|||
Cita:
Con la tecla tab funciona. El problema es cuando hago click con el ratón sobre TEdit2. ¡OJO! Para ver el fallo, hay que ejecutar el programa y probarlo con la tecla Tab, parar el programa (para resertear la propiedad ReadOnly de TEdit2 nuevamente a true), y volverlo a ejecutar y probarlo con el ratón.
|
#8
|
||||
|
||||
Y cuando pulsas con el ratón en edit2 ¿está el foco en edit1?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#9
|
|||
|
|||
Efectivamente. El foco está en Edit1
|
#10
|
||||
|
||||
Ciertamente, tiene un comportamiento extraño.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#11
|
||||
|
||||
Hola.
El comportamiento se produce al llamar una ventana de forma modal en el evento OnExit, ni la propiedad ReadOnly ni el método SetFocus tienen que ver en el asunto. Basta con hacer: para obtener el mismo resultado. Sin embargo, no sucede lo mismo si: En apariencia pasa cuando otra ventana acapara el foco... habrá que investigar un poco mas. Pero de momento sacando el ShowMessage, asunto solucionado. ![]() Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#12
|
||||
|
||||
Cita:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#13
|
||||
|
||||
Curiosamente, con este código de prueba en el evento OnChange funciona si éste último se produce.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
![]() |
#14
|
||||
|
||||
También funciona saliendo con Enter, con KeyPreview activado y el siguiente código para habilitar Enter por Tab.
Es decir, funciona con teclas pero no con el ratón. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
![]() |
#15
|
|||
|
|||
Ciertamente puse como ejemplo ShowMessage. En cualquier caso en la aplicación en desarrollo el problema se produce con el componente TMessageDialog de la librería RX. Evidentemente el problema es el mismo: una llamada a una ventana de forma modal.
Mañana haré pruebas en la oficina y os diré algo. Saludos y gracias a todos por vuestro interés. |
#16
|
|||
|
|||
Cita:
|
#17
|
||||
|
||||
Cita:
Un Saludo
__________________
Guía de Estilo de los Foros Cita:
![]() |
#18
|
||||
|
||||
Cita:
Y creo que no estás para nada desorientado. Estuve pensando en lo que explicabas arriba, me parece que cuando se llama a una ventana modal en el evento OnExit, y se fuerza la pérdida del foco, el mouse se despista de donde debe liberar el boton presionado. Ese es el comportamiento extraño que nota José cuando dice: Cita:
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#19
|
||||
|
||||
Hola.
De todos modos, aunque el código que te puse anteriormente soluciona la situación, no me parece buena idea llamar una ventana modal en el evento OnExit... ![]() Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Hacer readonly una columna en stringgrid | zcatzz | Varios | 5 | 26-09-2007 16:59:50 |
Contar Cantidad de ReadOnly | brandolin | OOP | 4 | 23-01-2006 18:34:12 |
readonly dataset | n0n3 | SQL | 13 | 27-04-2005 01:24:45 |
Pasar el valor de un TEdit dentro de un StringGrid a otro TEdit que está fuera | atirado | Varios | 4 | 11-09-2004 19:13:48 |
IBDataSet readOnly???? | Giniromero | Conexión con bases de datos | 2 | 01-10-2003 11:14:04 |
![]() |
|