Se puede tener un Combobox, con esta condición ...

Post Reply
nanoespinoza
Posts: 105
Joined: Thu Mar 16, 2017 4:08 pm
Location: Ecuador

Se puede tener un Combobox, con esta condición ...

Post by nanoespinoza »

Estimados:

Una consulta, ¿es posible crear un Combobox, de forma que de acuerdo a una condición previa, cambie la seleccionabilidad de algunos de los elementos a mostrarse en la lista de selección (los oCbx:aItems), es decir la lista no cambiaría, pero si la seleccionabilidad de algunos de los elementos, de esta forma se los saltará con el recorrido del cursor y no se los puede seleccionar?.

Saludos

Fernando Espinoza A.
User avatar
acuellar
Posts: 1312
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Se puede tener un Combobox, con esta condición ...

Post by acuellar »

Estimado Nano

Quizás ésto te pueda guiar

Code: Select all

  REDEFINE COMBOBOX oCbx1 VAR nSect ID 103 OF oDlgD ITEMS aSect ON CHANGE (lugar(nSect),oCbx2:SetItems( aLugar ), oCbx2:refresh())
  REDEFINE COMBOBOX oCbx2 VAR nLug ID 104 OF oDlgD ITEMS aLugar UPDATE
 
Saludos,

Adhemar C.
nanoespinoza
Posts: 105
Joined: Thu Mar 16, 2017 4:08 pm
Location: Ecuador

Re: Se puede tener un Combobox, con esta condición ...

Post by nanoespinoza »

Estimado ACuellar:

Gracias por su respuesta, la parte que me indica ya la tengo conocida; lo que quiero es que al abrirse la lista de opciones del combobox, supongamos que son 10, se muestren las 10, pero que algunas no sean elegibles, es decir estén en un modo Disable(), por tanto, no se puedan seleccionar.

Saludos

Fernando Espinoza A.
nanoespinoza
Posts: 105
Joined: Thu Mar 16, 2017 4:08 pm
Location: Ecuador

Re: Se puede tener un Combobox, con esta condición ...

Post by nanoespinoza »

Estimados:

Alguien con alguna experiencia en este tema que pueda ayudar.

Saludos

Fernando Espinoza A.
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Se puede tener un Combobox, con esta condición ...

Post by cnavarro »

Fernando, lo de no permitir elegir un determinado item, basado en una condición, no es difícil, si cuando estableces la condición, creas un array con el mismo número de elementos que el array que vas a mostrar en el combo, y en la claúsula ON CHANGE valoras si el array de "condiciones" tiene .T. en esa posición ( aCondiciones[ oCbx:nAt ] ), y si está a falso te vas al siguiente ( oCbx:nAt++, aunque tendrás que controlar que no se pase del Len() del array que hay en el combobox )
Por ahí van los tiros, pienso yo
En cuanto a que aparezca en disable, lo veo más complicado, y habría que intentar implementarlo en la claúsula ON DRAWITEM del combo, pienso yo
Por ello, yo para eso, pondría un boton de action en un get y mostraría un menu POPUP, creo que te daría más facilidad de controlar lo que pretendes
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
acuellar
Posts: 1312
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Se puede tener un Combobox, con esta condición ...

Post by acuellar »

Fernando

Otra opción seria cambiar el COMBOBOX por un GET con BITMAP y mostrar los item en un xBrowse

Code: Select all

 REDEFINE GET oGet Var oDBF:ITEM ID 103 OF oDlg PICTURE "@!" BITMAP "BUSCAR";
         ACTION ( BuscaITEM(oGet,oDlg) )

....
FUNCTION BuscaITEM(oGet,oDlg)
  definir el xbrowse
Return Nil
 
Saludos,

Adhemar C.
User avatar
Patricio Avalos Aguirre
Posts: 1028
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile
Contact:

Re: Se puede tener un Combobox, con esta condición ...

Post by Patricio Avalos Aguirre »

Hola yo utilizo dbcombo, eso si que tuve que hacer unos ajustes

Code: Select all

#xcommand REDEFINE DBCOMBO [ <oCbx> VAR ] <cVar> ;
             [ <items: ITEMS> <aItems> ] ;
             [ ID <nId> ] ;
             [ <dlg:OF,WINDOW,DIALOG> <oWnd> ] ;
             [ <help:HELPID, HELP ID> <nHelpId> ] ;
             [ ON CHANGE <uChange> ] ;
         [ CONDICION <uCondicion> ] ;
         [ FINCONDICION <uEndCondicion> ] ;
         [ FOR <uFor> ] ;
         [ <lnoblank: NOBLANK> ] ;
             [ VALID   <uValid> ] ;
             [ <color: COLOR,COLORS> <nClrText> [,<nClrBack>] ] ;
             [ <update: UPDATE> ] ;
             [ MESSAGE <cMsg> ] ;
             [ WHEN <uWhen> ] ;
             [ BITMAPS <acBitmaps> ] ;
             [ ON DRAWITEM <uBmpSelect> ] ;
             [ ALIAS <cAlias> ] ;
             [ ITEMFIELD <cFldItem> ] ;
             [ LISTFIELD <cFldList> ] ;
             [ <list: LIST, PROMPTS> <aList> ] ;
       => ;
          [ <oCbx> := ] TDBCombo():ReDefine( <nId>, bSETGET(<cVar>),;
             <aItems>, <oWnd>, <nHelpId>, <{uValid}>, [{|Self|<uChange>}],;
             <nClrText>, <nClrBack>, <cMsg>, <.update.>, <{uWhen}>,;
             <acBitmaps>, [{|nItem|<uBmpSelect>}], ;
             <cAlias>, <(cFldItem)>, <(cFldList)>, <aList>, <{uCondicion}>, <{uEndCondicion}>, <{uFor}>, <.lnoblank.> )
 

Code: Select all

REDEFINE DBCOMBO oCombo VAR dbPAR2:sucursal                                                        ;
    ID 21   OF oDlg UPDATE                                                                  ;
    ALIAS "TABLAS"                                                       ;
    ITEMFIELD "COD_TABLA"                                                   ;
    LISTFIELD "NOM_TABLA"                                                ;
    COLOR CLR_BLACK, RGB(255,255,200)                                               ;
    CONDICION ( Tablas->( OrdScope( 0, "SUC" ) ), Tablas->( OrdScope( 1, "SUC" ) ) ) ;
    FINCONDICION ( Tablas->( OrdScope( 0, NIL ) ), Tablas->( OrdScope( 1, NIL ) ) );
    FOR Tablas->cod_tabla <> "00000";
    ON CHANGE (dbPAr2:Seek( dbPAR2:Sucursal ), dbPAR2:Load(), oDlg:Update());
    NOBLANK
 
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Post Reply