FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour bug con la clausula design
Posts: 408
Joined: Sun Aug 13, 2006 05:38 AM

bug con la clausula design

Posted: Tue Jul 15, 2008 06: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

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
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

bug con la clausula design

Posted: 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
Posts: 408
Joined: Sun Aug 13, 2006 05:38 AM

bug con la clausula design

Posted: Wed Jul 16, 2008 06:32 AM
Probé con esto siguiendo tu sugerencia
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
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

bug con la clausula design

Posted: Wed Jul 16, 2008 09: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
Posts: 408
Joined: Sun Aug 13, 2006 05:38 AM

bug con la clausula design

Posted: Wed Jul 16, 2008 02: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
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

bug con la clausula design

Posted: Wed Jul 16, 2008 09: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
Posts: 408
Joined: Sun Aug 13, 2006 05:38 AM

bug con la clausula design

Posted: Thu Jul 17, 2008 02:54 AM
Ya lo incluí, tanto en el lostFocus del combo como en el gotFocus del say y sigue funcionando igual
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
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

bug con la clausula design

Posted: Thu Jul 17, 2008 08: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
Posts: 408
Joined: Sun Aug 13, 2006 05:38 AM

bug con la clausula design

Posted: Thu Jul 17, 2008 02:37 PM
El problema no solo es con el combo, también pasa con otros controles, es un bug general
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
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

bug con la clausula design

Posted: Thu Jul 17, 2008 02: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
Posts: 408
Joined: Sun Aug 13, 2006 05:38 AM

bug con la clausula design

Posted: Thu Jul 17, 2008 02:45 PM
Lo puese en el combo, si aparece el mensaje
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
Posts: 408
Joined: Sun Aug 13, 2006 05:38 AM

bug con la clausula design

Posted: Fri Jul 18, 2008 02:24 PM

Antonio, hay alguna noticia sobre la solución?

Saludos

Quique
Posts: 408
Joined: Sun Aug 13, 2006 05:38 AM

bug con la clausula design

Posted: Sat Jul 19, 2008 02:23 PM

Antonio ¿alguna nueva noticia?

Saludos

Quique
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

bug con la clausula design

Posted: Sat Jul 19, 2008 04:04 PM

Quique,

De momento ninguna noticia más.

Vamos a revisarlo lo antes que podamos, gracias

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 408
Joined: Sun Aug 13, 2006 05:38 AM

bug con la clausula design

Posted: Sat Jul 19, 2008 04: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