Fecha actual Mié Jun 26, 2024 11:59 am

Todos los horarios son UTC + 1 hora [ DST ]




Nuevo tema Responder al tema  [ 4 mensajes ] 
Autor Mensaje
NotaPublicado: Lun Ene 08, 2007 8:57 pm 

Registrado: Jue Ene 26, 2006 9:28 pm
Mensajes: 74
Hola, he observado unas cosillas acerca del TUpDown, pero concretamente lo que mas me interesa es saber si es asi su comportamiento en el segundo punto para modificar mi aplicacion de una forma u otra.

1- Se lanza el Evento OnShow del Form tres veces
2-Aunque el valor del Edit se inicia con un valor numerico, este es cambiado a tipo caracter al usar este control.
3- si se le quita el comentario a la linea 17 ya no hay manera de cerrar la aplicacion o pulsar sobre cualquier otro control.

Un Saludo
Javier


Adjuntos:
BUG EN TUpDwon.rar [1.47 KiB]
265 veces
Arriba
 Perfil  
Responder citando  
NotaPublicado: Mar Ene 09, 2007 1:28 am 
Avatar de Usuario

Registrado: Dom Oct 09, 2005 11:26 am
Mensajes: 362
Ubicación: Salamanca - España
JMorales escribió:
Hola, he observado unas cosillas acerca del TUpDown, pero concretamente lo que mas me interesa es saber si es asi su comportamiento en el segundo punto para modificar mi aplicacion de una forma u otra.

1- Se lanza el Evento OnShow del Form tres veces
2-Aunque el valor del Edit se inicia con un valor numerico, este es cambiado a tipo caracter al usar este control.
3- si se le quita el comentario a la linea 17 ya no hay manera de cerrar la aplicacion o pulsar sobre cualquier otro control.

Un Saludo
Javier


Hola Javier.
Despues de descargar tu ejemplo, te cuento.

1º. A mi me muestra el mensaje en OnShow UNA VEZ.
2º. NO INICIAS con un valor numerico, ya que en tu codigo tienes:
::Edit1:Caption := "0", que ES CARACTER. Lo cambio a NUMERICO.
3º Parece que SI pudiera existir un BUG (solo al mostrar un dialogo en el OnChange, es en esta situación cuando 'te parece' que esta ejecutando el OnShow MAS DE UNA VEZ, pero no es asi ya que lo que esta mostrandote el el OnShow - OnChange - OnChange)
Si en el OnChange pones:
::Caption := ValType( ::Edit1:Caption), veras que funciona todo correctamente.

Bruno, explicanos lo del comportamiento SUPERANORMAL cuando mostramos un dialogo en el OnChange.

_________________
Un saludo.
Jesús P. Melgar Velasco


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Mar Ene 09, 2007 8:56 am 
Site Admin
Avatar de Usuario

Registrado: Jue Oct 06, 2005 10:49 pm
Mensajes: 655
Ubicación: España - Salamanca
Lo que ocurre con ese control es un efecto colateral. Ese control lanza el evento OnChange al pulsar con el ratón sobre una de las flechas y no espera a que soltemos el ratón, esto es así para poder subir o bajar rápidamente el valor sin tener que estar haciendo click constantemente, basta con pulsar y mantener el ratón sobre la flecha. El efecto que produce es que si cambiamos el foco a una ventana modal (ocurre al usar el comando "?") y al ir a pulsar el botón de este diálogo, hemos soltado el botón del ratón, pero el control TUpDown no lo ha notado ya que está desactivado por el diálogo que acaba de aparecer y eso hace que cualquier pulsación posterior Windows la envíe al control ya que tiene 'capturado' el ratón. De todas formas, en general, mostrar una ventana modal en eventos de cambio de foco o de cambio de estado puede generar efectos no deseados.

_________________
Un saludo,
Bruno Cantero
www.c3compiler.com


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Mar Ene 09, 2007 11:07 am 

Registrado: Jue Ene 26, 2006 9:28 pm
Mensajes: 74
Gracias por responder.
La version que uso es la V2 de 18/10/06

Este es el codigo que genera el ide. Al decirme que he iniciado el Edit1 con un valor tipo caracter he abierto el proyecto y lo he comprobado, y efectivamente es asi, pero cuando lo he vuelto a cambiar a numerico, y despues de guardar el proyecto, al volver a abrirlo se ve que no ha guardado el cambio de este parametro.

Código:
#include "bug en TUpDwon.ch"

/*
 * Clase TForm1
 */
CLASS TForm1 FROM TForm

   PUBLIC:
      DATA Edit1, UpDown1

      METHOD Create CONSTRUCTOR
      METHOD Edit1OnChange
      METHOD Form1OnShow

   PUBLIC Form1

ENDCLASS

/*
 * Constructor de la clase.
 */
METHOD Create( oOwner ) CLASS TForm1

   Super:Create( oOwner )
   ::Caption := "Form1"
   ::SetPos( 806, 234 )
   ::ClientWidth := 379
   ::ClientHeight := 259
   ::OnShow := { | oSender | ::Form1OnShow( oSender ) }

   ::Edit1 := TEdit():Create( Self )
   ::Edit1:SetBounds( 88, 92, 120, 21 )
   ::Edit1:Caption :=          5           <--------NO LO GUARDA
   ::Edit1:OnChange := { | oSender | ::Edit1OnChange( oSender ) }

   ::UpDown1 := TUpDown():Create( Self )
   ::UpDown1:SetBounds( 208, 92, 17, 21 )
   ::UpDown1:Position := 5    <------COMIENZA EN 0 EN VEZ DEL VALOR INDICADO
   ::UpDown1:Associate := ::Edit1

return


este es el codigo de Form1

Código:
#include "Form1.frm"

/*
 * Evento OnShow.
 */
METHOD Form1OnShow( oSender ) CLASS TForm1

//? valtype (::Edit1:Caption)
::Edit1:Caption := 5

return

/*
 * Evento OnChange.
 */
METHOD Edit1OnChange( oSender ) CLASS TForm1

 ::Caption := valtype (::Edit1:Caption)   

return


Aun iniciando a un valor numerico en el evento OnShow del Form este es cambiado a Caracter. Otra cosilla que he observado es que si le indico un valor de inicio este comienza en 0.

Un Saludo
Javier


Arriba
 Perfil  
Responder citando  
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 4 mensajes ] 

Todos los horarios son UTC + 1 hora [ DST ]


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Buscar:
Saltar a:  
cron