FoxPro/Visual FoxPro - clase!!

   
Vista:

clase!!

Publicado por PROGRAMADORA (37 intervenciones) el 10/06/2009 16:58:30
hola chicos espero puedan ayudarme como siempre!!! y gracias de antemano.
Ahora tengo el problema de que hice un boton y le puse el siguiente codigo:

LOCAL oSearchDlog
LOCAL lVisChange,lStateChange

* Check if SDI Window
IF THISFORM.ShowWindow = 2
IF !_VFP.Visible
_VFP.Visible = .T.
lVisChange = .T.
ENDIF
IF _SCREEN.WindowState = 1
_SCREEN.WindowState = 0
lStateChange = .T.
ENDIF
ENDIF

oSearchDlog = CREATE ("searchform")
oSearchDlog.SHOW()

IF m.lVisChange
_VFP.Visible = .F.
ENDIF
IF m.lStateChange
_SCREEN.WindowState = 1
ENDIF

IF THISFORM.ShowWindow = 2
Activate Window (THISFORM.Name)
ENDIF

* Reset from prior
TopFile = .F.
EndFile = .F.

THISFORM.Refresh

y al ejecutarlo me marca el error: NO SE ENCUENTRA LA DEFINICION DE LA CLASE SEARCHFORM

que hago?? pueden ayudarme?? porfis
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

RE:clase!!

Publicado por sergio (697 intervenciones) el 10/06/2009 17:11:55
Hola
Fijate si tenes puesto el
set classlib to c:searchform
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

RE:clase!!

Publicado por PROGRAMADORA (37 intervenciones) el 10/06/2009 18:21:19
gracias sergio de verdad!!!! ya me funciono, pero con otro error.....podrias ayudarme:

INCOMPATIBILIDAD ENTRE EL TIPO DE OPERADOR Y EL TIPO DE OPERANDO...

y aparte cuando le estoy haciendo los cambio y lo corro si me aparece, pero cuando corro ya todo el programa me sigue marcando el mismo error que puedo hacer???
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

RE:clase!!

Publicado por Ernesto Hernandez (4632 intervenciones) el 10/06/2009 18:31:22
* Reset from prior
TopFile = .F.
EndFile = .F.


estas de donde vienen ??
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
Imágen de perfil de Mauricio

Clase!!

Publicado por Mauricio (1368 intervenciones) el 10/06/2009 22:06:37
Martha, esa clase la tienes con extensio RAR?
Primero debes pasarle el programa WINRAR para desempacarlo y luego copiarlo en la libreria donde lo usaras, me parece que no lo has desempacado y lo has copiado con la extension RAR asi nunca VFP te la va a reconocer......
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

RE:clase!!

Publicado por Jose Gamboa (33 intervenciones) el 11/06/2009 00:32:50
Hola!
Fijate si esta bien definida la clase search form y sobre todo si el evento init de la misma tiene algun parametro que a fuerza tenga que validar, ya que por ejemplo por lo que tienes en el codigo solo creas el objeto y lo muestras, pero no sabemos acerca de la definicion de clase, si en el evento init, load, show, activate o cualquiera de la clase searchform tiene algun parametro que necesite ser pasado desde el programa que lo llame pues por eso te esta dando el error ya que no le estas pasando ningun parametro a los eventos u otorgando algun valor a alguna propiedad que lo necesite ej. si necesita un valor caracter, numerico o de fecha se esta pasando puro logico como .F.
El error que mencionas en tu ultimo post es porque estas intentando sumar por ej 1 + "a" o comparar "a" = 1 o 1 + date(), etc....
una sugerencia, cuando surge el error suspende y revisa el codigo con el debug para verificar toda la linea donde se dio el error.
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

RE:clase!!

Publicado por PROGRAMADORA (37 intervenciones) el 11/06/2009 16:30:31
hola jose gamboa, gracias por tu aportacion y ayuda, mira hice lo que me comentas del error y efectivamente es error de comparacion, pero como hago para modificarlo!!! mira este es el error y es en el combo

#DEFINE NUM_AFIELDS 16
LOCAL i
PUBLIC aWizFList
DIMENSION aWizFList[1]
=AFIELDS(aWizFList)
FOR m.i = FCOUNT() TO 1 STEP -1
IF INLIST(aWizFList[m.i,2],"G","M","U") &&Memo field
=ADEL(aWizFList,m.i)
DIMENSION aWizFList[MAX(1,ALEN(aWizFList,1)-1),NUM_AFIELDS]
ENDIF
ENDFOR
THIS.RowSourceType = 5
THIS.RowSource = "aWizFList"
THIS.VALUE = THIS.LIST[1]

y justo en la linea del IF INLIST es donde me marca el error, como ves que puedo hacer??????
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

RE:clase!!

