Delimitar un get multilinea

Delimitar un get multilinea

Postby Pedro » Tue Jun 22, 2010 8:54 pm

Hola a todos

A ver si alguien me ilumina, necesito crear un get multilinea, pero delimitado a un máximo de cien caracteres por línea y a un total de diez líneas, es decir, máximo mil caracteres por get.
Hay alguna manera?
Porque a pesar de que limito la ventana del diálogo para que quepan cien caracteres, cuando escribo sobrepasa la ventana.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Delimitar un get multilinea

Postby jrestojeda » Wed Jun 23, 2010 12:12 am

Hola...
Simplemente antes de definir o redefinir el get declara su variable asociada en space(100)

Code: Select all  Expand view  RUN
vGet:=SPACE(1000)


Y Luego al Get ponerle un valid.

Code: Select all  Expand view  RUN

   REDEFINE GET   oGet    VAR   vGet MEMO     ID 112  OF oDlg;
      VALID ( LEN(vGet)< 1000 )
 


En ese caso te dejará escribir más de 100 caracteres pero no te dejará salir si lo que escribes supera los 1000. Si quieres validar al escribir deberías probar con ON CHANGE.
Saludos, Esteban.
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
User avatar
jrestojeda
 
Posts: 601
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina

Re: Delimitar un get multilinea

Postby AIDA » Wed Jun 23, 2010 12:22 am

Hola

la clase MGet proporsiona un metodo para limitar el texto :)

METHOD LimitText( nChars )

y la forma de usarlo es :P

oMGet:LimitText( 5 )

espero te sirva de algo :mrgreen:

Saluditos :wink:
Que es mejor que programar? creo que nada :)
Atropellada pero aqui ando :P

I love Fivewin

séʌǝɹ ןɐ ɐʇsǝ opunɯ ǝʇsǝ
User avatar
AIDA
 
Posts: 879
Joined: Fri Jan 12, 2007 8:35 pm

Re: Delimitar un get multilinea

Postby Pedro » Wed Jun 23, 2010 6:41 am

Hola Eduardo
Lo que tu propones ya lo he probado, el tema como exponía es que el primer límite (de cien caracteres por línea) no me lo respeta y no pasa a la línea siguiente cuando llego a esos cien caracteres.

Aida, el LimitText debe ser para el bloque a editar, yo necesito ademas limitar el texto de la línea a lo que decía antes.

¿Hay alguna forma o alguien que lo sepa?
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Delimitar un get multilinea

Postby mmercado » Wed Jun 23, 2010 9:08 am

Hola Pedro:
Pedro wrote:Lo que tu propones ya lo he probado, el tema como exponía es que el primer límite (de cien caracteres por línea) no me lo respeta y no pasa a la línea siguiente cuando llego a esos cien caracteres.

Si en el Get usas una fuente monospace como "Courier", todos los renglones tendrán exactamente la misma cantidad de caracteres.

Un abrazo.

Manuel Mercado Gómez.
manuelmercado at prodigy dot net dot mx
User avatar
mmercado
 
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Re: Delimitar un get multilinea

Postby Pedro » Wed Jun 23, 2010 10:33 am

Estimado D. Manuel

No es problema del fon a usar, de hecho he usado COURIER, 8 y MS SAN SERIF 8 y el texto entra en la ventana. Es decir los cien caracteres entran perfectamente. Lo que yo quiero es que no entren más y pase a la línea siguiente, igual que cuando escribimos aquí, en el cuadro de edición que tenemos para los mensajes.
Lo único que quiero es poder delimitar el bloque del texto a diez líneas y que cada una de ellas no tenga más de cien caracteres, ¿el motivo? pues quiero tomar esas diez líneas y grabarlas en diez registros de una tabla, así tendría el alta en el informe, posteriormente recuperarlas en una sola variable para su modificación y volver a grabarlas en bloques de diez registros.
Lo he intentado con Richedit, pero me hace lo mismo, es decir no respeta la ventana y se pasa escribiendo, de los cien caracteres.

En fin no sé como hacerlo.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Delimitar un get multilinea

Postby jrestojeda » Wed Jun 23, 2010 11:52 am

Hola...
El Get es desde recursos?? En ese caso... Con que editor de recursos??
Si es PellesC prueba las siguientes propiedades:

1-Multi Línea "SI"
2-Necesita retorno "SI"
3-Scroll horizontal "NO"

Saludos, Esteban.
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
User avatar
jrestojeda
 
Posts: 601
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina

Re: Delimitar un get multilinea

Postby Marcelo Via Giglio » Wed Jun 23, 2010 12:03 pm

Hola,

si la informacion es acotada como parece, es decir por ejemplo tiene un maximo de 5 lineas y cada una de ellas a lo sumo 100 caracteres (500 total), podrias definir 5 get de 100 caracteres cada uno, uno tras otro, asi tienes control de cada linea :-)

Otra seria utilizar un Browse sin cabecera y sin scrollbar

solo ideas

saludos

Marcelo
Marcelo Via Giglio
 
Posts: 1065
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Delimitar un get multilinea

Postby Pedro » Wed Jun 23, 2010 4:02 pm

Eduardo
Efectivamente uso PELLES C y esta como tu dices,multilinea, sin scroll horizontal, y con retorno de carro, pero sigue pasándose de la ventana. SI miras la respuesta a D. Manuel, lo que quiero es como aquí, en la ventana donde escribimos los mensajes, que cuando llega al final, pasa a la siguiente línea sin más. Eso mismo, más controlar que no se pase de 1000 caracteres.

