14 septiembre 2007

Creando un procesador de textos con RichEdit (y II)

Sigamos añadiendo características a nuestro pequeño editor de textos:


NEGRITA, CURSIVA Y SUBRAYADO

Vamos a definir la función de los típicos botones de negrita, cursiva y subrayado que llevan los procesadores de texto. Comencemos con el botón de negrita:

procedure TFormulario.BNegritaClick( Sender: TObject );
begin
with RichEdit.SelAttributes do
if not ( fsBold in Style ) then
Style := Style + [fsBold]
else
Style := Style - [fsBold];

RichEdit.SetFocus;
end;

Hay que tener en cuenta que si el usuario pulsa una vez negrita y el texto no estaba en negrita entonces se aplica dicho estilo, pero si ya lo estaba entonces hay que quitarlo.

Lo mismo sería para el botón de cursiva:

procedure TFormulario.BCursivaClick( Sender: TObject );
begin
with RichEdit.SelAttributes do
if not ( fsItalic in Style ) then
Style := Style + [fsItalic]
else
Style := Style - [fsItalic];

RichEdit.SetFocus;
end;

Y para el botón de subrayado:

procedure TFormulario.BSubrayadoClick( Sender: TObject );
begin
with RichEdit.SelAttributes do
if not ( fsUnderline in Style ) then
Style := Style + [fsUnderline]
else
Style := Style - [fsUnderline];

RichEdit.SetFocus;
end;

MOSTRANDO LA POSICION ACTUAL DEL CURSOR

Una de las cosas que se agradece en todo procesador de textos es que muestre en que fila y columna estoy situado. Para ello vamos a insertar en la parte inferior del formulario una barra de estado. El componente se llama StatusBar y se encuentra en la pestaña Win32. Le vamos a poner el nombre de Estado y ponemos a True su propiedad SimplePanel.

Lo que haremos a continuación es un procedimiento que muestre la posición actual del cursor dentro del RichEdit en la barra de estado:

procedure TFormulario.MostrarPosicion;
begin
Estado.SimpleText := Format( 'Fila: %d Columna %d',
[RichEdit.CaretPos.y+1, RichEdit.CaretPos.x+1] );
end;

Este procedimiento hay que llamarlo cuando creamos el formulario:

procedure TFormulario.FormCreate( Sender: TObject );
begin
MostrarPosicion;
end;

y en el evento OnSelectionChange del RichEdit:

procedure TFormulario.RichEditSelectionChange( Sender: TObject );
begin
MostrarPosicion;
end;

Al ejecutar el programa veremos que el resultado queda más profesional (ya podían los de Microsoft ponerle esto al cutre Bloc de Notas).

DANDO FORMATO A LOS PARRAFOS DEL DOCUMENTO

Otra característica que vamos a implementar es la de alinear el párrafo actual a la izquierda, al centro y a la derecha. Para ello vamos a poner arriba tres botones llamados BIzquierda, BDerecha y BCentro, cuyos eventos serían:

procedure TFormulario.BIzquierdaClick( Sender: TObject );
begin
RichEdit.Paragraph.Alignment := taLeftJustify;
end;

procedure TFormulario.BCentroClick( Sender: TObject );
begin
RichEdit.Paragraph.Alignment := taCenter;
end;

procedure TFormulario.BDerechaClick( Sender: TObject );
begin
RichEdit.Paragraph.Alignment := taRightJustify;
end;

Otra característica que se le puede añadir a un párrafo es la de añadir un punto por la izquierda como hace Microsoft Word. Para ello vamos a añadir el botón de nombre BPunto cuyo procedimiento es:

procedure TFormulario.BPuntoClick( Sender: TObject );
begin
with RichEdit.Paragraph do
if Numbering = nsNone then
Numbering := nsBullet
else
Numbering := nsNone;

RichEdit.SetFocus;
end;

Si se pulsa una vez este botón añade un punto al párrafo y si se pulsa de nuevo lo quita.

Al párrafo actual se le pueden modificar también las propiedades:

FirstIndent -> Es el espacio en pixels por la izquierda que se le da a la primera línea
LeftIndent -> Es el espacio en pixels por la izquierda que se le da a todas las líneas
RightIndent -> Es el espacio en pixels por la derecha que se le da a todas las líneas

LAS OTRAS PROPIEDADES DEL COMPONENTE RICHEDIT

Hay otras propiedades que nos permiten personalizar nuestro editor de texto como son:

PlainTex: Si se activa esta propiedad al guardar el archivo de texto a disco no almacena las propiedades de color, fuente, etc. Se comporta como el Bloc de Notas.

SelLength: Es el número de caracteres seleccionados por el usuario.

SelStart: Es la posición en el texto donde comienza la selección.

SelText: Es el texto seleccionado.

Con esto finalizamos las características más importantes del componente RichEdit.

Pruebas realizadas en Delphi 7.

1 comentario:

Unknown dijo...

me confundi cuando ponemos la barra de estado, cuando declaramos esto:

procedure TFormulario.MostrarPosicion;
begin
Estado.SimpleText := Format( 'Fila: %d Columna %d',
[RichEdit.CaretPos.y+1, RichEdit.CaretPos.x+1] );
end;

adonde declaro o pongo lo que sea el mostrarPosicion no se donde esta?

Publicidad