Posicion del Combobox con REDEFIN *** Solucionado ***

Post Reply
User avatar
Blessed
Posts: 243
Joined: Wed Sep 19, 2007 4:32 pm
Location: Honduras, C.A.
Contact:

Posicion del Combobox con REDEFIN *** Solucionado ***

Post by Blessed »

Saludos amigos del Foro:

Tengo un problema con el comportamiento de una serie de Combobox, veran, son 4 combobox, el primero determina el contenido de los siguientes tres, es decir si el elemento seleccionado del primer combo cambiara automaticamente el de los siguientes.

Estan bajo la clausula REDEFINE COMBOBOX oCombo VAR cModelos ITEMS aModelos ID 170 OF oDTipoV UPDATE

Los combobox los vacio con oCombo:SetItems( {} )
y procedo a rellenarlos con oCombo:ADD( cModelo )

Todo lo hace correctamente, con la salvedad de que con Windows XP los combobox usas la lista del combobox se pinta en otros sitios de la pantalla que no corresponden con el archivo de recursos.
En cambio con Windows Vista, aparece una lista muy grande que no corresponde a los items contenidos.

Podria decirse que es estetica, pero al final es un tanto incomodo, ya que son pantallas para atencion al publico, y los visitantes no dejan de quejarse del raro comportamiento.

Saludos desde Honduras :D

Hago uso Fivewin 8.01 y xHarbour
Last edited by Blessed on Mon Jun 16, 2008 4:26 pm, edited 1 time in total.
_ A. Martinez
http://www.multisofthn.com
Honduras, Centro America
xHarbour Enterprise 1.2.2, Fivewin 13.06
User avatar
ADBLANCO
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Post by ADBLANCO »

Puedes colocar el código?, porque a mi me trabajan bién (tengo ese mismo caso)
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
Blessed
Posts: 243
Joined: Wed Sep 19, 2007 4:32 pm
Location: Honduras, C.A.
Contact:

Este es el codigo

Post by Blessed »

Creo que debo aclarar que cuando aparece este dialogo, los comobobox siempre aparecen en su lugar, lo que se desplaza es la lista desplegable del combobox.
Solo basta con pulsar en dos ocaciones sobre el combobox y la lista se pinta correctamente.

Code: Select all

	LOCAL cMarca,   aMarcas  := {}
	LOCAL cModelo,  aModelos := {}
	LOCAL cCiclo,   aCiclos  := {}
   LOCAL cVidrio,  aVirios  := {}
   LOCAL cDetalle, aDetalle := {}
	LOCAL oBtn[3], oGet[6]

	FillData( @aMarcas, "ms_marca" ) && Llena el arreglo con el contenido de la dbf
	FillData( @aDetalle, "articulo" )

	DEFINE DIALOG oSelCta RESOURCE "DLG_BS_MULT" ;
          TRANSPARENT

	REDEFINE FOLDER oFolder ;
	         ID 645 			;
	         OF oSelCta 	   ;
	         PROMPTS "&Secuencial", "&Codigo", "&Descripción" ;
	         DIALOGS "DLG_BS_MULT1", "DLG_BS_MULT2", "DLG_BS_MULT3"

   REDEFINE COMBOBOX oGet[1]  VAR cMarca   ITEMS aMarcas   ID 646
             OF oFolder:aDialogs[1] ; 
            VALID ValMarca( cMarca, @cModelo, @cCiclo, cVidrio, oGet ) UPDATE 
   REDEFINE COMBOBOX oGet[2]  VAR cModelo  ITEMS aModelos  ID 647 OF oFolder:aDialogs[1] ;
            VALID ValModelo( cMarca, cModelo, @cCiclo, cVidrio, oGet ) UPDATE 
   REDEFINE COMBOBOX oGet[3]  VAR cCiclo   ITEMS aCiclos   ID 648 OF oFolder:aDialogs[1] ;
            VALID ValCiclo( cMarca, cModelo, cCiclo, @cVidrio, oGet )  UPDATE
   REDEFINE COMBOBOX oGet[4]  VAR cVidrio  ITEMS aVirios   ID 649 OF oFolder:aDialogs[1] UPDATE
   
   REDEFINE BUTTON oBtn[1] ID 640 OF oFolder:aDialogs[1] ;
            ACTION IF( Ir_BuscaSec( cMarca, cModelo, cCiclo, cVidrio, @MyProducto ), oSelCta:End(), .F. )

&& Sigue para otros tipos de busqueda en los folders que restan ...
RETURN NIL


STATIC FUNCTION ValMarca( cMarca, cModelo, cCiclo, cVidrio, oGet )

   LOCAL nCont, aModelos := {}

   cModelo := SPACE(30)

   cVidrio  := SPACE(30)
   cCiclo   := SPACE(20)
	oGet[2]:SetItems( {} )
	oGet[3]:SetItems( {} )
	oGet[4]:SetItems( {} )

	FillData( @aModelos, "ms_model", cMarca ) && llena los datos filtrando la marca
   FOR nCont := 1 TO LEN( aModelos )
		oGet[2]:ADD( aModelos[nCont] )
   NEXT

   oGet[2]:Refresh() ; oGet[3]:Refresh() ; oGet[4]:Refresh()

 	RETURN .T.

_ A. Martinez
http://www.multisofthn.com
Honduras, Centro America
xHarbour Enterprise 1.2.2, Fivewin 13.06
User avatar
Blessed
Posts: 243
Joined: Wed Sep 19, 2007 4:32 pm
Location: Honduras, C.A.
Contact:

Post by Blessed »

Saludos amigos del foro:

El punto es que no he visto la forma de que al momento de cambiar el contenido del combobox, verificar que si las posicion de TOP, han cambiado, y si es asi, definirlas nuevamente.

No se si eso es posible, con la clausula REDEFINE

este es el contenido del archivo RC desde Workshop:

Code: Select all

DLG_BS_MULT1 DIALOG 17, 19, 275, 124
STYLE WS_CHILD | 0x4
{
 COMBOBOX 646, 102, 35, 110, 85, CBS_DROPDOWNLIST | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
 COMBOBOX 647, 102, 49, 110, 85, CBS_DROPDOWNLIST | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
 COMBOBOX 648, 102, 64, 110, 85, CBS_DROPDOWNLIST | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
 COMBOBOX 649, 102, 78, 110, 85, CBS_DROPDOWNLIST | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
 PUSHBUTTON "&Seleccionar", 640, 111, 98, 52, 20
 CONTROL "", 644, "TViaInfoBar", 0 | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 0, 0, 275, 15
 LTEXT "Año", -1, 62, 65, 19, 10
 LTEXT "Modelo", -1, 62, 51, 27, 8
 LTEXT "Marca", -1, 62, 36, 27, 8
 LTEXT "Tipo vidrio", -1, 62, 80, 38, 8
}
Saludos desde Honduras :D
_ A. Martinez
http://www.multisofthn.com
Honduras, Centro America
xHarbour Enterprise 1.2.2, Fivewin 13.06
User avatar
mmercado
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Post by mmercado »

Hola Blessed:

Has probado lo siguiente?

oCombo:Hide()
aquí haces _
oCombo:Show()

Saludos

Manuel Mercado
User avatar
Blessed
Posts: 243
Joined: Wed Sep 19, 2007 4:32 pm
Location: Honduras, C.A.
Contact:

Post by Blessed »

Hola, que gusto maestro

Lo probare enseguida...

Saludos :D
_ A. Martinez
http://www.multisofthn.com
Honduras, Centro America
xHarbour Enterprise 1.2.2, Fivewin 13.06
User avatar
Blessed
Posts: 243
Joined: Wed Sep 19, 2007 4:32 pm
Location: Honduras, C.A.
Contact:

Post by Blessed »

Saludos Amigos del foro:

Gracias por su ayuda, persisti un poco con el tradicional prueba y error.
Al combinar:

Code: Select all

	oCombo:SetItems( {} )
	oCombo:Reset()
Ceso el comportamiento de despliegue o pintado en ubicaciones no determinadas.

Saludos desde :D
_ A. Martinez
http://www.multisofthn.com
Honduras, Centro America
xHarbour Enterprise 1.2.2, Fivewin 13.06
Post Reply