Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - NemeSys

#1
Hola,

estoy haciendo una aplicacion que necesita tener un editor de texto.

He buscado ejemplos y he encontrado muchos que utilizan Richtextbox como zona para editar el texto. El problema es que a la hora de escribir se puede alargar cada linea tanto como ocupe de ancho la RTB.

Para evitar esto me gustaria saber si existe algun ocx o alguna forma de que la zona de edicion se presente como un folio en blanco tal y como hace el Word. Para asi utilizar tambien una regla desde donde controlar los margenes y las tabulaciones.

Gracias por cualquier consejo.
#2
Puedes especificar más?

El archivo sacado de la web es un texto plano? La accion se debe ejecutar en la misma web? El texto es variable?

Si tienes un archivo txt. Haz una funcion de busqueda o usa alguna de las que vienen con el VB y cuando encuentres la palabra clave lanza la funcion que necesitas.

InStr (Función)  Devuelve la posición del primer caso de una cadena dentro de otra.
InStrRev (Función)  Devuelve la posición de la aparición de una cadena dentro de otra, desde el final de la cadena. 

Saludos.
#4
Hola,

Gracias por la respuesta CelaYa. Sobre como sustituir campos de la base de datos por etiquetas en el texto, definitivamente lo haré asi.

Para Guardar/Recuperar RTF de un SQL estuve mirando por varias zonas y encontré bastante informacion pero muy confuse e incompleta. En unos sitios decian que debias declara un campo tipo image y guardar el texto rtf ahi, pero no me funcionaba. En otros decian que debias declara un varbinary y lo mismo.

Al final para poder recuperar y guardar rtf lo que hice fue declarar un campo de texto normal y guardar directamente el string de la propiedad RichTextBOx.TextRTF. Asi se conserva el formato del texto en la BD. Para recuperarlo y ver el texto ya formateado, lo unico que hago es leer el campo entero y volcarlo sobre la propiedad RichTextBox.TextRTF y no hay problema.

Antes por eso hago una lectura del texto y filtro las etiquetas por los campos correspondientes a la BD y voilá ya tengo mi texto con sus campillos y sus negrillas :D

Gracias por todo.
Un saludo.
Nemesys

PD: Oye alguien me puede decir que coi le pasa al foro con eso del denial of service? quien ataca? se puede ayudar?
#5
Hola a todos,

Estoy haciendo una aplicacion VB que ataca a un SQL server remoto.

Cuando hago accesos a el servidor SQL parece que la aplicacion se congela hasta que el flujo de ejecucion no recibe la vuelta de la instruccion SQL.

Para paliar el mal efecto que da esto decidí pone un pequeño formulario con una barra de desplazamiento, una animacion flash o un gif animado dando vueltecitas para que parezca que la aplicacion esta haciendo \"cosas importantes\" y no de el efecto de \"estoy colgado\".

Pues bien una vez implemente la animacion mi sorpresa vino cuando vi que la animacion se congelaba hasta que la instruccion SQL no termina de ejecutarse. Probe Gif animados barras varias de status e incluso un flash, pero el efecto es el mismo en los tres casos, la animacion se congela.

Probe con Doevents y no hay forma, tambien probe con multitrhead pero me daba muchos problemas en VB6.

La question es que como no se ejecuta ningun bucle la instruccion doevents no es efectiva, y debugando vi que hasta que no se acaba de ejecutar el SQL la animacion queda congelada.

En tiempo de ejecucion se traduce en que queda igual de mal lo uno y lo otro.

Alguien tiene alguna sugerencia?

Gracias.
#6
Hola a todos...

Tengo que hacen un editor de texto formateado con la opcion de insertarle campos para que justo antes de imprimir el documeto escrito aqui estos campos se sustituyan por el contenido de estos campos de la DB.

Habia pensado hacerlo con una RichTextBox para el texto formateado y usar un sistema de etiquetas para los campos, es decir, el texto quedaria algo como:

Don <NOMBRE> <Apellido1> con DNI <DNI> declara que....

De manera que antes de imprimir sustituire cada etiqueta por su contenido de la BD.

