GRID - HEADER / CABECERA
Moderator: Rathinagiri
- SALINETAS24
- Posts: 667
- Joined: Tue Feb 27, 2018 3:06 am
- DBs Used: DBF
- Contact:
GRID - HEADER / CABECERA
Hola a todos.
El la definición del GRID puedo usar [ ON HEADCLICK <abBlock> ] para cuando pulso la cabecera del GRID.
Cuando tengo varias columnas, (por ejemplo 6), creo aBlock de esta forma y me funciona sin problemas
FOR nFor=1 to 6
B:=STR(nFor)
A:={ { || ordena(&B)} }
aadd(aBlock,a[1] )
NEXT
El parametro "&B" me indica la cabecera que ha pulsado el usuario.
Mi pregunta, ¿hay alguna función que me devuelva el nº cabecera/columna que he pulsado en la cabecera del GRID..? Algo como ( This.CellColIndex ) pero para la cabecera y evitar asi pasar el parametro &B
Gracias a todos por vuestra colaboración y vamos con una cervecita fresquita!!!
El la definición del GRID puedo usar [ ON HEADCLICK <abBlock> ] para cuando pulso la cabecera del GRID.
Cuando tengo varias columnas, (por ejemplo 6), creo aBlock de esta forma y me funciona sin problemas
FOR nFor=1 to 6
B:=STR(nFor)
A:={ { || ordena(&B)} }
aadd(aBlock,a[1] )
NEXT
El parametro "&B" me indica la cabecera que ha pulsado el usuario.
Mi pregunta, ¿hay alguna función que me devuelva el nº cabecera/columna que he pulsado en la cabecera del GRID..? Algo como ( This.CellColIndex ) pero para la cabecera y evitar asi pasar el parametro &B
Gracias a todos por vuestra colaboración y vamos con una cervecita fresquita!!!
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. 

Re: GRID - HEADER / CABECERA
Hola.
Puedes usar esto
ON HEADCLICK { {||MsgInfo('Click 1')} , {||MsgInfo('Click 2')} , {||MsgInfo('Click 3')} }
Puedes usar esto
ON HEADCLICK { {||MsgInfo('Click 1')} , {||MsgInfo('Click 2')} , {||MsgInfo('Click 3')} }
- SALINETAS24
- Posts: 667
- Joined: Tue Feb 27, 2018 3:06 am
- DBs Used: DBF
- Contact:
Re: GRID - HEADER / CABECERA
Hola ASESORMIX, gracias por contestar.
Eso lo conozco, es parecido a usar el bucle FOR que yo he puesto en el primer comentario.
Pero no me sirve, Lo que busco (que no se si existe), si hay alguna forma de conocer que columna de la Cabecera del Grid ha pulsado el usuario..
Gracias
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. 

-
- Posts: 281
- Joined: Sat May 18, 2019 2:11 pm
- DBs Used: Visual FoxPro, FoxPro
- Location: United States of America
Re: GRID - HEADER / CABECERA
Thank you for your question SALINETAS24.
I also want to know how to determine the column number when a Grid Header is pressed.
Red2
I also want to know how to determine the column number when a Grid Header is pressed.
Red2
- SALINETAS24
- Posts: 667
- Joined: Tue Feb 27, 2018 3:06 am
- DBs Used: DBF
- Contact:
Re: GRID - HEADER / CABECERA
Hola a todos.
El los fuentes, en el programa h_windows.prg y en partir de línea 2680 he encontrado el siguiente código
Por lo que yo creo entender la variable LVC que genera la función GetGridColumn(lParam) contiene el numero de columna de cabecera que ha sido pulsado ya que posteriormente envia a _DoControlEventProcedure() la funcion correspondiente, que se encuentra archivada en _HMG_SYSDATA[17]
He intentado ejecutar este trozo de programa, copiandolo en el mio pero me da error.
Si alguien conoce mejor los fuentes y me puede orientar, agradecido.
Cerveza fresca para todos el mundo.
El los fuentes, en el programa h_windows.prg y en partir de línea 2680 he encontrado el siguiente código
Code: Select all
* Browse Header Click .........................
If GetNotifyCode ( lParam ) = LVN_COLUMNCLICK
if ValType ( _HMG_SYSDATA [ 17 ] [i] ) == 'A'
lvc := GetGridColumn(lParam) + 1
if HMG_LEN (_HMG_SYSDATA [ 17 ] [i]) >= lvc
_DoControlEventProcedure ( _HMG_SYSDATA [ 17 ] [i] [lvc] , i )
EndIf
EndIf
Return 0
EndIf
He intentado ejecutar este trozo de programa, copiandolo en el mio pero me da error.
Si alguien conoce mejor los fuentes y me puede orientar, agradecido.
Cerveza fresca para todos el mundo.
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. 

