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.
//-------------------------------------------------------------------------

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'!!!
