Creí tener la solución pero veo que no es así, trataré de explicarme:
Tengo un browse de 120 columnas 10 columnas por cada mes del año,
en el dialogo solo muestro 10 aunque el browse tiene definidas las 120
y solo con scroll horizontal voy mostrando las columna de los otros meses.
-----------------------------------------E N E R O ----------------------------------------------| -------------- F E B R E R O
COL01 COL02 COL03 COL04 COL05 COL06 COL07 COL08 COL09 COL10 COL11 COL12 | COL13 COL14 COL15 COL16 <====== Encabezado de la columna
FLD01 FLD02 FLD03 FLD04 FLD05 FLD06 FLD07 FLD08 FLD09 FLD10 FLD11 | FLD12 FLD13 FLD14 FLD15 FLD16<====== Nombre del campo de la tabla que contiene el valora a mostrar
En el browse tengo definido un menú emergente con el siguiente código
- Code: Select all Expand view
:bRClicked := { | nRow, nCol | MenuPop(oBrw,oBrw:nRowSel,oBrw:nColSel,nRow,nCol) }
....
....
STATIC FUNCTION MenuPop(oBrw,nRow,nCol,nNumRow,nNumCol)
LOCAL oMenu
MENU oMenu POPUP 2007
MENUITEM "Registrar" RESOURCE "ADD" ACTION Registrar(cShortField,cLongField,nCol)
SEPARATOR
MENUITEM "Salir" RESOURCE "EXI" ACTION oMenu:END( )
ENDMENU
ACTIVATE POPUP oMenu AT nNumRow , nNumCol OF oBrw
RETURN(.T.)
Hasta aquí todo bien, pero en la función Registrar() necesito conocer el número de la columna en la
que el usuario dio el clic derecho del ratón, el problema se presenta así
Ejemplo si el usuario da clic derecho en la primera columna, la variable nCol me da el número 01
que corresponde a la primera columna visible en el dialogo, ahora con scroll hacemos visibles las
columnas de Febrero si damos clic sobre la primera columna, la variable nCol me repite el número 01
Y yo necesito tener la columna 11 (10 de enero más 1 de febrero).
Por otro lado, si utilizo la variable nNumCol, me da valores mas altos como 470, 580 pero también
es el mismo caso, se repiten los valores sin diferenciar el mes que se muestra en el dialogo.
En otras palabras quiero obtener el nombre del campo que se muestra en el browse en
función a la columna donde el usuario da clic y eso lo logro con el siguiente código
- Code: Select all Expand view
oBrw:aCols[nCol]:cExpr
Pero como ven es imprescindible el número de columna.
La razón de querer saber el nombre del campo es porque como son 120 columnas y quiero ahorrarme
código al momento de actualizar la tabla, con el siguiente código actualizo sin importarme la columna
en la que el usuario dió clic.
- Code: Select all Expand view
cCmdSql := "UPDATE " +;
"Pdfs " +;
"SET " +;
cLongField + " = 1," +;
cShortField + " = '" + cPdfFile + "' " +;
"WHERE " +;
"PDF_NUM = " + Str(oRsPdf:Fields("PDF_NUM"):Value,03,0) + " " +;
"AND " +;
"PDF_AÑO = " + Str(nAmo,04,0)
Disculpen la perorata pero quise explicarme lo más posible.
Muchas gracias