bug con la clausula design

bug con la clausula design

Postby quique » Tue Jul 15, 2008 6:25 pm

Antonio, como puedo corregir este bug, en el ejemplo que pongo da doble click en el combo box, despues da click en el say y veras que el combo desaparece

Code: Select all  Expand view  RUN
proc main
local tComboBox1
DEFINE WINDOW oWnd FROM 116,168 TO 379,779 PIXEL TITLE  " Prueba 1"  STYLE 47120384
@ 20, 422 COMBOBOX tComboBox1 ITEMS { "tComboBox", "ComboBox" } of oWnd SIZE 90,21 PIXEL STYLE 1419841539  design
@ 77, 18 SAY  "Edad" PIXEL SIZE 44,15                 design   of oWnd
ACTIVATE WINDOW oWnd
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Postby Antonio Linares » Wed Jul 16, 2008 12:43 am

Quique,

Por alguna extraña razón, que habrá que investigar, el doble click le cambia las coordenadas a negativas y por eso desaparece de la pantalla.

Prueba lo siguiente:
@ 3, 10 COMBOBOX oCbx VAR tComboBox1 ITEMS { "tComboBox", "ComboBox" } of oWnd SIZE 90,21 design

oCbx:bLostFocus := { || If( oCbx:nTop < 0, ( oCbx:nTop := 100, oCbx:nLeft := 100 ), ) }
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42160
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby quique » Wed Jul 16, 2008 6:32 am

Probé con esto siguiendo tu sugerencia
Code: Select all  Expand view  RUN
local tComboBox1, oCbx
DEFINE WINDOW oWnd FROM 116,168 TO 379,779 PIXEL TITLE  " Prueba 1"  STYLE 47120384
//@ 20, 422 COMBOBOX tComboBox1 ITEMS { "tComboBox", "ComboBox" } of oWnd SIZE 90,21 PIXEL STYLE 1419841539  design
@ 3, 10 COMBOBOX oCbx VAR tComboBox1 ITEMS { "tComboBox", "ComboBox" } of oWnd SIZE 90,21 design

oCbx:bLostFocus := { || fwrite( 1, str( oCbx:nTop ) + CRLF ), If( oCbx:nTop < 0, ( oCbx:nTop := 100, oCbx:nLeft := 100 ), ) }
@ 77, 18 SAY  "Edad" PIXEL SIZE 44,15                 design   of oWnd
ACTIVATE WINDOW oWnd

y sigue sin funcionar, y el monitoreo muestra 40 para nTop, así que no funciona, lo que hice fue cambiar nTop por nLeft y mejora pero sigue sin funcionar:
1. Despues de dar doble click en el combo y posteriormente dar click en el say desaparece el combo y el say no toma el foco
2. Al dar un segundo click en el say aparece el combo en las coordenadas "forzadas" no en las que estaba y conserva el foco
3. Al dar un tercer click por fin toma el foco, cuando esto debería haber sido en el primer click.
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Postby Antonio Linares » Wed Jul 16, 2008 9:01 am

Quique,

Al darle doble click parece que el combobox se despliega, y al perder el foco algo ocurre que le cambia las coordenadas a negativas.

El código que te he mostrado aqui funciona bien, y vuelve a mostrar el combobox aunque no en su coordenada original.

Una solución sería guardar las coordendas originales el el doble click y luego reasignárselas desde el bLostFocus
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42160
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby quique » Wed Jul 16, 2008 2:39 pm

Antonio ¿probaste el segúndo código que puse?, estoy probando con el código que pusiste y tiene el efectó que te comento, si te fijas, no pierde el foco hasta el segundo click en el say, esto es si le das doble click al combo, si solamente le das un click no se borra, pero no le da el foco al say hasta el segundo click.
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Postby Antonio Linares » Wed Jul 16, 2008 9:45 pm

Quique,

Por lo visto al hacer doble click en el combobox, el ratón es capturado por el combobox, de ahí que no funcione correctamente y te obligue a hacer más clicks.

Lo primero sería liberar dicha captura llamando a ReleaseCapture(). Esta llamada la puedes hacer desde el bGotFocus del SAY ó desde el bLostFocus del combobox.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42160
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby quique » Thu Jul 17, 2008 2:54 am