Publicado por Jose Gamboa (33 intervenciones) el 11/06/2009 17:10:20
Hola Programadora
Ya corri la clase con muchas formas posibles para que me de un error y no obtuve uno como el tuyo, estoy en shock, para poderte ayudar mejor corre de nuevo la clase y en el debuger puedes ir checando los valores de las variables de cada metodo en el seguimiento paso a paso. ej.
antes de ejecutar el sig codigo en tu boton agrega un comando

DEBUG
SUSPEND
oSearchDlog = CREATE ("searchform")

esto te enviara al debuger y de ahi vas presionando la tecla F8 para ir avanzando linea por linea, cuando llegues al evento init del searchform vas mas lento. todo se debe ejecutar bien hasta llegar al
FOR m.i = FCOUNT() TO 1 STEP -1
&& cuando llegues a este punto revisa el valor de m.i solo coloca el cursor del mouse sobre la variable y te dara el valor, debe ser numerico en esta parte el programa esta recorriendo de forma descendente por todos los nombres de campo en la tabla seleccionada actualmente, la instruccion corre si hay una tabla seleccionada, y si hay una pues debe de tener por lo menos un campo asi que ese no es el problema, al presionar F8 nuevamente vas a entrar al if, antes de presionar otra vez F8 verifica el valor del array aWizFList[mi, 2] el array guarda las propiedades de los campos en la tabla y la columna 2 del array guarda el tipo de campo en formato caracter por lo que aWizFList[m.i, 2] te debe devolver un valor de tipo caracter y de longitud 1 si es asi presiona F8 y debe pasar por los siguientes comandos sin error y le sigues haciendo asi hasta que te marque un error
IF INLIST(aWizFList[m.i,2],"G","M","U") &&Memo field
=ADEL(aWizFList,m.i)
DIMENSION aWizFList[MAX(1,ALEN(aWizFList,1)-1),NUM_AFIELDS]
ENDIF
ENDFOR
por cierto copia los valores al entrar al for para verificar los datos de
m.i para saber en que numero de campo esta el error
FCount() para saber cuantos campos tiene tu tabla
Alias() para saber como se llama tu tabala seleccionada
aWizFList[mi, 2] para saber el tipo de campo que se esta comparando
aWizFList[mi, 1] para saber el nombre del campo que se esta comparando

*** el debug paso a paso te permite ir verificando si de verdad el error ocurre en esa linea o antes... *** chekalo y me avisas
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

RE:clase!!

Publicado por PROGRAMADORA (37 intervenciones) el 11/06/2009 17:34:31
hola jose!! gracias mil... dejame checarlo ya mismo y te aviso sale?
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

RE:clase!!

Publicado por Jose Gamboa (33 intervenciones) el 11/06/2009 16:46:15
Estoy probando la clase, ya que en lo personal no la habia utilizado, por lo que veo es la clase searchform de wizbtns.
El funcionamiento es a tra vez de una tabla en seleccion toma los nombres de los campos y los envia al combo, no deberias de tener problemas ya que es una clase predefinida y al ejecutarla asi como lo haces, si no hay una tabla abierta te deberia tirar un error de que no hay una tabla abierta en el area actual o algo asi. voy a correrla en varias formas y te comento.
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

RE:clase!!

Publicado por PROGRAMADORA (37 intervenciones) el 11/06/2009 18:09:11
hola, ya estuve checando y m.i.=65 y conforme doy F8 va disminuyendo a 64,3 etc.. pero me vuelve a marcar el mismo error en algunos numeros y es justamente en el IF INLIST... y no se que mas puedo hacer............
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

RE:clase!!

Publicado por PROGRAMADORA (37 intervenciones) el 11/06/2009 18:13:29
perdon me falto poner que la aWizFlist(m.i.,2) me marca que es igual a L y no se si es porque es local o que onda, por otra parte =ADEL.... si me marca la variable que estoy utilizando, entonces no se de donde sale esa L y como corregir el error....
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

RE:clase!!

Publicado por Jose Gamboa (33 intervenciones) el 12/06/2009 18:08:15
Programadora!
Hola mil disculpas por no contestarte mas, estaba buscando la solucion a tu problema experimentando en tablas diferentes que tengo, y por fin di con una que me reproducia tu error al pie de la letra.
¡El problema esta en el codigo de la clase searchclass dentro de wizbtns, LA PRIMERA LINEA #DEFINE NUM_AFIELDS 16 cambia el 16 x 18 ya que en vfp 9 en lugar de tomar 16 propiedades toma 18
con eso debe quedar resuelto tu problema, creo que habias estando utilizando vfp6 y cambiaste al 9 y por eso el problema, pero ya con eso debe quedar.
Bye, que tengas buen fin de semana y ojala con esto ya pueda descansar un poco el coco!!
jjj
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

RE:clase!!

