Page 1 of 1

Una Ayudita por favor

Posted: Wed May 14, 2025 9:53 pm
by LOUIS
Saludos Amigos, ... saben tengo un problemilla que no puedo solucionar, se trata de crear muchos botones, pero en seguidilla, con una sola línea, el problema es que cuando doy click en cualquier botón, no puedo capturar su contenido, les comparto el código para que lo vean ...

Code: Select all

F=25
C=10
SER='ABCDEFGHIJKLMNOPQRSTUVXYZ'		// 25 LETRAS
FOR i:=1 TO 25
    BT = "BT" + ALLTRIM(STR(i))
    SE = SUBSTR(SER, i, 1)
    @ F,C BUTTON &BT PARENT MAIN CAPTION SE WIDTH 35 HEIGHT 40 ONCLICK COMPRUEBA(????)
    C=C+45
NEXT
RETURN

*-----------------------
FUNCTION COMPRUEBA(????)
MSGINFO (????)			// POR EJEMPLO SI PULSO EL BOTÓN M, ME MUESTRE O ME DIGA QUE PULSÉ EL BOTÓN M
RETURN
Me pinta los 25 Botones con cada Letra, pero al dar click no sé cómo capturar dicha letra :oops:

Agradezco mucho que me den una manito por favor.
De antemano Muchas Gracias
Louis

P.D.- Compilo con la versión 3.4.0

Re: Una Ayudita por favor

Posted: Wed May 14, 2025 10:11 pm
by ASESORMIX
....onclick comprueba(&se)

Re: Una Ayudita por favor

Posted: Thu May 15, 2025 1:11 am
by LOUIS
Gracias por responder ASESORMIX, pero no funciona :cry:
Al pulsar cualquier letra sale lo mismo ... Variable no existe
He puesto las letras (A, B, C, ... Z) como Local y como Public y no funciona.

Re: Una Ayudita por favor

Posted: Thu May 15, 2025 2:11 am
by martingz
espero te sirva


F=25
C=10
SER='ABCDEFGHIJKLMNOPQRSTUVXYZ' // 25 LETRAS
FOR i:=1 TO 25
BT = "BT" + ALLTRIM(STR(i))
SE = SUBSTR(SER, i, 1)
@ F,C BUTTON &BT PARENT MAIN CAPTION SE WIDTH 35 HEIGHT 40 action {||COMPRUEBA(this.name)})
C=C+45
NEXT
RETURN

*-----------------------
FUNCTION COMPRUEBA(????)
MSGINFO (????) // POR EJEMPLO SI PULSO EL BOTÓN M, ME MUESTRE O ME DIGA QUE PULSÉ EL BOTÓN M
RETURN

Re: Una Ayudita por favor

Posted: Thu May 15, 2025 3:07 pm
by LOUIS
Hola Martín

Muchas gracias por su ayuda, funcionó muy bien :)

Re: Una Ayudita por favor

Posted: Thu May 15, 2025 10:12 pm
by mol
You can define hidden textbox control and do it as:

Code: Select all

function Comprueba
  param cVal
  Main.YourTexBox.Value := cVal
 return

Re: Una Ayudita por favor

Posted: Fri May 16, 2025 1:08 pm
by ASESORMIX
Otra manera, mas artesanal pero funcional:

Code: Select all

#include "hmg.ch"

Function Main

	DEFINE WINDOW Win_1 ;
		ROW 0 ;
		COL 0 ;
		WIDTH 999 ;
		HEIGHT 400 ;
		TITLE 'Hello World!' ;
		WINDOWTYPE MAIN  
F=25
C=10
SER='ABCDEFGHIJKLMNOPQRSTUVXYZ'		
FOR i:=1 TO len(SER) 
    BT = "BT" + ALLTRIM(STR(i))
    SE = SUBSTR(SER, i, 1)
    FF := "COMPRUEBA('"+SE+"')"
    @ F,C BUTTON &BT PARENT MAIN CAPTION SE WIDTH 35 HEIGHT 40 ACTION &FF 
    C=C+45
NEXT
	END WINDOW

	Win_1.Center

	Win_1.Activate

Return

FUNCTION COMPRUEBA(_L1)
 MSGINFO(_L1)			
RETURN