pasar valor desde una clase.vcx a un textbox de un form

80 views
Skip to first unread message

Saúl Piña

unread,
Apr 2, 2015, 10:32:27 AM4/2/15
to publice...@googlegroups.com
Saludos, intento hacer que desde una clase vcx (donde tiene unas opciones de busqueda). que una vez que tenga el valor de la clave cerrar la clase vcx y obtener el valor e inmediatamente despues de cerrar la clase que la clave o valor se muestre en el textbox.

Gracias.


Fidel Charny

unread,
Apr 2, 2015, 11:36:43 AM4/2/15
to publice...@googlegroups.com
La vcx es un archivo que contiene una o más clases. Tienes que ver en qué clase tienes las opciones de búsqueda. Esa clase deberá devolver un valor o un objeto empty. Alternativamente, podría actualizar el valor de un textbox si pasas la referencia de objeto como parámetro.
Pero mejor cuéntanos un poco más.

Jhonny Zambrana

unread,
Apr 2, 2015, 1:07:26 PM4/2/15
to publice...@googlegroups.com
la inocherencia está en que no puedes obtener nada de una clase que ya esta cerrada, en el mindo realpuedes ver atra vez de una puerta cerrada????.
lleva a memoria primero tu datonates de cerrar la clase.

ZeRoberto

unread,
Apr 2, 2015, 1:09:20 PM4/2/15
to publicesvfoxpro
Yo haria algo parecido a esto

Clase VCX
PORCEDURE Buscar(tcBuscar)
Local lcResult
     lcResult = ""
     lnCode = SQLExec(gHandle, "SELECT * FROM Tabla WHERE Codigo = ?tcBuscar", "dbBuscado")
     If lnCode > 0
        lcResult = dbBuscado.Descripcion
     EndIf
     Use In Select("dbBuscado")
     RETURN (lcResult)
ENDPROC

En evento Valid del TextBox
PROCEDURE Valid()
      loBuscar = NewObject("clsBuscar", "Busquedas.vcx")
      This.Value = loBuscar.Buscar(This.Value)
ENDPROC

Saul Piña Hernandez

unread,
Apr 2, 2015, 3:31:49 PM4/2/15
to publice...@googlegroups.com
Saludos Fidel,


Tengo creado un vcx en donde tengo un formulario "consultas" que quiero utilizar para realizar busqueda en una tabla y mostrar en un grid, para que al cerrar el form "consultas" que está en la clase, me devuelva el id o clave para mostrar los demás datos en los textboxs que están el form "principal".


el codigo que estoy utilizando es un ejemplo de Fernando DBozzo.

inicio con el codigo en un boton llamado "clientes"    ---- Es para invocar el formulario
 loForm = NEWOBJECT("frm_consulta_clientes", "form_consultas.vcx")
   THISFORM.oform = loForm
   *loForm.MOVE(THISFORM.Line1.Left, THISFORM.Line1.Top + 6, THISFORM.Line1.Width, THISFORM.Height - THISFORM.Line1.Top - 20)
   loForm.BackColor = RGB(255,255,255)
   SHOW WINDOW (loForm.NAME) IN WINDOW (THISFORM.NAME)
   ACTIVATE WINDOW (loForm.NAME)

    
una vez que se invoca la clase vcx,  me muestra el form "consultas" que está en el vcx; todo sin ocultar mi form "principal" y despues de encontrar el registro, debo cerrar el form "consultas" que está en el vcx y aki está lo que estoy intentando y no he logrado:

que el id que yo haya elegido, se muestre en un textbox y se haga un valid para mostrar los demas datos en los textobx abajo.