Publicado por Pablo (Argentina) (433 intervenciones) el 11/06/2009 23:29:11
Hola PROGRAMADORA veo que estas con Jose tratando de resolver tu problema, a mi jose me ayudo bastante con una problema y lo pude resolver asi que seguro te va a ayudar como lo hacen todos aca.
Bueno en fin veo que tenes un problema con llamar al Seachform de la clase WZSTYLE, ¿puede ser?.
Aca te paso el codigo que yo utilizo en mi boton de buscar y hago lo mismo y ami me funciona perfectamente, por ahi es un tema de ser classlib to o definir bien el tema de donde estan las clase, no se. Te lo paso por ahi ves alguna diferencia y te sirve de algo, A mi me FUNCIONA perfecto. Avisame sino te anduvo y seguimos buscando

Ya te antemano te voy diciendo que uno de los erros lo tenes a final tn el topfile y el endfile. Va asi
*THIS.Parent.TopFile = .F.
*THIS.Parent.endfile = .F.

Fijate bien todo el ejemplo de abajo y te das cuenta, espero te sirva

SET CLASSLIB TO WIZSTYLE
LOCAL oSearchDlog
LOCAL lVisChange,lStateChange

* Checkar if SDI Window
IF THISFORM.ShowWindow = 2
IF !_VFP.Visible
_VFP.Visible = .T.
lVisChange = .T.
ENDIF
IF _SCREEN.WindowState = 1
_SCREEN.WindowState = 0
lStateChange = .T.
ENDIF
ENDIF

oSearchDlog = CREATE("searchform")
oSearchDlog.SHOW()

IF m.lVisChange
_VFP.Visible = .F.
ENDIF
IF m.lStateChange
_SCREEN.WindowState = 1
ENDIF

IF THISFORM.ShowWindow = 2
Activate Window (THISFORM.Name)
ENDIF
*THIS.Parent.TopFile = .F.
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

RE:clase!!

Publicado por PROGRAMADORA (37 intervenciones) el 12/06/2009 17:43:01
hola pablo mil gracias por tu ayuda y la de todos en el foro, ya intente con tu codigo pero me sigue marcando el mismo error, y creo que tiene que ver con las variables pero no se donde acomodarlas, porque entre al debug pero no me permite hacer correcciones, pueden ayudarme porfis!!!!!!!!!!
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

RE:clase!!

Publicado por Jose Gamboa (33 intervenciones) el 12/06/2009 18:12:48
Programadora!
Hola mil disculpas por no contestarte mas, estaba buscando la solucion a tu problema experimentando en tablas diferentes que tengo, y por fin di con una que me reproducia tu error al pie de la letra.
¡El problema esta en el codigo de la clase searchclass dentro de wizbtns, LA PRIMERA LINEA #DEFINE NUM_AFIELDS 16 cambia el 16 x 18 ya que en vfp 9 en lugar de tomar 16 propiedades toma 18
con eso debe quedar resuelto tu problema, creo que habias estando utilizando vfp6 y cambiaste al 9 y por eso el problema, pero ya con eso debe quedar.
Bye, que tengas buen fin de semana y ojala con esto ya pueda descansar un poco el coco!!
jjj
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

RE:clase!!

Publicado por PROGRAMADORA (37 intervenciones) el 12/06/2009 19:49:46
gracias mil!!!! Jose, y disculpa por tanto dolor de cabeza jejeje, pero no puedo cambiar la clase a 18 como me dices, o donde la puedo cambiar y si he utilizado vfp9 no el 6, ayuda porfis es lo ultimo para que ya descanse tu coquito si?
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

RE:clase!!

Publicado por Jose Gamboa (33 intervenciones) el 15/06/2009 16:39:47
Hola programadora
No entre el fin de semana ya que accedo desde mi trabajo.
en la pestaña de clases ubica la clase wizbtns.
abre la clase y busca la subclase searchclass.
El form tiene esta clase insertada por lo que no es la principal, para hacer la modificacion tienes que ir a la principal que es esta. (searchclass)
Entra al codigo init del CboFields1 y ahi camboa el 16 x el 18 y listo
eso si
verifica que sea la clase qe estas usando y no una copia, en dado caso busca cualquier clase llamada wizbtns y modifica ahi tambien el codigo
Si pusiste el set classlib to con una direccion de donde esta ubicada la clase, pues mas facil
entra al menu de vfp tools y selecciona class browser, ahi busca el boton abrir que es el de la carpetita, busca en tu disco la clase y la abres, ahi busca searchclass y modifica el codigo.
Nuevamente, mil disculpas
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

RE:clase!!

Publicado por PROGRAMADORA (37 intervenciones) el 22/06/2009 17:52:58
MIL GRACIAS JOSE!!!! PROBLEMA RESUELTO, SEGUIMOS EN CONTACTO
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