Array de Botones. Acción en función de botón pulsado

Array de Botones. Acción en función de botón pulsado

Postby Verhoven » Fri Mar 28, 2014 11:02 pm

En un dialogo genero un número de botones (BTNBMP) mediante código que es variable. Aquí dejo el código:
Code: Select all  Expand view
 
 DEFINE DIALOG oDlg FROM 5,10 TO 32, 85 FONT oFontDoble TITLE "Selección posición"  
   
    @ 1,1 SAY oSay VAR cSAy OF oDlg FONT oFontDobleN
   
    for i=1 TO nNumBotones
      // Botón para hacer una nueva venta.
     
      if i <= 4
         @ 40,20+65*(i-1) BTNBMP oBtnPosicion[i] OF oDlg;   //@ y , x
               ACTION ( nPosicionEs= *******, oDlg:end() );
               SIZE 50,38 pixel; // Ancho, Alto                                
               UPDATE
               oBtnPosicion[i]:SetFile(RutaExe+"\"+ltrim(str(i))+".bmp")
        else
         @ 40+52,20+65*(i-1-4) BTNBMP oBtnPosicion[i] OF oDlg;   //@ y , x
               ACTION ( nPosicionEs= ******* ,oDlg:end());
               SIZE 50,38 pixel; // Ancho, Alto                                
               UPDATE
               oBtnPosicion[i]:SetFile(RutaExe+"
\"+ltrim(str(i))+".bmp")
      endif
    next i      

    @ 150,20 BTNBMP oBtnCancelar OF oDlg MESSAGE 'SALIR' SIZE 90,30; //ancho x alto
               ACTION (oDlg:end()) default CANCEL
               oBtnCancelar:SetFile(RutaExe+"
\CANCELAR.bmp")
               
 ACTIVATE DIALOG oDlg CENTER
 


Me pita bien los botones pero no logro descubrir la manera de averiguar cual es el botón que ha hecho click el usuario. Es decir, en la parte del código donde pongo nPosicionEs= *******, no sé qué debo de poner.
Verhoven
 
Posts: 505
Joined: Sun Oct 09, 2005 7:23 pm

Re: Array de Botones. Acción en función de botón pulsado

Postby joseluisysturiz » Sat Mar 29, 2014 1:16 am

Creo que si usas una Var public que al hacer click en el boton tome el valor de la posicion del boton en el array, podrias saber que boton se presiono, algo como nBoton = aBtn[n] al momento de hacer click antes de ejecutar la accion, es una idea a vuelo de pajaro terrestre, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Array de Botones. Acción en función de botón pulsado

Postby cnavarro » Sat Mar 29, 2014 3:47 am

Verhoven wrote:En un dialogo genero un número de botones (BTNBMP) mediante código que es variable. Aquí dejo el código:
Code: Select all  Expand view
 
 DEFINE DIALOG oDlg FROM 5,10 TO 32, 85 FONT oFontDoble TITLE "Selección posición"  
   
    @ 1,1 SAY oSay VAR cSAy OF oDlg FONT oFontDobleN
   
    for i=1 TO nNumBotones
      // Botón para hacer una nueva venta.
     
      if i <= 4
         @ 40,20+65*(i-1) BTNBMP oBtnPosicion[i] OF oDlg;   //@ y , x
               ACTION ( nPosicionEs= *******, oDlg:end() );
               SIZE 50,38 pixel; // Ancho, Alto                                
               UPDATE
               oBtnPosicion[i]:SetFile(RutaExe+"\"+ltrim(str(i))+".bmp")
        else
         @ 40+52,20+65*(i-1-4) BTNBMP oBtnPosicion[i] OF oDlg;   //@ y , x
               ACTION ( nPosicionEs= ******* ,oDlg:end());
               SIZE 50,38 pixel; // Ancho, Alto                                
               UPDATE
               oBtnPosicion[i]:SetFile(RutaExe+"
\"+ltrim(str(i))+".bmp")
      endif
    next i      

    @ 150,20 BTNBMP oBtnCancelar OF oDlg MESSAGE 'SALIR' SIZE 90,30; //ancho x alto
               ACTION (oDlg:end()) default CANCEL
               oBtnCancelar:SetFile(RutaExe+"
\CANCELAR.bmp")
               
 ACTIVATE DIALOG oDlg CENTER
 


Me pita bien los botones pero no logro descubrir la manera de averiguar cual es el botón que ha hecho click el usuario. Es decir, en la parte del código donde pongo nPosicionEs= *******, no sé qué debo de poner.


En el ejemplo que pongo supongo que tanto nPosicionEs como oDlg son variables estáticas
Code: Select all  Expand view


.../...

 DEFINE DIALOG oDlg FROM 5,10 TO 32, 85 FONT oFontDoble TITLE "Selección posición"
   For x = 1 to 10
   @ 110, 2+(x-1)*30 BUTTON aBotones[x] PROMPT "Btn"+StrZero(x,2) oF oDlg ;
      SIZE 20, 10 PIXEL ;
      FONT oFont
      aBotones[ x ]:bAction := HazBlock(x)
   Next x

 ACTIVATE DIALOG oDlg CENTER
Return nil

//---------------------------------------------------------------------------//

Function HazBlock( x )
Return &("{ || Pon(" +LTrim(Str(x))+") }" )

//---------------------------------------------------------------------------//

Function Pon( x )
nPosicionEs := x
MsgInfo( nPosicionEs )
//oDlg:End()     // oDlg -> Variable estática
Return nil

//---------------------------------------------------------------------------//
 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6501
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Array de Botones. Acción en función de botón pulsado

Postby Verhoven » Sat Mar 29, 2014 5:12 am

Muchas Gracias.
Ha funcionado correctamente, si bien, no ha sido necesario declarar como estáticas esas dos variables que señalas.
Verhoven
 
Posts: 505
Joined: Sun Oct 09, 2005 7:23 pm

Re: Array de Botones. Acción en función de botón pulsado

Postby cnavarro » Sat Mar 29, 2014 1:35 pm

Verhoven wrote:Muchas Gracias.
Ha funcionado correctamente, si bien, no ha sido necesario declarar como estáticas esas dos variables que señalas.


Qué tipo eran esas variables?
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6501
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Array de Botones. Acción en función de botón pulsado

Postby Verhoven » Sun Mar 30, 2014 4:06 pm

public
Verhoven
 
Posts: 505
Joined: Sun Oct 09, 2005 7:23 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: karinha and 15 guests