![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Gracias por la respuesta...
Estoy de acuerdo... Primero el load para cargar el texto que contiene la descripción de todos los productos. Un texto que préviamente ha sido escrito en Word para que quede 'bonito'. Cada descripción del producto quedá separada por una línea en la que aparece el número que tiene asignado cada producto. De esta manera para buscar el producto 1234...
Continuamos... Localizado el texto, se selecciona con... SelStart:= Pos(Producto, RichEdit1.Text)-1; SelLength:= Length(Producto); Donde... selStart sería el inicio del texto pero ¿no falta indicar el final para calcular la longitud? Y finalmente, una vez seleccionado, habría que borrar el richEdit (richEdit1.clear) y mostrar solo la parte del texto correspondiente. Gracias anticipadas... Última edición por jusaso fecha: 19-07-2010 a las 11:28:20. |
|
#2
|
||||
|
||||
|
Hola jusaso, como te dice ecfisa en su codigo de ejemplo solo esta seleccionando el producto por lo que el final es el Length del producto.
No deberías borrar el RichEdit sino trabajar sobre el contenido del mismo RichEdit, yo seleccionaría las líneas que estan antes y despues del texto que se quiere mostrar y eliminarlas.
el código quedaría mas o menos así, talvez tengas que ajustar algo. Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
|
#3
|
|||
|
|||
|
Gracias por sus respuestas.
El código quedaría pues... Y ciertamente funciona. Pero tiene un problema importante que habría que solucionar. El documento Word, en su versión RTF, tiene unas cien páginas. Y tarda varios segundos, bastantes, en cargarse sobre el RichEdit. El problema se complica cuando esta operación debe repetirse para cada 'producto'. Por ello, habría que guardar en memoria la totalidad del texto y mostrar en el RichEdit sólo las líneas referentes al artículo seleccionado. He visto algunos ejemplos que utilizan TMemoryStream o TStringStream pero nunca he tenido que utilizarlos.... Si se os ocurre algo... os lo agradecería. Un cordial saludo |
|
#4
|
||||
|
||||
|
Hola jusaso.
El uso de TMemoryStream no va a acelerar significativamente la carga desde el disco, que es, a mi criterio el punto álgido del problema. Tal vez la solución pase por dividir el archivo de ayuda. Podés utilizar el criterio que prefieras; código, nombre,... buscando una distribución lo más simétrica posible. En mis pruebas con un Core2Duo y 4 Gb de Ram, con las 100 páginas, obtuve 8 s con la carga directa del RichEdit, 7s y monedas con MemoryStream. Sin embargo dividiendo el archivo en cinco partes de 20 páginas cada uno la carga no llegó a 1s y la demóra fué casi imperceptible. Lo que sí, te puede adicionar algunas dificultades al momento de ingresar un nuevo producto y en la preselección de la ayuda, pero creo que es una solución viable. Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 19-07-2010 a las 20:47:34. |
|
#5
|
|||
|
|||
|
Aunque no era para lo mismo exactamente, ante una situación similar, lo que hice fue utilizar 2 richedit.
El primer RichEdit cargaba y mantenía en memoria el contenido del archivo (siendo invisible para el usuario) y el 2º richedit era el que utilizaba para presentar la información seleccionada. Así se reducía el tiempo de carga de la información porque, después de leer por primera vez el archivo RTF, ya se podía acceder a él directamente, al tenerlo en memoria. Salu2. Ramón. |
|
#6
|
|||
|
|||
|
Hola ecfisa
Estaba equivocado... El tiempo de espera no se produce al cargar el texto en RichEdit. La carga la hace muy rápida. El problema es debido al tener que borrar una a una todas las líneas sobrantes del RichEdit..... Tarda mucho en hacerlo. Código Delphi [-] for i:=IniSelect to FinSelect do RichEdit1.Lines.Delete(IniSelect); Las he anulado y es muy rápido. La solución cosistiría en borrar todo un bloque de líneas, pero no he visto la forma.... Por otro lado, utilizar dos RichEdit... Todos los ejemplos que he visto en Google se limitan a copiar el TEXT completo del uno al del otro, sin realizar una selección de líneas, que es lo que buscamos. Gracias por vuestras ideas.... |
|
#7
|
|||
|
|||
|
Hola.
Bueno, he revisado el código que hice hace meses y, finalmente, lo hice todo con 1 solo RichEdit, aunque me quedó la idea de que había usado 2. Bueno, te incluyo el código de la función que escribí. Puede tener algún pequeño error puesto que lo he adaptado para ponerlo aquí, pues el código original no se ajusta del todo a lo que se comenta en este hilo.
El texto está dividido en partes. Los separadores son ",,,---1", ",,,---2", ",,,---3", ..., ",,,---10", ",,,---11", etc. El contenido del RichEdit sería algo así: ----------------------------------------------------- ,,,---1 Este es el texto del apartado 1 del texto. Este es el texto del apartado 1 del texto. Este es el texto del apartado 1 del texto. ,,,---2 Este es el texto del apartado 2 del texto. Este es el texto del apartado 2 del texto. Este es el texto del apartado 2 del texto. ,,,---3 Este es el texto del apartado 3 del texto. Este es el texto del apartado 3 del texto. Este es el texto del apartado 3 del texto. Este es el texto del apartado 3 del texto. ,,,---4 ----------------------------------------------------- El nombre del RichEdit es outRichEdit1. El parámetro "pp" indica el número del apartado del texto que queremos ver. A mí me funcionó bastante bien y espero que te sirva. Saludos. Ramón. PD.: Creo que el richedit tiene que tener la propiedad WordWrap a false para que funcione bien. Puede que no sea así (lo digo sin haberlo probado). Última edición por rrf fecha: 20-07-2010 a las 17:02:44. Razón: añadir un detalle |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| synedit como comentar codigo con Ctrl + } | JXJ | Varios | 3 | 08-03-2010 02:35:38 |
| Hacer Scrol en un RichEdit para abajo | fide_uci | Varios | 2 | 18-11-2009 17:00:45 |
| Mirar por favor este query y comentar... | El_Raso | Firebird e Interbase | 33 | 18-11-2008 12:53:44 |
| Jefe de producto de servidores!!!! (para Madrid) | jcuesta | Varios | 1 | 17-12-2006 18:31:06 |
| Parte de un RichEdit a otro RichEdit (donde esté el cursor) | Tomy | Varios | 3 | 21-12-2005 21:08:15 |
|