C/Visual C - edicion de texto

 
Vista:

edicion de texto

Publicado por brunocrack (22 intervenciones) el 08/04/2001 23:17:32
estoy creando un pequeño editor de texto en C y me gustaria saber que estrategia puedo emplear a la hora de crear una "scrollbar".Habia pensado en el empleo de arrays bidimensionelas para manejar el texto pero me gustaria saber vuestra opinion
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:edicion de texto

Publicado por Germán B. (143 intervenciones) el 09/04/2001 04:06:16
Una vez hice uno para DOS. Para manejar el texto lo mejor me pareció un array unidimensional de punteros a char, donde el único límite que pongo es la cantidad de punteros (cantidad de líneas que puede tener el texto a editar).
Cuando el texto está vacío, tengo todos los punteros en NULL. Siempre mantengo una variable con la cantidad de líneas con texto para saber hasta dónde tengo algo. Para cada nueva línea de texto que se ingresa se asigna la memoria en forma dinámica al puntero que corresponda, de acuerdo a la longitud del texto de la línea. Para insertar o eliminar líneas hay que reasignar unos punteros a otros en el array, nunca copiar líneas de texto.
Es mejor que el array bidimensional en cuanto a que cada línea no utiliza memoria de más. Para evitar la cantidad fija de punteros se podría usar una lista enlazada, pero eso impediría el acceso directo con subíndice a cualquier elemento (línea). No se si se justifica usar realloc() para cambiar dinámicamente la cantidad de punteros.
¿Estás programando para interfaz de caracteres o GUI? En el primer caso, a la scrollbar simplemente hay que programarla. Si es con mouse, debería ser algo como la del editor del Turbo C. Dependiendo de en qué parte de la barra uno cliquea, es la operación que se ejecuta; se establece la nueva posición del botoncito y se redibuja la barra. Creo que yo me ocuparía primero de programar la funcionalidad del scroll (subir o bajar por línea o página) y luego la barra en sí. Si vas a contemplar la posibilidad de que se arrastre el botoncito con el mouse, la cantidad de líneas a escrolar se calcula con respecto a la proporción que ocupa el botoncito en la barra, aplicada a la cantidad de líneas del texto.
G
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:edicion de texto

Publicado por brunocrack (22 intervenciones) el 10/04/2001 15:40:48
con respecto al scroll solo me interesa la funcinalidad.
Y con repecto al editor me dices que haga char* lineas[10](por ejemplo)pero sigo sin ver claro como puedo usar los cursores para desplazarme por el texto y modificar una determinada posicion.No entiendo como conseguir relacionar lo que muestro en pantalla con el array de punteros
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:edicion de texto

Publicado por Germán B. (143 intervenciones) el 10/04/2001 17:30:11
Creo que lo que yo hacía era usar un buffer de tamaño fijo para trabajar con la línea actual, p.ej. char buf[256]. Cuando se pasa a otra línea, la actual se actualiza en la posición correspondiente del vector de punteros.
Desde luego que tenés que programar toda la funcionalidad de edición de las líneas: insert, delete, modificación del texto, desplazamiento izquierda y derecha con las flechas... Con las flechas verticales cambiás de línea manteniendo la posición horizontal, etc.
G
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