Hola a todos,
Tengo necesidad de editar un campo memo y el programa falla, cuando era ms-dos iba perfecto pero ahora no me funciona, me sale el siguiente error:
Error description: Error FiveWin/3 Cannot create Dialog Box:
Title: Observacions
Para editar el campo uso la siguiente función:
FUNCTION OBSERVAC(NC)
LOCAL ANT:=NC
DEFINE DIALOG FINESTRA2 FROM 1,1 TO 200,500 TITLE "Observacions" FONT TLLETRA PIXEL
@ 10,10 GET NC SIZE 230,60 PIXEL MULTILINE OF FINESTRA2
@ 80,70 BUTTON "&D'acord" SIZE 50,12 ACTION FINESTRA2:END() PIXEL OF FINESTRA2
@ 80,130 BUTTON "Ca&ncel·lar" SIZE 50,12 ACTION (NC:=ANT, FINESTRA2:END()) PIXEL OF FINESTRA2
ACTIVATE DIALOG FINESTRA2 CENTERED
RETURN NIL
¿Es posible que sea demasiado grande le campo para hacerlo con un get?
Si es así, ¿como deberia hacerlo? Yo seimpre he usado esta funcion cuanod programaba en ms-dos y funcionaba, de hecho la base de datos proviene de la migración de la aplicación y alla iba perfectamente. De hecho con registros que tienen menos texto funciona bien.
Espero que me posais ayudar. Gracias.
Recuerdos,
Andrés
Problemas con campos memo
Andrés:
No hay limitaciones para usar campos MEMO con FW.
El tipo de error me hace suponer que no tienes bien definido el GET del campo memo, de hecho no es un GET "normal", en tus recursos lo debes definir como MULTI-LINEA y activarle el scroll vertical, ah, y te recomiendo que lo hagas más alto que un get "normal"
Saludos
No hay limitaciones para usar campos MEMO con FW.
El tipo de error me hace suponer que no tienes bien definido el GET del campo memo, de hecho no es un GET "normal", en tus recursos lo debes definir como MULTI-LINEA y activarle el scroll vertical, ah, y te recomiendo que lo hagas más alto que un get "normal"
Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Armando,
Gracias por contestar, paso a responder a tus cuestiones:
1. Yo leo la base da datos y pongo la información del registro en una tabla que uso para editar, por tanto la variable que estoy usando (NC) proviene de un campo memo de una base de datos.
2. Yo no uso recursos, lo hago directamente en el programa, da mas trabajo pero me permite controlar mejor _ y si esta definida la condición multilinea con lo cual el scroll vertical sale solo y ya tiene un tamaño mas grande que un get normal.
@ 10,10 GET NC SIZE 230,60 PIXEL MULTILINE OF FINESTRA2
Recuerdos,
Andrés
Gracias por contestar, paso a responder a tus cuestiones:
1. Yo leo la base da datos y pongo la información del registro en una tabla que uso para editar, por tanto la variable que estoy usando (NC) proviene de un campo memo de una base de datos.
2. Yo no uso recursos, lo hago directamente en el programa, da mas trabajo pero me permite controlar mejor _ y si esta definida la condición multilinea con lo cual el scroll vertical sale solo y ya tiene un tamaño mas grande que un get normal.
@ 10,10 GET NC SIZE 230,60 PIXEL MULTILINE OF FINESTRA2
Recuerdos,
Andrés
- Sebastián Almirón
- Posts: 125
- Joined: Mon Dec 12, 2005 9:56 am
- Location: Moralzarzal - Spain
Si parece haber un problema con la longitud de la variable en los GET MULTILINE cuando el dialogo se declara directamente desde código, esto da el error que comentas:
FUNCTION OBSERVAC(NC)
LOCAL ANT:=NC
NC := REPLICATE('p',1763) //Para no tomarlo del campo memo
DEFINE DIALOG FINESTRA2 FROM 1,1 TO 200,500 TITLE "Observacions" FONT TLLETRA PIXEL
@ 10,10 GET NC SIZE 230,60 PIXEL MULTILINE OF FINESTRA2
@ 80,70 BUTTON "&D'acord" SIZE 50,12 ACTION FINESTRA2:END() PIXEL OF FINESTRA2
@ 80,130 BUTTON "Ca&ncel·lar" SIZE 50,12 ACTION (NC:=ANT, FINESTRA2:END()) PIXEL OF FINESTRA2
ACTIVATE DIALOG FINESTRA2 CENTERED
RETURN NIL
Sin embargo si la línea NC := REPLICATE('p',1763) la cambias por NC := REPLICATE('p',1762) o un valor menor no falla. Es decir cuando la variable contiene 1763 o más caracteres falla, si tiene menos no.
Si ese mismo dialogo lo haces con recursos no falla, aunque la variable tenga más de 1763 caracteres (con la limitación de 64K de las variables)
El problema parece estar el la funcion DialogBoxIndirect, cuyo código fuente no se proporciona con FW, así que hasta ahí he podido investigar.
Esperemos a ver si Antonio tiene alguna sugerencia.
FUNCTION OBSERVAC(NC)
LOCAL ANT:=NC
NC := REPLICATE('p',1763) //Para no tomarlo del campo memo
DEFINE DIALOG FINESTRA2 FROM 1,1 TO 200,500 TITLE "Observacions" FONT TLLETRA PIXEL
@ 10,10 GET NC SIZE 230,60 PIXEL MULTILINE OF FINESTRA2
@ 80,70 BUTTON "&D'acord" SIZE 50,12 ACTION FINESTRA2:END() PIXEL OF FINESTRA2
@ 80,130 BUTTON "Ca&ncel·lar" SIZE 50,12 ACTION (NC:=ANT, FINESTRA2:END()) PIXEL OF FINESTRA2
ACTIVATE DIALOG FINESTRA2 CENTERED
RETURN NIL
Sin embargo si la línea NC := REPLICATE('p',1763) la cambias por NC := REPLICATE('p',1762) o un valor menor no falla. Es decir cuando la variable contiene 1763 o más caracteres falla, si tiene menos no.
Si ese mismo dialogo lo haces con recursos no falla, aunque la variable tenga más de 1763 caracteres (con la limitación de 64K de las variables)
El problema parece estar el la funcion DialogBoxIndirect, cuyo código fuente no se proporciona con FW, así que hasta ahí he podido investigar.
Esperemos a ver si Antonio tiene alguna sugerencia.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Gracias Sebastian.
Provando, provando habia llegado a la misma conclusión que tu, es decir que el problema venia en el tamaño del texto.
Como no veia una pronta solucion y me corria prisa he optado por migrar el programa a Harbour, que allí si funciona perfectamente. Es un paso que tenia que hacer y así lo he ademantado.
Antonio, no he probado la solucion que das porque no se como hacerlo. ¿Qué debo hacer para usar este método? ¿Tengo que insertar esta línea en mi programa?
Disculpa mi ignorancia pero voy aprendiendo poco a poco y el tema de clases y metodos todavia no lo acabo de entender bien como funciona.
Gracias por vuestras respuestas.
Recuerdos,
Andrés
Provando, provando habia llegado a la misma conclusión que tu, es decir que el problema venia en el tamaño del texto.
Como no veia una pronta solucion y me corria prisa he optado por migrar el programa a Harbour, que allí si funciona perfectamente. Es un paso que tenia que hacer y así lo he ademantado.
Antonio, no he probado la solucion que das porque no se como hacerlo. ¿Qué debo hacer para usar este método? ¿Tengo que insertar esta línea en mi programa?
Disculpa mi ignorancia pero voy aprendiendo poco a poco y el tema de clases y metodos todavia no lo acabo de entender bien como funciona.
Gracias por vuestras respuestas.
Recuerdos,
Andrés
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact: