FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Ayuda con Combobox
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Ayuda con Combobox
Posted: Fri Oct 29, 2021 05:52 PM

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.

Saludos/Regards,

José Murugosa

"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"
Posts: 346
Joined: Mon Oct 05, 2009 03:35 PM
Re: Ayuda con Combobox
Posted: Fri Oct 29, 2021 08:23 PM
Buen día:

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

Code (fw): Select all Collapse
...
...
   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.

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




SkyPe: armando.lagunas@hotmail.com

Mail: armando.lagunas@gmail.com
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Ayuda con Combobox
Posted: Fri Oct 29, 2021 11:49 PM

\samples\TESTGET3.PRG

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Ayuda con Combobox
Posted: Fri Oct 29, 2021 11:54 PM
Otra opción puede ser dbcombo

Code (fw): Select all Collapse
#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              
......
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Ayuda con Combobox
Posted: Sat Oct 30, 2021 01:11 AM
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Ayuda con Combobox
Posted: Sat Oct 30, 2021 04:18 PM
leandro wrote:Otra opción puede ser dbcombo

Code (fw): Select all Collapse
#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.
Regards



G. N. Rao.

Hyderabad, India
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Re: Ayuda con Combobox RESUELTO
Posted: Mon Nov 01, 2021 01:01 PM

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

Saludos/Regards,

José Murugosa

"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"

Continue the discussion