Re: GRID - HEADER / CABECERA
Could you not send a parameter to your own function.
Private myheadclick := 0
ON HEADCLICK { {|| mycheckclick(1))} , {|| mycheckclick(2)} , {||mycheckclick(3)} }
Function mycheckclick
parameter H
myheadckick := H
return
Franco
Private myheadclick := 0
ON HEADCLICK { {|| mycheckclick(1))} , {|| mycheckclick(2)} , {||mycheckclick(3)} }
Function mycheckclick
parameter H
myheadckick := H
return
Franco
All The Best,
Franco
Canada
Franco
Canada
-
- Posts: 281
- Joined: Sat May 18, 2019 2:11 pm
- DBs Used: Visual FoxPro, FoxPro
- Location: United States of America
Re: GRID - HEADER / CABECERA
Hi SALINETAS24,
En parte de mi código, tengo un comentario de que GetGridColumn() es una función solo de MiniGUI.
Me pregunto si esto es parte del error que tuviste.
In some of my code I have a comment that GetGridColumn() is an MiniGUI only function.
I wonder if this is part of the error you had.
Red2
En parte de mi código, tengo un comentario de que GetGridColumn() es una función solo de MiniGUI.
Me pregunto si esto es parte del error que tuviste.
In some of my code I have a comment that GetGridColumn() is an MiniGUI only function.
I wonder if this is part of the error you had.
Red2
- SALINETAS24
- Posts: 667
- Joined: Tue Feb 27, 2018 3:06 am
- DBs Used: DBF
- Contact:
Re: GRID - HEADER / CABECERA
Muchas gracias a todos por contestar.
Ya lo tengo resuelto!!!
Lo que persigo es hacer una "FUNCION" generica que se pueda llamar usando solo variables definidas como locales. Si pasamos una variable usando "&" tienen que ser definidas como privadas y eso no lo quiero.
Aquí os paso la solución.
Se define el grid
Y esta sería la funcion
Espero que os guste y que lo podáis aprovechar.
Vamos con una cervecita fresquita para todos, que esta ronda la pago yo!!!!

Ya lo tengo resuelto!!!

Lo que persigo es hacer una "FUNCION" generica que se pueda llamar usando solo variables definidas como locales. Si pasamos una variable usando "&" tienen que ser definidas como privadas y eso no lo quiero.
Aquí os paso la solución.
Se define el grid
Code: Select all
LOCAL cWinSplitGrid:="WINMAIN"
LOCAL cGridNombre:="GRID"
FOR nFor=1 TO LEN(_aGridLongitud)
aCadena:={}
aCadena:={ { || _ORDENARGRID(cWinSplitGrid,cGridNombre)} }
nAnchoGrid+=_aGridLongitud[nFor]
AADD(_aBlock,aCadena[1])
NEXT
DEFINE GRID &cGridNombre
PARENT &cWinSplitGrid
ROW 110
COL 5
...../...
ON HEADCLICK _aBlock
END GRID
Code: Select all
PROC _ORDENARGRID(cWinSplitGrid,cGridNombre)
LOCAL nPos := ASCAN ( _HMG_SYSDATA [3] , EventHWND() )
LOCAL nFor, nColIni, nColFin,nColum, nPulsa1
LOCAL aCell:={}
// Obtengo posicion donde hice CLICK
aCell:=_GetGridCellData(nPos)
nColIni:= GETPROPERTY (cWinSplitGrid,cGridNombre,"COL")
nColum:= GETPROPERTY (cWinSplitGrid,cGridNombre,"ColumnCOUNT")
nPos:=0
FOR nFor:=1 TO nColum-1
IF nPos=0
nPulsa1:= GETPROPERTY (cWinSplitGrid,cGridNombre,"ColumnWIDTH",nFor)
nColFin:=nColIni+nPulsa1
IF aCell[1]>=nColIni .AND. aCell[1]<=nColFin
nPos:=nFor
ENDIF
nColIni+=nPulsa1
ENDIF
NEXT
IF nPos=0
nPos:=nColum
ENDIF
MSGBOX("COLUMNA "+STR(nPos))
RETURN
Espero que os guste y que lo podáis aprovechar.
Vamos con una cervecita fresquita para todos, que esta ronda la pago yo!!!!

Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. 

Re: GRID - HEADER / CABECERA
Bonjour a toute l'équipe .
"voilla un programme d'entrée de produits dans une base de donnée ENSTOCKDBF.DBF en choisissant le produit dans une base CONSTART.DBF .je voudrais remplacer la recherche effectuée par COMBOBX dans la grille GRDSTOCK par une recherche dynamique par lettre"
translation google :
Hi!
"Here is a program for entering products into a database ENSTOCKDBF.DBF by selecting the product from a CONSTART.DBF database. I would like to replace the search done by COMBOBOX in the GRDSTOCK grid with a dynamic letter-based search."
Thank's
"voilla un programme d'entrée de produits dans une base de donnée ENSTOCKDBF.DBF en choisissant le produit dans une base CONSTART.DBF .je voudrais remplacer la recherche effectuée par COMBOBX dans la grille GRDSTOCK par une recherche dynamique par lettre"
translation google :
Hi!
"Here is a program for entering products into a database ENSTOCKDBF.DBF by selecting the product from a CONSTART.DBF database. I would like to replace the search done by COMBOBOX in the GRDSTOCK grid with a dynamic letter-based search."
Thank's
- Attachments
-
- stock.rar
- (21.63 KiB) Downloaded 42 times
Last edited by tonton2 on Mon Jan 27, 2025 11:06 am, edited 1 time in total.
L'Algerie vous salut
Y.TABET
Y.TABET
Re: GRID - HEADER / CABECERA
SALINETAS24, I like simple. This is how I would handle this. Not sure if it would work for you.
Code: Select all
program
private g2h := 0
Define win
Define Grid Grid_2
ONHEADCLICK { {|| g2h:=1,msgbox(g2h),g2h:=0 }, {|| g2h:=2,something(),g2h:=0 }}
All The Best,
Franco
Canada
Franco
Canada