El problema me viene cuando voy a guardar este texto en la BD. El texto y las etiquetas se guardan sin problema pero el formato del texto (negrita, tabulados y demas) los pierdo, ya que se guarda como texto llano.

Alguien sabe alguna manera sencilla de guardar texto formateado en un campo de un BD?

Habia pensado hacer un sistema de etiquetas para definir el formato del texto, pero esto me complicaria bastante el trabajo.

Si alguien sabe de una forma "sencilla" de hacerlo soy todo oidos...

Gracias de antemano.
#7
Gracias por las respuestas,

Ironhorse,

El problema es que la conexión a la BD no la cierro hasta el final del proceso.

En cambio el Recordset debo cerrarlo porque primero ejecuto una instrucción add, y luego debo cerrarla para poder refrescar el Recordset con un open cuyo source es una instrucción SQL.

Si despues de hacer update reabro el recordset con una SQL me da error 3005. Accion no permitida si el objeto esta abierto.

CeLaYa,

el algoritmo que propones, ya lo utilizo, invoco el addnew, inserto los campos e invoco el update.

Luego lo reabro con el Open haciendo un Select * from tabla; y es entonces cuando recupera los registros de la tabla excepto el ultimo insertado.

La BD tiene pocos registros y ya me pasa esto, pensaba al principio que pudiese ser problema de performance debido al tamaño, pero el caso es que en BD's de menos de diez registros por tabla ya me pasa.

Auque lo que propones del insert, lo prové en un programa anterior (de hace mucho tiempo y creo que este problema no lo tuve). Gracias por recordarmelo :)

Provaré con el insert SQL a pelo a ver que pasa.

Saludos
#8
Hola a todos,

estoy desarrollando un programa en VB que utiliza una BD en Access linkada con el motor jet 4.0.

Los accesos los hago a través de Recordset abiertos con la instruccion SQL que toca.

Pero si cuando uso el metodo Addnew, y despues del update,
recupero los datos de toda la tabla o parte de ella, los datos recien añadidos no se me recuperan, con lo que no puedo refrescar los controles que deberian refrescarse con los datos nuevos.

Para paliar esto estoy usando, como chapuza, la funcion API sleep, pero a medida que la tabla crece esta solucion deja de ser efectiva a menos que no ponga un sleep bastante grande. Cosa que hace que los updateos a la BD sean bastante mas lentos de lo que deberian.

Cuando debugo esto casi no sucede, pero si ejecuto, si. Supongo que es porque a la base de datos no le da tiempo a updatearse antes de ejecutar la select que viene a continuacion al updateo.

En resumen:

VB -> addnew -> BD (dato nuevo)
VB -> query -> BD (datos viejos)

Tal vez, seria mejor hacer un insert a pelo con SQL, al hacer open en el recordset?

Saludos y Gracias.
#9
CeLaYa..... TE ADORO :D:D:D:D

Muchas gracias :D
#10
Aleluya!!!!

Alguien que me entiende :D:D

Yo tampoco entendia porque pero es algo que parece no tener solucion.

Para actualizar el texto de una RTB se debe igualar la propiedad texto a si mismo mas el texto nuevo. Si debugas veras como es en el momento en el que se asigna la nueva cantidad de texto cuando se inserta todo del mismo color.

Creo que es porque o no se mantiene el formato de color del texto (porque el formato negrita si se mantiene) cuando se asigna a memoria para reasignarlo a la propiedad de texto.

o es porque al asignar la propiedad SelStart al final del texto, en el impas que hay cuando se ejecuta RichTextBox.Text = RichtextBox.text & "Texto_Nuevo" de: "borra texto existente del control *-> guardalo en memoria -> carga texto guardado + texto nuevo" la propiedad SelStart al ver que no hay texto en la textbox se asigna a cero*, cosa que hace que al asignar el texto nuevo la propiedad Color que esta a rojo, por ejemplo, se asigne a todo el texto insertad ?

No se porque pero es bastante fustrante esta situacion y mas cuando se que debe haber algun ActiveX donde esto se pueda hacer sin problemas. Nadie sabe de algun control que sirva como RTB?

Gracias CeLaYa por la ayuda :)