Una Matriz de Botones (SOLUCIONADO)

Una Matriz de Botones (SOLUCIONADO)

Postby VitalJavier » Wed Mar 23, 2016 4:11 pm

Que tal buen dia
Alguien me podría echar la mano con esto

Estoy haciendo una matriz de botones en un TFolderex
Pongo como hago

Code: Select all  Expand view

FUNCTION build_pages( oFolder )
    LOCAL oDialog
    FOR J := 1 TO LEN( oFolder:aPrompts )      
        DEFINE DIALOG oDialog OF oFolder STYLE NOR( WS_VISIBLE, WS_DLGFRAME, WS_CHILD) TRANSPARENT
            FOR I := 1 TO LEN(oBtn)
                IF oBtn[I,4] = J
                    @aColB[I,1],aColB[I,2] BTNBMP oBtn[I,1] PROMPT oBtn[I,2] SIZE 48,35 OF odialog PIXEL UPDATE CENTER ACTION .......
                        oBtn[I,1]:l2007 := .T.
                        oBtn[I,1]:lBorder := .F.
                        oBtn[I,1]:lTransparent := .T.
                ENDIF
           NEXT        
            oFolder:aDialogs[ J ] := oDialog
    NEXT     
RETURN oFolder
 


El gran problema que tengo es en el "ACTION"
Ya estuve buscando como hacerle y no doy

Cada Pestaña del TFolderex tiene un nombre, y cada botón tiene una cadena
Tengo una tabla que quiero filtrar, por el nombre de la pestaña del TFolderex y
por el nombre del botton

si alguien ya paso por esto y me puede echar una mano ???

Gracias.
Last edited by VitalJavier on Sun Mar 27, 2016 6:01 pm, edited 1 time in total.
VitalJavier
 
Posts: 227
Joined: Mon Jun 10, 2013 6:40 pm

Re: Una Matriz de Botones

Postby cuatecatl82 » Wed Mar 23, 2016 7:02 pm

Saludos ojala te pueda servir, no he revisado la clase BTNBMP pero es casi seguro que tenga el parametro bAction

Seria algo así

Code: Select all  Expand view

oBtn[I,1]:bAction := {|| Msginfo("Item "+str(I) ) }


Ojala funcione..

Saludos.
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Una Matriz de Botones

Postby gmart1 » Wed Mar 23, 2016 7:38 pm

Hola, creo que el problema está en cuando se ejecuta bAction el valor de la variable I es LEN (oBtn)+1.
Para solucionarlo puedes probar asi :
Code: Select all  Expand view

oBtn[I,1]:bAction := bEjecutaBoton ( I, J )

....

function bEjecutaBoton ( I, J )

