FoxPro/Visual FoxPro - form1 a form2 despues de report

   
Vista:

form1 a form2 despues de report

Publicado por Luis Manuel softhard_sa@msn.com (1 intervención) el 06/12/2015 09:34:48
Imprimo con un
report form reporte.frx preview

luego llama a un formulario
do form formulario
en formulario solicito del primer formulario (form1)

form1.form1.texto1.Enabled = .t.
form1.form1.texto1.TabStop = .t.
form1.form1.texto1.ReadOnly = .f.

me dá el mensaje de error
object form1 is not found

si este proceso lo hago sin ejecutar un do form, no hay problema
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

form1 a form2 despues de report

Publicado por Fidel José (320 intervenciones) el 06/12/2015 16:49:52
No entiendo qué tiene que ver el report en este tema.
El problema es pensar que los formularios toman el nombre del scx cuando se instancian, cosa que solamente ocurre cuando se instancias desde un Command de Menu o desde la ventana de comandos, y en la medida en que sea instancia única del form.
Si vas a llamar al "Form1" (vaya nombre) desde cualquier punto de la interfaz, tenés que asignar o detectar el nombre del form al instanciarlo.
Hay varias soluciones para ello, de las cuales te paso 2 posibles:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
*1) Válido para cualquier formulario
ADDPROPERTY(_Screen,"oform1",null)       && creo una propiedad en _screen
DO FORM FORM1 NAME _Screen.Oform1
 
*2) Válido solamente para formularios ShowWindow=0
LOCAL lnForms
LnForms = _Screen.formCount
ADDPROPERTY(_Screen,"oform1",null)       && creo una propiedad en _screen
DO FORM FORM1
IF _Screen.FormCount > m.lnForms
	_Screen.oform1 = _Screen.Forms(1)
ENDIF
 
* En cualquier lugar de la interfaz
IF VARTYPE(_screen.oform1)="O"
	_screen.oform1.Text1.Enabled = .f.
	_Screen.oform1.Metodo_Ejecuta()
ENDIF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar