Page 1 of 1

¿Saber numero de columna del browse? (SOLUCIONADO)

PostPosted: Fri Oct 27, 2023 10:30 pm
by Armando
Saludos al foro:

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

Re: ¿Saber numero de columna del browse?

PostPosted: Fri Oct 27, 2023 11:25 pm
by cmsoft
Puede servirte
oBrw:aCols[nCol]:nCreationorder
No se si te entendi bien igualmente....

Re: ¿Saber numero de columna del browse?

PostPosted: Sat Oct 28, 2023 3:31 am
by Armando
César:

Agradezco la respuesta, te muestro los resultados

Code: Select all  Expand view

:bRClicked := { | nRow, nCol | MenuPop(oBrw,oBrw:nRowSel,oBrw:nColSel,nRow,nCol) } <=== Clic sobre un renglón, celda
....

STATIC FUNCTION MenuPop(oBrw,nRowSel,nColSel,nRow,nCol)                                             <=== Función donde recibimos los valores pasados
// Estos son los valores recibidos dando clic sobre la primera columna de FEBRERO, te recuerdo que en el dialogo solo se muestra 10 columnas del mes
   ? nRowSel                                              <= 1
   ? nColSel                                              <= 3
   ? oBrw:aCols[nColSel]:nCreationOrder                   <= 3  El valor que espero en lugar de 3 debe ser 11
   ? nColSel                                              <= 3
RETURN(.T.)
 


El menú se muestra en el renglón / Columna correctos pero los números de columna no
Tal vez NO estoy haciendo bien las cosas ?

Saludos

Re: ¿Saber numero de columna del browse? (SOLUCIONADO)

PostPosted: Sat Oct 28, 2023 4:29 am
by Armando
Amigos del foro:

Con agrado les menciono que ya esta solucionado el tema gracias a la idea de César,
muestro la solución por si a alguien más la necesita:

Code: Select all  Expand view

AllTrim(oBrw:aCols[oBrw:SelectedCol():nCreationOrder]:cExpr)
 


Gracias estimado foro, saludos

Re: ¿Saber numero de columna del browse? (SOLUCIONADO)

PostPosted: Sat Oct 28, 2023 2:46 pm
by karinha
Armando wrote:Amigos del foro:

Con agrado les menciono que ya esta solucionado el tema gracias a la idea de César,
muestro la solución por si a alguien más la necesita:

Code: Select all  Expand view

AllTrim(oBrw:aCols[oBrw:SelectedCol():nCreationOrder]:cExpr)
 


Gracias estimado foro, saludos


https://www.forums.fivetechsupport.com/viewtopic.php?f=3&t=14834

Regards, saludos.

Re: ¿Saber numero de columna del browse? (SOLUCIONADO)

PostPosted: Sat Oct 28, 2023 4:17 pm
by Armando
Karinha:

Aunque ya esta resuelto el tema, te agradezco la respuesta, busque en el foro
con oBrw:aCols[oBrw:SelectedCol():nCreationOrder] pero no mostraba resultados.

Saludos