If Button was clicked

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
LOUIS
Posts: 256
Joined: Tue Dec 11, 2012 9:05 pm
DBs Used: DBF

If Button was clicked

Post by LOUIS »

HOLA AMIGOS:
Tengo una inquietud, si tengo 2 Buttons ...

@ 200,300 BUTTON Button_1 PARENT CARGA CAPTION "AZUL" ONCLICK LLENA()
@ 200,400 BUTTON Button_2 PARENT CARGA CAPTION "ROJO" ONCLICK LLENA()

Cómo puedo saber si fue clickeado el primero o el segundo Button ?

Es para tener una sola function llamada LLENA

***********************
Function LLENA
IF Button.Button_1 = ????? <--- Qué debería escribir ?
quim=5
lato=2.6
fuel=0.9
ELSE
quim=2
lato=6.0
fuel=1.5
ENDIF
***********************

Gracias por su amabilidad ...
EduardoLuis
Posts: 684
Joined: Tue Jun 04, 2013 6:33 pm
Location: Argentina

Re: If Button was clicked

Post by EduardoLuis »

Hola Louis:

Prueba esto

#include <hmg.ch>
#include "hfcl.ch"

PRIVATE resp

DEFINE WINDOW LLENADOR ;
ROW 0 ;
COL 0 ;
WIDTH 600 ;
HEIGHT 420 ;
TITLE 'EXAMPLE' ; //
ON INIT NIL ;
MAIN

ON KEY ESCAPE ACTION ThisWindow.Release


@ 200,300 BUTTON Button_1 PARENT CARGA CAPTION "AZUL" ACTION ( resp := "A", LLENANDO() )
@ 200,400 BUTTON Button_2 PARENT CARGA CAPTION "ROJO" ACTION ( resp := "R", LLENANDO() )

END WINDOW

CENTER Window LLENADOR

ACTIVATE Window LLENADOR

RETURN


***********************
PROCEDURE LLENANDO
IF resp == "A"
quim=5
lato=2.6
fuel=0.9
MSGINFO("Pulse el botón Azul" , "AVISO")
ELSEIF resp == "R"
quim=2
lato=6.0
fuel=1.5
MSGINFO("Pulse el botón Rojo" , "AVISO")
ENDIF
RETURN
***********************
User avatar
luisvasquezcl
Posts: 1259
Joined: Thu Jul 31, 2008 3:23 am
Location: Chile
Contact:

Re: If Button was clicked

Post by luisvasquezcl »

Hola,
hay una propiedad de la ventana que te permite saber el control que tiene el foco y que será el que dispara el evento, el boton1 o 2

Code: Select all

#include <hmg.ch>
#include "hfcl.ch"

PRIVATE resp

DEFINE WINDOW LLENADOR ;
ROW 0 ;
COL 0 ;
WIDTH 600 ;
HEIGHT 420 ;
TITLE 'EXAMPLE' ; // 
ON INIT NIL ; 
MAIN

ON KEY ESCAPE ACTION ThisWindow.Release


@ 200,300 BUTTON Button_1 PARENT CARGA CAPTION "AZUL" ACTION LLENANDO()  
@ 200,400 BUTTON Button_2 PARENT CARGA CAPTION "ROJO" ACTION LLENANDO() 

END WINDOW 

CENTER Window LLENADOR

ACTIVATE Window LLENADOR

RETURN 


***********************
PROCEDURE LLENANDO
IF  LLENADOR.FocusedControl = "BUTTON_1"
quim=5
lato=2.6
fuel=0.9
MSGINFO("Pulse el botón Azul" , "AVISO")
ELSEIF LLENADOR.FocusedControl = "BUTTON_2"
quim=2
lato=6.0
fuel=1.5
MSGINFO("Pulse el botón Rojo" , "AVISO")
ENDIF
RETURN
********************
espero te sea de utilidad,
Saludos cordiales,
Luis Vasquez.
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: If Button was clicked

Post by andyglezl »

Es simple...

Solo pasa como parámetro a tu función el # de Botón