codigo para elegir el id del registro:  (Este codigo está en el grid que se encuentra en el form de la clase vcx
pr5=MESSAGEBOX("Desea Agregar este Cliente?",4+32,"Atención")
IF pr5=6
nm=thisform.grid1.column1.text1.value
*WAIT WINDOW STR(nm)
*Thisform.t2.Value=nm
SELECT clientes
SET FILTER TO
 pClave_cliente = nm
thisform.Release
ENDIF



Las imagenes...



Víctor Hugo Espínola Domínguez

unread,
Apr 2, 2015, 4:38:32 PM4/2/15
to publice...@googlegroups.com
Hola Saúl

Bueno, ya habrás descubiero que mi nombre no esFidel, preo igual trataré de ayudarte:


loForm.BackColor = RGB(255,255,255)
   SHOW WINDOW (loForm.NAME) IN WINDOW (THISFORM.NAME)
   ACTIVATE WINDOW (loForm.NAME)


Thisform.t2.Value = loForm.
grid1.column1.text1.value

loForm.Release()

codigo para elegir el id del registro:  (Este codigo está en el grid que se encuentra en el form de la clase vcx
pr5=MESSAGEBOX("Desea Agregar este Cliente?",4+32,"Atención")
IF pr5=6
nm=thisform.grid1.column1.text1.value
*WAIT WINDOW STR(nm)
*Thisform.t2.Value=nm
SELECT clientes
SET FILTER TO
 pClave_cliente = nm

*------------thisform.Release

Thisform.Hide()
 
ENDIF

Saludos,
Víctor.
Lambaré - Paraguay.

Saul Piña Hernandez

unread,
Apr 2, 2015, 9:52:17 PM4/2/15
to publice...@googlegroups.com
Saludos Victor, gracias por tu valiosa ayuda..

con las lineas que me aconsejaste agregar, lo que hace es que se abre el form "consultas" (clase vcx) pero inmediatamente lo cierra, no siquiera me deja seleccionar el id...

gracias.

Víctor Hugo Espínola Domínguez

unread,
Apr 2, 2015, 10:27:46 PM4/2/15
to publice...@googlegroups.com
Hola Saúl

Prueba así:

loForm.BackColor = RGB(255,255,255)
*--   SHOW WINDOW (loForm.NAME) IN WINDOW (THISFORM.NAME)
*--   ACTIVATE WINDOW (loForm.NAME)


loForm.Show(1)

Thisform.t2.Value = loForm.
grid1.column1.text1.value

loForm.Release()


Saludos,
Víctor.
Lambaré - Paraguay.


Saul Piña Hernandez

unread,
Apr 2, 2015, 10:39:01 PM4/2/15
to publice...@googlegroups.com
Casi casi queda Amigo Victor,

pero me apareció este error....





Saul Piña Hernandez

unread,
Apr 2, 2015, 10:41:23 PM4/2/15
to publice...@googlegroups.com
Casi no se ve la imagen, pero el error es en la siguiente linea:


Thisform.t2.Value = loForm.grid1.column1.text1.value  <-----dice el error: LoForm is not an object


Gracias.

Víctor Hugo Espínola Domínguez

unread,
Apr 2, 2015, 11:12:16 PM4/2/15
to publice...@googlegroups.com
Hola Saúl

Es probable que en la clase frm_consulta_clientes haya algún RELEASE, no debe haber ninguno, verifica los métodos y eventos.

Saludos,
Víctor.
Lambaré - Paraguay.

Fidel Charny

unread,
Apr 3, 2015, 10:49:50 AM4/3/15
to publice...@googlegroups.com
Victor:
Lo que ocurre es que para salir del Windowtype=1 es necesario cerrar el form, de donde el objeto (loform) se vuelve null.
Para mí, lo mejor es pasar como parámetro al form de la vcx la referencia de objeto donde va el valor Thisform.t2.Value y tener un botón de Aceptar en ese form.
Entonces, en el init del form de clase:
LPARAMETERS toTextBox
Addproperty(thisform,"objRef",toTextBox)

En el botón de Aceptar del form de clase:
IF VARTYPE(Thisform.ObjRef)="O"        && por si se cerró el form ppal o no se pasó el parámetro
           thisform.objRef.Value=thisform.grid1.Column1.Text1.Value   && (o lo que fuere)
endif
thisform.release()

La llamada al form de clase debe modificarse así:
loForm = NEWOBJECT("frm_consulta_clientes", "form_consultas.vcx","", thisfom.t2)       && suponiendo que el cuadro de texto sea name="t2"
loForm.Show()

Víctor Hugo Espínola Domínguez

unread,
Apr 3, 2015, 8:48:30 PM4/3/15
to publice...@googlegroups.com
Hola Fidel

Adjunto un ejemplo.

Saludos,
Víctor.
Lambaré - Paraguay.

prbClassModal._rar
Reply all
Reply to author
Forward
0 new messages