return { |I,J| Msginfo ("Boton " + str (I) + " Folder " + str(J) }
 


Espero te sirva.
gmart1
 
Posts: 80
Joined: Wed Oct 24, 2007 12:48 pm
Location: Alhaurin de la Torre (MALAGA)

Re: Una Matriz de Botones

Postby VitalJavier » Thu Mar 24, 2016 3:45 pm

Gracias por responder

ya probe la solución que me están poniendo, pero el detalle es cuando
le doy "click" al botón

function bEjecutaBoton ( I, J )
return { |I,J| Msginfo ("Boton " + str (I) + " Folder " + str(J) }

Esto funciona con forme voy creando los botones, pero después
de ya tener la matriz, y le doy click se pierde.

Alguna idea ??

Saludos.
VitalJavier
 
Posts: 227
Joined: Mon Jun 10, 2013 6:40 pm

Re: Una Matriz de Botones

Postby Willi Quintana » Fri Mar 25, 2016 3:57 am

HOla, esto funciona...
Code: Select all  Expand view

FOR nContP := 1 TO 24
           REDEFINE BTNBMP aItems[nContP] ;
                    RESOURCE "NULL" TOP 2007;
                    ACTION ( MsgInfo(::nId ) )  ;         // muestra el ID de cada botón, a partir de allí ya realizas acciones para  cada boton
                    ID 150 + nContP OF oDlg
          SysRefresh()
NEXT nContP
 
User avatar
Willi Quintana
 
Posts: 1002
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: Una Matriz de Botones

Postby noe aburto » Fri Mar 25, 2016 7:14 pm

Saludos

Tuve que hacer algo asi y me funciono, que te expongo en tu ejemplo:

[code}
FUNCTION build_pages( oFolder )
LOCAL oDialog
FOR J := 1 TO LEN( oFolder:aPrompts )
DEFINE DIALOG oDialog OF oFolder STYLE NOR( WS_VISIBLE, WS_DLGFRAME, WS_CHILD) TRANSPARENT
FOR I := 1 TO LEN(oBtn)
IF oBtn[I,4] = J
DO CASE
CASE I = 1
@aColB[1,1],aColB[1,2] BTNBMP oBtn[1,1] PROMPT oBtn[1,2] SIZE 48,35 OF odialog PIXEL UPDATE CENTER ACTION .......
CASE I = 2
@aColB[2,1],aColB[2,2] BTNBMP oBtn[2,1] PROMPT oBtn[2,2] SIZE 48,35 OF odialog PIXEL UPDATE CENTER ACTION .......
CASE I = 3
@aColB[1,1],aColB[1,2] BTNBMP oBtn[1,1] PROMPT oBtn[1,2] SIZE 48,35 OF odialog PIXEL UPDATE CENTER ACTION .......
CASE
....
ENDCASE
oBtn[I,1]:l2007 := .T.
oBtn[I,1]:lBorder := .F.
oBtn[I,1]:lTransparent := .T.
ENDIF
NEXT
oFolder:aDialogs[ J ] := oDialog
NEXT
RETURN oFolder
[/code]

Y para no tener que cambiar el codigo, puse opciones dentro de CASE de 1 a 30, maximos de botones segun. tal parace que colo con valores fijos te funciona.
Noé Aburto Sánchez
Tec. Prog. de Sistemas. -Morelia, Mich. México.
fwh 20.06, Harbour 3.2.0, bcc 7.4
TsBrowse 9.0, TsButton 7.0, xEdit 6.1
naburtos@gmail.com, noeaburto67@hotmail.com
User avatar
noe aburto
 
Posts: 418
Joined: Wed Nov 26, 2008 6:33 pm
Location: Morelia, Mich. Mexico.

Re: Una Matriz de Botones

Postby Silvio.Falconi » Sun Mar 27, 2016 5:30 pm

How I can insert a menupopup on button ?
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 6768
Joined: Thu Oct 18, 2012 7:17 pm

Re: Una Matriz de Botones (SOLUCIONADO)

Postby VitalJavier » Sun Mar 27, 2016 5:38 pm

Gracias Amigos por contestar, les agradezco.

Willi, probe tu respuesta y salió a la perfección
Lo hice asi :
Code: Select all  Expand view


ACTION SHOT_BUTTON(::nId)   //Esto en es del botton

FUNCTION SHOT_BUTTON(_Id)
    nBusBtn := ASCAN(oBtn,{|aVal| aVal[5]=_Id})
    IF nBusBtn > 0
        cPrimera := oBtn[nBusBtn,3]
        cSegunda := oBtn[nBusBtn,6]
        SELECT ARTICULOS
        OrdSetFocus("NOMBRE")   
        cCad := "!Empty(ARTICULOS->ARTICULO) AND ARTICULOS->ESTATUS <> 'B' AND '"+cPrimera+"'$ARTICULOS->NOMBRE AND SUBSTR(ARTICULOS->CODIGO,1,4)='2000' AND '"+AllTrim(cSegunda)+"'$ARTICULOS->NOMBRE"
        IF !ADSSetAOF(cCad)
            ?"No se realizo el filtro...",cCad
        ENDIF              
        DbGoTop()      
        oBrow:GoTop()
        oBrow:Refresh()    
    ENDIF
RETURN .T.

 


[img]
Image
[/img]

Antes ya había creado el arreglo, y me di cuento que el ID comienza con el "104" y así lo hice.



Gracias por su tiempo.
VitalJavier
 
Posts: 227
Joined: Mon Jun 10, 2013 6:40 pm

Re: Silvio Una Matriz de Botones (SOLUCIONADO)

Postby Willi Quintana » Mon Mar 28, 2016 3:44 am

Para servir sr.
Y para el MENU POP en cada botón:

En ACTION añades lo siguiente:
Code: Select all  Expand view

ACTION (<acciones>, MenuMesa(oMesa[::nId-150], ::nId) )
...
..
Function MenuMesa(oObj, nId)
nOption := 0
nTopR   := oObj:nBottom         //nTop           // posicion del control que hizo la llamada
nLeftR  := oObj:nRight         //nLeft

MENU oMenu POPUP 2007
  MENUITEM "Opcion 1" ;
     RESOURCE "CALENDARIO1" ACTION nOption := 1
  MENUITEM "Opcion 2" ;
     RESOURCE "CALENDARIO1" ACTION nOption := 2
  MENUITEM "Opcion 3" ;
     RESOURCE "CALENDARIO1" ACTION nOption := 3
  MENUITEM "Opcion 4" ;
     RESOURCE "CALENDARIO1" ACTION nOption := 4
ENDMENU
ACTIVATE POPUP oMenu AT nTopR , nLeftR + 10 OF oObj

? nOption, nId

Return(Nil)
 


O en tu caso

Code: Select all  Expand view

FUNCTION SHOT_BUTTON(_Id)
    MenuMesa(oMesa[nId], nId)
    nBusBtn := ASCAN(oBtn,{|aVal| aVal[5]=_Id})
    IF nBusBtn > 0
        cPrimera := oBtn[nBusBtn,3]
        cSegunda := oBtn[nBusBtn,6]
        SELECT ARTICULOS
        OrdSetFocus("NOMBRE")  
        cCad := "!Empty(ARTICULOS->ARTICULO) AND ARTICULOS->ESTATUS <> 'B' AND '"+cPrimera+"'$ARTICULOS->NOMBRE AND SUBSTR(ARTICULOS->CODIGO,1,4)='2000' AND '"+AllTrim(cSegunda)+"'$ARTICULOS->NOMBRE"
        IF !ADSSetAOF(cCad)
            ?"No se realizo el filtro...",cCad
        ENDIF              
        DbGoTop()      
        oBrow:GoTop()
        oBrow:Refresh()    
    ENDIF
RETURN .T.


 


Salu2
User avatar
Willi Quintana
 
Posts: 1002
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 69 guests