• Jueves 25 de Abril de 2024, 04:22

Autor Tema:  Agregar metodo click a un boton desde una funcion  (Leído 2382 veces)

lbny

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Agregar metodo click a un boton desde una funcion
« en: Domingo 22 de Marzo de 2009, 22:57 »
0
Hola amigos.

Ante todo un saludo ya que es mi primer mensaje en el grupo. Estoy
migrando una aplicacion de la empresa que esta hecha en Fox 2.6 para
DOS a Visual FoxPro9. Tengo un problema que quizas es un poco tonto
pero que no encuentro solucion ya que me estoy familiarizando con la
plataforma.

Tengo que crear una funcion que genere unos botones, de modo que la
persona que vaya a usar esta funcion, unicamente ponga en el codigo

Boton("Hola","Funcion a ejecutar") y este comando lo que haga es crear
un boton con el Caption "Hola" y cuando le des click ejecute la
funcion que desea (previamente declarada en alguna parte del codigo).
Hasta ahora me funciona bien para dibujar los botones, pero no puedo
crearle el metodo Click a los botones, me genera cantidad de errores
usando distintos comandos como BindEvent, Define Click, etc. No se si
alguien puede instruirme un poco a ver como es la mejor forma de
generar esto. Aqui le senvio mi codigo.

Public oHandler

* Variables Globales

PUBLIC gnPosicionx,gnPosiciony,gnContador,gcNombreboton

gnContador = 9
gnPosicionx = 10
gnPosiciony = 0

Set Talk Off

DO FORM home.scx

Boton("Hola")
Boton("Chao")

Set Talk On
RETURN

FUNCTION Boton (nombre)

        gnContador = gnContador+1
        gcNombreboton = "boton" + TRIM(STR(gnContador,2))
        gnPosiciony = gnPosiciony + 30

        With home
          .AddObject ('boton', 'commandbutton')
          With .boton
           .Caption = nombre
           .Top = gnPosiciony
           .Left = 10
           .Height = 27
           .Name = gcNombreboton
           .Visible = .T.
          Endwith

        Endwith

RETURN

andres24hs

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: Agregar metodo click a un boton desde una funcion
« Respuesta #1 en: Martes 28 de Abril de 2009, 01:38 »
0
Hola!!! no te será mas sencillo creando una clase propia?
Hace lo siguiente:
pega un boton en un formulario cualquiera, dale el tamaño, el tipo de letra, colores, etc que quieras que tenga. Después ingresa el siguiente código
En el evento Init:

parameters nombre,funcion            // nombre: es el caption que va a tomar el boton y funcion es la funcion que se va a ejecutar al darle un click
this.caption=nombre      
this.AddProperty("faLlamar",funcion)   // agrega una nueva propiedad al boton que va a contener la funcion a llamar

En el evento Click:
local xfunc
 xfunc=this.faLlamar
 &xfunc

bueno, hasta ahora no es mas que un simple boton. Para guardarlo como una clase, dale un click al boton y despues seleccioná en el menú de visual fox
Archivo
Guardar como Clase
ahi se te abre una ventana donde le tenés que indicar:
en el campo Nombre el nombre que va a tener la clase ej: MiBoton
y en Archivo tenes que indicarle el contenedor de clases (lo tenés que haber creado antes desde la oreja Clases del proyecto)
y listo!!! tenes la clase creada.
al crear el boton tenés que ingresar:
thisform.addobject("elBoton","MiBoton","Caption","Funcion")
donde "elBoton" va a ser el nombre del objeto de clase "MiBoton" y se va a inicializar con los parametros "Caption" y "Funcion".
espero que te sea util
Suerte