Marcelo, ya tenía hecho eso mismo, un array con diez líneas en un xbrowse, y funcionaba bien pasando de líneas, ¡¡¡ pero !!!!
creo que tu sabes como son los clientes, y ahora pide poder insertar texto y borrar texto, eso significa que el resto del texto debe pasar a la linea siguiente cuando se inserte o a la anterior cuando se borre.
Lo que no he probado es un array de una sola posición en un xbrowse con un valor de 1000 caracteres. Provaré y ya os digo.
Lo que no entiendo es por qué con el Richedit se pasa del a ventana.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Delimitar un get multilinea

Postby Pedro » Thu Jun 24, 2010 7:43 am

No hay forma, el array de una sola posición genera una sola línea, así que no me vale.
He vuelto a hacer pruebas con el control RichEdit, pero no hay forma que respete la ventana, se pasa de ella rellenándola con más caracteres de los cien, a parte de eso, el get ocupa mucho más espacio de lo que se le indica en el .rc.
Este es el rc con los dos dialogs
Code: Select all  Expand view  RUN

SINTOMAS DIALOG DISCARDABLE 6, 18, 390, 126
STYLE WS_CHILD|DS_3DLOOK|WS_VISIBLE
FONT 10, "MS Sans Serif"
{
  CONTROL "", 4001, "RichEdit20A", WS_VISIBLE |WS_BORDER|WS_VSCROLL |WS_TABSTOP, 4, 8, 380, 104
}

EXPLORACION DIALOG DISCARDABLE 6, 18, 390, 126
STYLE WS_CHILD|DS_3DLOOK|WS_VISIBLE
FONT 10, "MS Sans Serif"
{
  CONTROL "", 4001, "RichEdit20A", WS_VISIBLE |WS_BORDER|WS_VSCROLL |WS_TABSTOP, 4, 8, 380, 104
}


y estas las líneas donde estan los dialogos
Code: Select all  Expand view  RUN
  REDEFINE FOLDER oFolder ;
            PROMPT "SINTOMAS","EXPLORACION","DIAGNOSTICO","TRATAMIENTO","NOTAS FINALES","FACTURAS";
            DIALOGS "SINTOMAS","EXPLORACION";
            ID 2001 OF oDlgHis
*-------------------------------------------------------------------------------            
   REDEFINE RICHEDIT oRtf1 VAR cExplora ID 4001 OF oFolder:aDialogs[1] ;
            FONT oFonthc

   REDEFINE RICHEDIT oRtf2 VAR cExplora ID 4001 OF oFolder:aDialogs[2] ;
            FONT oFonthc
*----------------------------------------------------------------------------
            oRtf1:LimitText(100)        
            oRtf2:LimitText(1000)
 
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Delimitar un get multilinea

Postby Antonio Linares » Fri Jun 25, 2010 7:36 am

Pedro,

Buscando información que pueda servir para lo que quieres hacer, en este artículo:

http://www.delphipages.com/forum/archive/index.php/t-180606.html

parece que una posible solución es controlar la longitud de la línea en donde se está escribiendo y si se llega a la longitud límite, automaticamente insertar los códigos de nueva línea (13 y 10).

Para saber la longitud de la línea en curso se usa el mensaje EM_LINELENGTH:
http://msdn.microsoft.com/en-us/library/bb761613(VS.85).aspx
o podrias usar el método GetLine( nLine ) y calcular su Len()
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Delimitar un get multilinea

Postby Pedro » Fri Jun 25, 2010 9:27 am

Antonio, el crear un control Richedit, o un Get multilinea, que me daría lo mismo, es porque el usuario del programa, quiere lo siguiente
1.- Poder insertar texto en las líneas y que el resto del texto, como es obvio, se mueva a la derecha, y si no cabe en la línea, pues que pase a la línea siguiente.
2.- Borrar texto, lo mismo que lo anterior pero al revés, que el texto se mueva a la izquierda y pase a la línea anterior para rellenar el bloque borrado.

Ten en cuenta que esto es un informe médico, que el usuario no es muy avezado en informática, y que escribe "como los ángeles" :roll:
Lo tenía hecho con un Xbrowse, pero ahí no se puede insertar texto, moviendo texto, ni borrar texto, moviendo texto. Si le abría líneas nuevas cuando llegaba al final, pero la última línea escrita debía darle un enter para fijarla, si no se borraba, y esto tampoco lo quiere.
Pensé que un Get multilínea me solucionaría el problema, como si fuera un campo memo, pero al igual que el Richedit me hace lo siguiente, teniendo en cuenta que el diálogo de edición está en un folder :
1.- La ventana del get no respeta los límites establecidos en el recurso y por tanto escribe más caracteres.
2.- El límite del texto tampoco lo respeta.

¿Hay alguna solución para poder hacer lo que me piden?
Me da lo mismo el control a usar, mientras tenga esa funcionalidad.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Delimitar un get multilinea

Postby José Vicente Beltrán » Fri Jun 25, 2010 1:58 pm

Image
Pedro con esta configuración en Pelles C, yo hago lo que tu necesitas desde hace bastante tiempo, el texto nunca sobrepasa el margen derecho y si añades o quitas texto, este se desplaza hacia derecha o izquierda respectivamente. :shock:
User avatar
José Vicente Beltrán
 
Posts: 282
Joined: Mon Oct 10, 2005 8:55 am
Location: Algeciras, España

Re: Delimitar un get multilinea

Postby Pedro » Fri Jun 25, 2010 3:20 pm

José Vicente

Voy a hacer una prueba, aunque me temo que el problema que me encontraré es que se saldrá de los mil caracteres.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 47 guests