Hola amigos.
Meto en el formulario un ComboBox.
En el init coloqué lo siguiente
*
* Cbo_Alias_Num
* ----------
* Muestra una lista con las tablas del entorno de datos.
* AUSED( ) crea una matriz de dos dimensiones donde Incluye en la primera columna los alias de tabla
* abiertas y La segunda columna de la matriz contiene los números de área de trabajo correspondientes a
* las tablas. La función retorna el número de filas de la matriz, que es igual al número de tablas abiertas
* en la sesión de datos.
LOCAL Num_Tablas, texto
Num_Tablas = 0
Num_Tablas = AUSED(Vector)
WITH This
.BoundColumn = 2
.BoundTo = .F.
.DisplayValue = 2
FOR I = 1 TO Num_Tablas && Loop para meter los nombres de tablas en el combo.
* Así funciona bien. Pero coloca primero el número de área y luego el nombre de la tabla y lo quiero alrevés.
*!* .AddItem (TRANSFORM (Vector(I,2))) && Columna 2 Alias
*!* .list [.NewIndex, 2] = (Vector(I,1)) && Columna 1 Número de Área
.AddItem (Vector(I,1))
.list [.NewIndex, 2] = TRANSFORM (Vector(I,2) ) && Columna 2 Número de Área
ENDFOR
ENDWITH
* Estos no funcionan.
* .AddListItem( TRANSFORM (Vector(I,2) ,1))
* los que siguen si funcionan
* .AddItem (TRANSFORM (Vector(I,1)),1)
* TRANSFORM es porque el combo solo acepta caracteres no números
* .AddItem (Vector(I,1),1)
*!* This.RowSourceType = 5
*!* This.RowSource = 'Vector'
* Control.AddListItem(cItem [, nItemID] [, nColumn])
* Control.AddItem(cItem [, nIndex] [, nColumn])
* Parámetros
* cItem
* Especifica la expresión de cadena que se agrega al control.
* nIndex
* Especifica la posición donde el elemento se coloca en el control. Si proporciona un valor válido para el parámetro opcional nIndex, cItem se colocará en esa posición dentro del control. Si especifica un nIndex que ya existe, el elemento se insertará en esa posición y todos los elementos por debajo del elemento se moverán una posición hacia abajo en la parte de lista del control ComboBox o ListBox.
* Si omite nIndex y la propiedad Sorted está establecida en el valor verdadero (.T.), cItem se agregará en orden alfabético. Si omite nIndex y la propiedad Sorted está establecida en el valor falso (.F.), cItem se agregará al final de la parte de lista del control ComboBox o ListBox.
* nColumn
* Especifica la columna del control al que se va a agregar el nuevo elemento. El valor predeterminado es 1.
*
* Cbo_Alias_Num
* ----------
* Muestra una lista con las tablas del entorno de datos.
* AUSED( ) crea una matriz de dos dimensiones donde Incluye en la primera columna los alias de tabla
* abiertas y La segunda columna de la matriz contiene los números de área de trabajo correspondientes a
* las tablas. La función retorna el número de filas de la matriz, que es igual al número de tablas abiertas
* en la sesión de datos.
LOCAL Num_Tablas, texto
Num_Tablas = 0
Num_Tablas = AUSED(Vector)
WITH This
.BoundColumn = 2
.BoundTo = .F.
.DisplayValue = 2
FOR I = 1 TO Num_Tablas && Loop para meter los nombres de tablas en el combo.
* Así funciona bien. Pero coloca primero el número de área y luego el nombre de la tabla y lo quiero alrevés.
*!* .AddItem (TRANSFORM (Vector(I,2))) && Columna 2 Alias
*!* .list [.NewIndex, 2] = (Vector(I,1)) && Columna 1 Número de Área
.AddItem (Vector(I,1))
.list [.NewIndex, 2] = TRANSFORM (Vector(I,2) ) && Columna 2 Número de Área
ENDFOR
ENDWITH
* Estos no funcionan.
* .AddListItem( TRANSFORM (Vector(I,2) ,1))
* los que siguen si funcionan
* .AddItem (TRANSFORM (Vector(I,1)),1)
* TRANSFORM es porque el combo solo acepta caracteres no números
* .AddItem (Vector(I,1),1)
*!* This.RowSourceType = 5
*!* This.RowSource = 'Vector'
* Control.AddListItem(cItem [, nItemID] [, nColumn])
* Control.AddItem(cItem [, nIndex] [, nColumn])
* Parámetros
* cItem
* Especifica la expresión de cadena que se agrega al control.
* nIndex
* Especifica la posición donde el elemento se coloca en el control. Si proporciona un valor válido para el parámetro opcional nIndex, cItem se colocará en esa posición dentro del control. Si especifica un nIndex que ya existe, el elemento se insertará en esa posición y todos los elementos por debajo del elemento se moverán una posición hacia abajo en la parte de lista del control ComboBox o ListBox.
* Si omite nIndex y la propiedad Sorted está establecida en el valor verdadero (.T.), cItem se agregará en orden alfabético. Si omite nIndex y la propiedad Sorted está establecida en el valor falso (.F.), cItem se agregará al final de la parte de lista del control ComboBox o ListBox.
* nColumn
* Especifica la columna del control al que se va a agregar el nuevo elemento. El valor predeterminado es 1.
*--------------------------
En el click del combo coloqué esto.
*
* Cbo_Alias_Num
* ------------ Click
* Al hacer click sobre un item, Selecciona el área cuyo valor Seleccionó.
SELECT VAL (This.Value)
Titulo = 'Tabla ' + ALIAS(VAL(This.Value))
DEFINE WINDOW ventana FROM 5,0 TO 15,40 IN DESKTOP ;
TITLE "Resultados" FONT "MS Sans Serif", ;
14 STYLE "B" FLOAT GROW CLOSE PANEL ;
ICON FILE "C:\Configurargv\Imagenes\Iconos\BUG.ICO" HALFHEIGHT ;
COLOR RGB(,,255,255,255,128)
* Esto es solo un ejemplo para mí, pero lo copié tal cual lo tengo en mi formuario
*!* BROWSE FIELDS;
*!* Descripcio :H = 'Descripción' :26 ,;
*!* PreUnBss :H = 'Precio Unitario Bs. s/Iva' :22 :P = '999,999,999.99' ,;
*!* PreUnBsc :H = 'Precio Unitario Bs. c/Iva' :22 :P = '999,999,999.99' ,;
*!* PreToBss :H = 'Precio Total Bs s/Iva' :22 :P = '999,999,999.99' ,;
*!* PreToBsc :H = 'Precio Total Bs c/Iva' :22 :P = '999,999,999.99' ,;
*!* PreUnDols :H = 'Precio Uni.Dol s/Iva' :22 :P = '999,999,999.99' ,;
*!* PreUnDolc :H = 'Precio Uni.Dol c/Iva' :22 :P = '999,999,999.99' ,;
*!* PreToDols :H = 'Precio Total Dol. s/Iva' :22 :P = '999,999,999.99' ,;
*!* PreToDolc :H = 'Precio Total Dol. c/Iva' :22 :P = '999,999,999.99' ;
*!* FONT 'Verdana', 12 STYLE 'I' ;
*!* TITLE 'Resumen de Precios y Precio s' ;
*!* WINDOW Ventana NODELETE SAVE NOAPPEND
IF VAL (This.Value) <> 0
BROWSE FONT 'Verdana',14 STYLE 'I' TITLE Titulo WINDOW Ventana NODELETE SAVE NOAPPEND
ENDIF
RELEASE WINDOWS Ventana