@ 200,300 BUTTON Button_1 PARENT CARGA CAPTION "AZUL" ONCLICK LLENA("1")
@ 200,400 BUTTON Button_2 PARENT CARGA CAPTION "ROJO" ONCLICK LLENA("2")

*************************************************************
Function LLENA( Btn )
IF Btn = "1"
....
ELSEIF Btn = "2"
....
ELSE
.....
ENDIF
Andrés González López
Desde Guadalajara, Jalisco. México.
User avatar
LOUIS
Posts: 256
Joined: Tue Dec 11, 2012 9:05 pm
DBs Used: DBF

Re: If Button was clicked

Post by LOUIS »

Muchas gracias EduardoLuis
me funcionó perfecto con tu ejemplo

Gracias también a Luis Vasquez y Andrés Gonzalez, tomaré vuestras sugerencias para también hacerlo
de otra manera.

Gracias de nuevo, son Uds muy amables :)
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: If Button was clicked

Post by Javier Tovar »

Hola LOUIS,

Recuerda que existe tambien en control CheckButton:

Code: Select all

@...CHECKBUTTON / DEFINE CHECKBUTTON
Creates a CheckButton control
 
 
 
Standard Syntax (xBase Style):
 
 
      @ <nRow> ,<nCol>
            CHECKBUTTON<ControlName>
            [ OF | PARENT <ParentWindowName> ]
            CAPTION <cCaption> | PICTURE <cPictureName>
            [ WIDTH <nWidth>] [ HEIGHT <nHeight> ]
            [ VALUE <lValue> ]
            [ FONT <cFontName> SIZE <nFontSize> ]
            [ BOLD ] [ ITALIC ] [ UNDERLINE ] [ STRIKEOUT ]
            [ TOOLTIP <cToolTipText> ]
            [ ON GOTFOCUS <OnGotFocusProcedur> | <bBlock> ]
            [ ON CHANGE <OnChangeProcedure> | <bBlock> ]
            [ ON LOSTFOCUS <OnLostFocusProcedure> | <bBlock> ]
            [ HELPID <nHelpId> ]
            [ INVISIBLE ]
            [ NOTABSTOP ]
            [ NOTRANSPARENT ] 
 
 
Alternate Syntax:
 
 
      DEFINE CHECKBUTTON <Controlname>
            PARENT <ParentWindowName>
            ROW <nValue> 
            COL <nValue>
            CAPTION <cValue> 
            WIDTH <nValue>
            HEIGHT <nValue>
            FONTNAME <cValue>
            FONTSIZE <nValue>
            FONTBOLD <lValue>
            FONTITALIC <lValue>
            FONTUNDERLINE <lValue>
            FONTSTRIKEOUT <lValue>
            TOOLTIP <cValue>
            ONGOTFOCUS <ActionProcedure>
            ONLOSTFOCUS <ActionProcedure>
            ONCHANGE <ActionProcedure>
            TABSTOP <lValue>
            HELPID <nValue>
            VISIBLE <lValue>
            TRANSPARENT <lValue>
      END CHECKBUTTON
 
 
Properties:
 
 
      - Value
      - Enabled
      - Visible
      - Row
      - Col
      - Width
      - Height
      - Caption
      - FontName
      - FontSize
      - FontBold
      - FontItalic
      - FontUnderline
      - FontStrikeout
      - ToolTip
      - Picture
      - Name (R)
      - Parent (D)
      - HelpId (D)
      - TabStop (D)
 
      D: Available at control definition only
      R: Read-Only
 
 
Events:
 
 
      - OnGotFocus
      - OnChange
      - OnLostFocus
 
 
Methods:
 
 
      - Show
      - Hide
      - SetFocus
      - Release
 
 
Note: Transparence in picture checkbuttons requires 256 or less color depth bitmaps.
 
 
ejemplo:

Code: Select all

lValorBoton := Win_1.MiButton_1.Value


IF lValorBoton = .T.   // IF lValorBoton
ELSE
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

MAIN.PRG

Code: Select all

