Page 1 of 1

Ayuda con Combobox

Posted: Fri Oct 29, 2021 5:52 pm
by jose_murugosa
El control Combobox es un control que siempre lo he usado con un vector (una dimension) sin problemas, pero necesitaría utilizar una matriz de 2 columnas (2 líneas por elemento).

Quiero que en el Combobox me muestre la lista de elementos de una columna de la matriz (texto) pero devuelva a la variable del combo el elemento en la otra columna (que es numerico).

Por ejemplo un array que contiene el numero de cliente y el nombre, me muestra el nombre y pone en la variable el numero de cliente.

¿Esto se puede hacer? si no es posible con Combobox, ¿se puede hacer con otro control?

Gracias desde ya por vuestra atención.

Re: Ayuda con Combobox

Posted: Fri Oct 29, 2021 8:23 pm
by armando.lagunas
Buen día:

yo utilizo un Listbox con un dbf de paso en un Get normal y un botón que lo invoque.

Code: Select all | Expand



...
...
   REDEFINE  GET oGet VAR cMaterial PICTURE "@K"  ID 21 OF oDlg
   REDEFINE BUTTON  ID 42 FILENAME "SearchReg.bmp"  OF oDlg ACTION Seek_Material (oGet,400,150 )
...
...

STATIC FUNCTION Seek_Material( oGet, nWidth, nHeight )
 LOCAL oVen, vLbx, aPoint, cBus, n, xVal , bRestore, lNormal, oDbf

 SELECT P119         ;  __dbZap()

** EN ESTA SECCION YO LLAMO MIS DATOS Y LOS TRASLADO A LA DBF DE PASO
** ADAPTA AQUI LO QUE TU UTILICES MOSTRAR

 oDbf:= oCon:Query("SELECT MA_CodeMaterial_PK, MA_NombreMaterial FROM MAE_Grupo_Materiales WHERE AND MA_Activo = 1 ")
 oDbf:Query_All()
 For n := 1 TO oDbf:nRecord
    SELECT P119      ;  dbAppend()
                        P119->MATE  := oDbf:aDataAll[n][1]
                        P119->NOMB  := oDbf:aDataAll[n][2]
 Next                ;  oDbf:End()

*** HASTA AQUI

 SELECT P119         ;  INDEX ON P119->NOMB   TAG 1 TO (".\TEMP\PASO119.CDX")
                                          SET INDEX TO (".\\PASO119.CDX")
 SELECT P119         ;  DBGOTOP()

   bRestore  := {|| IIF( !lNormal, ( oGet:VarPut( xVal ), oGet:SetFocus() ), ), oVen:End() }
   xVal      := oGet:VarGet()
   cBus      := ""
   lNormal   := .F.
   aPoint    := AdjustWnd( oGet, nWidth, nHeight )
   DEFINE WINDOW oVen FROM aPoint[1] + 1, aPoint[2] TO aPoint[1] + nHeight, aPoint[2] + nWidth pixel STYLE  nOR( DS_MODALFRAME, WS_POPUP, WS_BORDER )
      @ 0, 0 LISTBOX vLbx  FIELDS P119->MATE, P119->NOMB ;
                           HEADER "Codigo","Descripción" ALIAS "P119" FIELDSIZES 60,250  SIZE  nWidth,nHeight OF oVen ;
                           COLOR CLR_BUSCAR ;
                           FONT aWFont[23] PIXEL ON CHANGE   ( oGet:VarPut( P119->MATE ), oGet:refresh())  ;
                                                      ON DBLCLICK ( oGet:VarPut( P119->MATE ), oGet:refresh(), oGet:SetFocus(), oVen:End() )
   
      vLbx:bKeyChar   := { |nkey, nFlags| IIF(nKey >= 32,(cBus += CHR(nKey) , BuscarSeek( vLbx, cBus )),), IIF(nKey  = 8 ,(cBus := LEFT(cBus,LEN(cBus)-1), BuscarSeek( vLbx, cBus )),) }
      vLbx:bLostFocus := {|| ( oGet:VarPut( P119->MATE ), oGet:refresh()    , oGet:SetFocus() ) }
      vLbx:bKeyDown   := {|nKey| IIF( nKey = 13, (lNormal := .T., eval( bRestore ) ), IIF( nKey = 27,(lNormal := .T., eval( bRestore) ), ) ) }

   ACTIVATE WINDOW oVen ON INIT ( oVen:bLostFocus := {|| oVen:bLostFocus := nil, eval( bRestore ) } , vLbx:Refresh() ) VALID ( lNormal := .T. )

 RETURN Nil

//-------------------------------------------------------------------------

STATIC FUNCTION BuscarSeek( vLbx, cBus )
  SELECT P119          ;     SEEK cBus SOFTSEEK
  vLbx:UpStable()      ;     vLbx:Refresh()
 RETURN .T.

//-------------------------------------------------------------------------

 




Image

Re: Ayuda con Combobox

Posted: Fri Oct 29, 2021 11:49 pm
by karinha
\samples\TESTGET3.PRG

Regards, saludos.

Re: Ayuda con Combobox

Posted: Fri Oct 29, 2021 11:54 pm
by leandro
Otra opción puede ser dbcombo

Code: Select all | Expand


#include "dbcombo.ch"

.....

Local aTipoCla := {"Gran Contribuyente","Régimen Común","Régimen Simplificado",;
                 "Persona Natural","Empresa Unipersonal","Extranjera","Otra"}
Local aLlavCla := {1,2,3,4,5,6,7}
.....

REDEFINE DBCOMBO oCcla VAR nTipo ITEMS aLlavCla LIST aTipoCla ID 4036 OF ::oDlgCrea UPDATE             
......
 

Re: Ayuda con Combobox

Posted: Sat Oct 30, 2021 1:11 am
by karinha

Re: Ayuda con Combobox

Posted: Sat Oct 30, 2021 4:18 pm
by nageswaragunupudi
leandro wrote:Otra opción puede ser dbcombo

Code: Select all | Expand


#include "dbcombo.ch"

.....

Local aTipoCla := {"Gran Contribuyente","Régimen Común","Régimen Simplificado",;
                 "Persona Natural","Empresa Unipersonal","Extranjera","Otra"}
Local aLlavCla := {1,2,3,4,5,6,7}
.....

REDEFINE DBCOMBO oCcla VAR nTipo ITEMS aLlavCla LIST aTipoCla ID 4036 OF ::oDlgCrea UPDATE             
......
 


DBCOMBO is the right answer.
This is exactly what you need.

Re: Ayuda con Combobox RESUELTO

Posted: Mon Nov 01, 2021 1:01 pm
by jose_murugosa
Queridos Armando, Leandro, Karinha, Mr. Rao
Muchisimas Gracias.

Estoy aplicando dos de las soluciones propuestas para dos casos distintos de mi desarrollo y estoy encantado.

Muy agradecido por el apoyo y la ayuda que siempre me brinda la comunidad.

NUEVAMENTE MUCHISIMAS GRACIAS A TODOS'!!! :D