Ya lo incluí, tanto en el lostFocus del combo como en el gotFocus del say y sigue funcionando igual
Code: Select all  Expand view  RUN
local tComboBox1, oCbx, oWnd, oSay
DEFINE WINDOW oWnd FROM 116,168 TO 379,779 PIXEL TITLE  " Prueba 1"  STYLE 47120384
//@ 20, 422 COMBOBOX tComboBox1 ITEMS { "tComboBox", "ComboBox" } of oWnd SIZE 90,21 PIXEL STYLE 1419841539  design
@ 3, 10 COMBOBOX oCbx VAR tComboBox1 ITEMS { "tComboBox", "ComboBox" } of oWnd SIZE 90,21 design

oCbx:bLostFocus := { || releaseCapture(), fwrite( 1, str( oCbx:nLeft ) + CRLF ), If( oCbx:nLeft < 0, ( oCbx:nTop := 100, oCbx:nLeft := 100 ), ) }
@ 77, 18 SAY oSay PROMPT "Edad" PIXEL SIZE 44,15                 design   of oWnd
oSay:bGotFocus := { || releaseCapture() }
ACTIVATE WINDOW oWnd
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Postby Antonio Linares » Thu Jul 17, 2008 8:51 am

Quique,

Quizás habría que implementar el método LDblClick() en la Clase TComboBox para que cuando esté en modo DESIGN no procese dicho evento, y asi evitamos ese comportamiento.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42160
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby quique » Thu Jul 17, 2008 2:37 pm

El problema no solo es con el combo, también pasa con otros controles, es un bug general
Code: Select all  Expand view  RUN
local tComboBox1, oCbx, oWnd, oSay, nEdad, ltCheckBox1
DEFINE WINDOW oWnd FROM 116,168 TO 379,779 PIXEL TITLE  " Prueba 1"  STYLE 47120384
//@ 20, 422 COMBOBOX tComboBox1 ITEMS { "tComboBox", "ComboBox" } of oWnd SIZE 90,21 PIXEL STYLE 1419841539  design
@ 3, 10 COMBOBOX oCbx VAR tComboBox1 ITEMS { "tComboBox", "ComboBox" } of oWnd SIZE 90,21 design

oCbx:bLostFocus := { || releaseCapture(), fwrite( 1, str( oCbx:nLeft ) + CRLF ), If( oCbx:nLeft < 0, ( oCbx:nTop := 100, oCbx:nLeft := 100 ), ) }
@ 77, 18 SAY oSay PROMPT "Edad" PIXEL SIZE 44,15                 design   of oWnd
oSay:bGotFocus := { || releaseCapture() }
@ 65, 96 GET  nEdad PIXEL SIZE 29,12 of oWnd design
@ 26, 227 CHECKBOX  ltCheckBox1 PROMPT  "tCheckBox"  PIXEL SIZE 90,13 HELPID 100 of oWnd design
ACTIVATE WINDOW oWnd
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Postby Antonio Linares » Thu Jul 17, 2008 2:42 pm

Quique,

Prueba a asignar el dato bLDblClick de cualquier control y veamos si se lanza el evento:

<oControl>:bLDblClick := { || MsgInfo( "doble click" ) }
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42160
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby quique » Thu Jul 17, 2008 2:45 pm

Lo puese en el combo, si aparece el mensaje
Code: Select all  Expand view  RUN
local tComboBox1, oCbx, oWnd, oSay
DEFINE WINDOW oWnd FROM 116,168 TO 379,779 PIXEL TITLE  " Prueba 1"  STYLE 47120384
@ 3, 10 COMBOBOX oCbx VAR tComboBox1 ITEMS { "tComboBox", "ComboBox" } of oWnd SIZE 90,21 design

oCbx:bLostFocus := { || releaseCapture(), fwrite( 1, str( oCbx:nLeft ) + CRLF ), If( oCbx:nLeft < 0, ( oCbx:nTop := 100, oCbx:nLeft := 100 ), ) }
oCbx:bLDblClick := { || MsgInfo( "doble click" ) }

@ 77, 18 SAY oSay PROMPT "Edad" PIXEL SIZE 44,15                 design   of oWnd
oSay:bGotFocus := { || releaseCapture() }
ACTIVATE WINDOW oWnd
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Postby quique » Fri Jul 18, 2008 2:24 pm

Antonio, hay alguna noticia sobre la solución?
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Postby quique » Sat Jul 19, 2008 2:23 pm

Antonio ¿alguna nueva noticia?
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Postby Antonio Linares » Sat Jul 19, 2008 4:04 pm

Quique,

De momento ninguna noticia más.

Vamos a revisarlo lo antes que podamos, gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42160
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby quique » Sat Jul 19, 2008 4:16 pm

Gracias Antonio, te lo encargo porfavor porque esa es la parte medular del programa que estoy haciendo, no permite trabajar a los usuarios
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 36 guests