#include <hmg.ch>

Function Main

PRIVATE lEstado := .F.

	SET TOOLTIPSTYLE BALLOON

	Load Window Main
	Center Window Main
	Activate Window Main

Return

PROCEDURE EstadoBoton()

IF Main.Image_Only_Button.Value
	MsgInfo("El boton esta Cliqueado")
ELSE
	MsgInfo("El boton NO esta Cliqueado")
ENDIF
MAIN.FMG

Code: Select all

* Harbour MiniGUI IDE Two-Way Form Designer Generated Code
* (c)2004-2007 Roberto Lopez <harbourminigui@gmail.com>
* http://harbourminigui.googlepages.com

DEFINE WINDOW TEMPLATE AT 132 , 257 WIDTH 251 HEIGHT 358 VIRTUAL WIDTH Nil VIRTUAL HEIGHT Nil TITLE "" ICON NIL MAIN CURSOR NIL ON INIT Nil ON RELEASE Nil ON INTERACTIVECLOSE Nil ON MOUSECLICK Nil ON MOUSEDRAG Nil ON MOUSEMOVE Nil ON SIZE Nil ON MAXIMIZE Nil ON MINIMIZE Nil ON PAINT Nil BACKCOLOR Nil NOTIFYICON NIL NOTIFYTOOLTIP NIL ON NOTIFYCLICK Nil ON GOTFOCUS Nil ON LOSTFOCUS Nil ON SCROLLUP Nil ON SCROLLDOWN Nil ON SCROLLLEFT Nil ON SCROLLRIGHT Nil ON HSCROLLBOX Nil ON VSCROLLBOX Nil

    DEFINE BUTTON Text_And_Image_Button
        ROW    90
        COL    20
        WIDTH  190
        HEIGHT 100
        ACTION MsgInfo('Text And Image Button')
        CAPTION "Text And Image"
        FONTNAME "Arial"
        FONTSIZE 9
        TOOLTIP "Text And Image Button"
        FONTBOLD .F.
        FONTITALIC .F.
        FONTUNDERLINE .F.
        FONTSTRIKEOUT .F.
        ONGOTFOCUS Nil
        ONLOSTFOCUS Nil
        HELPID Nil
        FLAT .F.
        TABSTOP .T.
        VISIBLE .T.
        TRANSPARENT .F.
        PICTURE "BUTTON.BMP"
        PICTALIGNMENT TOP
    END BUTTON

    DEFINE BUTTON Text_Only_Button
        ROW    20
        COL    20
        WIDTH  190
        HEIGHT 60
        ACTION MsgInfo('Text Only Button')
        CAPTION "Text Only"
        FONTNAME "Arial"
        FONTSIZE 9
        TOOLTIP "Text Only Button"
        FONTBOLD .F.
        FONTITALIC .F.
        FONTUNDERLINE .F.
        FONTSTRIKEOUT .F.
        ONGOTFOCUS Nil
        ONLOSTFOCUS Nil
        HELPID Nil
        FLAT .F.
        TABSTOP .T.
        VISIBLE .T.
        TRANSPARENT .F.
        PICTURE Nil
        PICTALIGNMENT TOP
    END BUTTON

    DEFINE CHECKBUTTON Image_Only_Button
        ROW    200
        COL    20
        WIDTH  190
        HEIGHT 100
        ACTION MsgInfo ('Image Only Button')
        CAPTION Nil
        FONTNAME "Arial"
        FONTSIZE 9
        TOOLTIP "Image Only Button"
        FONTBOLD .F.
        FONTITALIC .F.
        FONTUNDERLINE .F.
        FONTSTRIKEOUT .F.
		ONCHANGE EstadoBoton()
        ONGOTFOCUS Nil
        ONLOSTFOCUS Nil
        HELPID Nil
        FLAT .F.
        TABSTOP .T.
        VISIBLE .T.
        TRANSPARENT .F.
        PICTURE "button.bmp"
        PICTALIGNMENT TOP
    END CHECKBUTTON

END WINDOW



Saludos
Post Reply