Hola Amigos,,,
Debo controlar 60 botones, asi que lo hago de esta manera:
FOR nCont := 1 TO 60
REDEFINE BTNBMP oMesa[nCont] ;
RESOURCE "VACIA" NOBORDER ;
ID (200 + nCont) OF oFld:aDialogs[1] ;
ACTION ( OpcionMesa(1, ::nId - 200) )
NEXT nCont
oMesa[::nId]:bRClicked := {|nRow,nCol| OpcionMesa(2, ::nId - 200)}
aqui al compilar sale un error, al parecer no acepta ::nId, ::nId me devuelve el numero del identificador del btnbmp, asi se que btnbmp he presionado...
Alguna solucion??
Error al compilar
- Willi Quintana
- Posts: 859
- Joined: Sun Oct 09, 2005 10:41 pm
- Location: Cusco - Perú
- Contact:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Willi Quintana
- Posts: 859
- Joined: Sun Oct 09, 2005 10:41 pm
- Location: Cusco - Perú
- Contact:
Ups. Sorry, olvide mencionarlos
En este codigo.
FOR nCont := 1 TO 60
REDEFINE BTNBMP oMesa[nCont] ;
RESOURCE "VACIA" NOBORDER ;
ID (200 + nCont) OF oDls ;
ACTION ( OpcionMesa(1, ::nId - 200) )
NEXT nCont
oMesa[::nId]:bRClicked := {|nRow,nCol| OpcionMesa(2, ::nId - 200)}
El error sale en la linea roja
WARNING c1003 AMBIGUOS REFERENCE "SELF"
Salu2
Willi
En este codigo.
FOR nCont := 1 TO 60
REDEFINE BTNBMP oMesa[nCont] ;
RESOURCE "VACIA" NOBORDER ;
ID (200 + nCont) OF oDls ;
ACTION ( OpcionMesa(1, ::nId - 200) )
NEXT nCont
oMesa[::nId]:bRClicked := {|nRow,nCol| OpcionMesa(2, ::nId - 200)}
El error sale en la linea roja
WARNING c1003 AMBIGUOS REFERENCE "SELF"
Salu2
Willi
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Willi,
Prueba esto:
SetRClicked( oMesa )
oMesa[ oMesa:nId ]:bRClicked = { | nRow, nCol | OpcionMesa( 2, oMesa:nId - 200 ) }
return nil
y llama a SetRClicked() antes del NEXT
Si no funcionase así, prueba con:
SetRClicked( oMesa, nCount )
oMesa[ nCount ]:bRClicked = { | nRow, nCol | OpcionMesa( 2, nCount - 200 ) }
Esto es a lo que se llama "detached locals" (variables locales que quedan "atrapadas" dentro de un codeblock
Prueba esto:
SetRClicked( oMesa )
oMesa[ oMesa:nId ]:bRClicked = { | nRow, nCol | OpcionMesa( 2, oMesa:nId - 200 ) }
return nil
y llama a SetRClicked() antes del NEXT
Si no funcionase así, prueba con:
SetRClicked( oMesa, nCount )
oMesa[ nCount ]:bRClicked = { | nRow, nCol | OpcionMesa( 2, nCount - 200 ) }
Esto es a lo que se llama "detached locals" (variables locales que quedan "atrapadas" dentro de un codeblock