RE:COMO CREAR UN COMMANDBUTTON EN TIEMPO DE EJECUC
1) Lo mejor es crear un commandbutton de clase en una vcx y agregarlo, ya con su código en el evento click
2) Si usas VFP8 o superior, puedes utilizar BINDEVENT() para asignarle una acción a un commandbutton de base
thisform.newobject("cmdSaludos","commandbutton")
with thisform.cmdSaludos
.top=lnTop
.left=lnLeft
.Height=lnHeight
.Width=lnWidth
.Caption="Saludar"
.Visible=.t.
endwith
BINDEVENT(thisform.cmdSaludos,"Click", Thisform , "cdlg_Saludos")
Agregas un método al form, con el nombre "cdlg_Saludos" y en el pones el código que necesitas. Como puede que existan varios botones con liados, te conviene saber en cuál se hizo click
*<Método cdlg_Saludos>
LOCAL lnEvents,locmd
local array gaEvents(1)
lnEvents=AEVENTS(gaEvents,0)
if lnEVents=0
REturn
endif
loCmd=gaEvents[1] && loCmd tiene la referencia del botón que se apretó
do case
case loCmd.Name="cmdSaludos"
Messagebox("Buenos días señor")
otherwise
endcase
*</Metodo cdlg_Saludos>
También se pueden utilizar las propiedades Tag y Comment del objeto, con lo cual puedes darle alguna particularidad precisa a cada botón, para generar una acción determinada con DO CASE / ENDCASE.
Recomendación:
No utilices hilos viejos. Crea un nuevo hilo, de lo contrario serán vistos solamente por algunos.