Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-05-2010
yossi yossi is offline
Miembro
 
Registrado: abr 2010
Posts: 59
Poder: 15
yossi Va por buen camino
Unhappy richedit

Hola,
tengo un componente richedit, en el que el usuario escribe la descripcions de X cosa, quisiera que el usuario puediera configurar el formato de lo que escribe, es decir, cambiarle el color, el tipo de letra ponerlo en negrita, subrayarlo, cursiva, y sobre todo que lo pueda alinearlo a su gusto, incluyendo justificarlo como hace word. de paso lo que el usuario escribe en ese richedit tengo que guardarlo en la base de datos (mysql) en un campo que tengo longtext, y al recuperarlo para imprimirlo mediante un qreport quiero que tenga la configuracion que el usuario eligio.

he usado las funciones

Código Delphi [-]selstart; sellength; selattribute;


que me han funcionado bien, pero no se como hacer todo eso que me quiero, ya logre cambiar el tipo de letra, que el usuario escoje desde un combobox, pero no le logrado cambiar el color que el usuario escoje del combobox porque los tipos son incompatibles (tcaption and tcolor), no se cual atributo es el que me permite colocar el texto, negrita, subrayado y cursiva, ademas que solo me permite alinear a la izquierda, derecha y centro (no me deja justificar) y como hago para cuando lo guarde en la base de datos y lo recupero venga con el formato que escogio el usuario

se que pregunto mucho pero estoy aprendiendo a penas
Responder Con Cita
  #2  
Antiguo 25-05-2010
yossi yossi is offline
Miembro
 
Registrado: abr 2010
Posts: 59
Poder: 15
yossi Va por buen camino
respondo el post, porque no puedo editar el anterior

ya se como cambiarle e, color, la letra, ponerlo en negrita, subrayado y cursiva pero aun no se como justificarlo, y busco aqui en el foro y en la web y no encuentro nada concreto, sera que no se puede?, tampoco logro nada con la base de datos
Responder Con Cita
  #3  
Antiguo 25-05-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
hola yossi.

Usá la propiedad Paragraph del TRichEdit.

Ejemplo:
Código:
 
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  case ComboBox1.ItemIndex of
    0:RichEdit1.Paragraph.Alignment:= taLeftJustify;
    1:RichEdit1.Paragraph.Alignment:= taRightJustify;
    2:RichEdit1.Paragraph.Alignment:= taCenter;
  end;
end;

En cuanto a tipo, color, estilo, etc.
Podes hacer por ejemplo:
Código:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if FontDialog1.Execute then
  begin
    RichEdit1.SelAttributes.Color:= FontDialog1.Font.Color;
    RichEdit1.SelAttributes.Style:= FontDialog1.Font.Style;
    RichEdit1.SelAttributes.Name:= FontDialog1.Font.Name;
    RichEdit1.SelAttributes.Size:= FontDialog1.Font.Size;
  end;
end;
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 25-05-2010
yossi yossi is offline
Miembro
 
Registrado: abr 2010
Posts: 59
Poder: 15
yossi Va por buen camino
gracias por la respuesta, pero de casualidad tambien sabras como puedo hacer con lo de la base de datos,

revisando el foro encontre esto

http://www.clubdelphi.com/foros/showthread.php?t=39524

pero no me esta funcionando bien
Responder Con Cita
  #5  
Antiguo 25-05-2010
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Busca en el foro y encontraras una funcion para justificar en Richedit, yoo trabajo con ella si no la encuentras, dimelo y te la busco en casa, por cierto si no recuerdo mal tambien es posible cambiar el color de fondo de una parte del texto por si quieres destacar algo.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #6  
Antiguo 25-05-2010
yossi yossi is offline
Miembro
 
Registrado: abr 2010
Posts: 59
Poder: 15
yossi Va por buen camino
encontre esta funcion aca en el foro, no se si te refieres a esta que mencionan en este hilo
http://www.clubdelphi.com/foros/showthread.php?t=162

tambien encontre en otro hilo que mencionaban un componente "justifyrichedit"
lo descargue de aqui http://www.programmersheaven.com/dow.../download.aspx
para justificar funciona, tengo que probar las demas opciones
Responder Con Cita
  #7  
Antiguo 26-05-2010
yossi yossi is offline
Miembro
 
Registrado: abr 2010
Posts: 59
Poder: 15
yossi Va por buen camino
el componente "justifyrichedit" es un richedit pero con la opcion de justificar el texto. ese problema ya esta resuelto gracias al foro y a ustedes

pero ahora tengo otra dificultad dentro de la misma

tengo un boton mediante el cual el texto seleccionado se coloca en negrita, igualmente ento botones para el subrayado, hacer que el texto se coloque en negrita o en subrayado ya lo hice, el problema esta en quitarle la negrita a un texto sin quitarle el subrayado, no hallo la manera de acceder a la propiedad fsbold del style directamente para colocarlo en false y asi mantener el subrayado.

alguna idea?
Responder Con Cita
  #8  
Antiguo 26-05-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola yossi.

Si utilizas un TButton podrías usar algo como este código:

Código:
procedure TForm1.btNegritaClick(Sender: TObject);
begin
  with RichEdit1.SelAttributes do
    if fsBold in Style then
      Style:= Style - [fsBold]
    else
      Style:= Style + [fsBold];
end;
Pero al hacer click sobre el TButton, perdes la selección del texto al perder el foco.
Mejor sería usar un TPopupMenu con los items: Negrita, Subrayado e Itálica. Asignar el
PopupMenu al TRichEdit y poner en el evento OnClick del TMenuItem lo siguiente:

Código:
procedure TForm1.Negrita1Click(Sender: TObject);
begin
   Negrita1.Checked := not Negrita1.Checked;
   with RichEdit1.SelAttributes do
     if Negrita1.Checked then
      Style:= Style + [fsBold]
     else
      Style:= Style - [fsBold];
end;
ahora te quedará la selección.

Tendrías que hacer lo mismo con Subrayado e Itálica. ([fsUnderline], [fsItalic])

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 26-05-2010 a las 04:07:59.
Responder Con Cita
  #9  
Antiguo 26-05-2010
Mystery Mystery is offline
Miembro
 
Registrado: jul 2007
Ubicación: Santiago de Cuba
Posts: 69
Poder: 17
Mystery Va por buen camino
Hola foro....
bueno yo trabajo con el delphi 6 y en los demos viene un buen ejemplo de trabajo con RichEdit... no se si en otras versiones de delphi aparece este demo...
bueno sin mas
Mystery
Responder Con Cita
  #10  
Antiguo 26-05-2010
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Te pongo el código que uso para lo siguiente

Código Delphi [-]

procedure TFprincipal.ColorBox2Click(Sender: TObject);
//-------------------------------------------------------------------------------
//***********************************************[color del fondo]****
//-------------------------------------------------------------------------------
var
  Format: CHARFORMAT2;
begin
  FillChar(Format, SizeOf(Format), 0);
  with Format do
  begin
    cbSize := SizeOf(Format);
    dwMask := CFM_BACKCOLOR;
    crBackColor := ColorBox2.Selected;
    redtrededitcion.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
  end;
end;

procedure TFprincipal.ColorBox1Click(Sender: TObject);
//-------------------------------------------------------------------------------
//*****************************************************[ELEGIMOS COLOR texto]****
//-------------------------------------------------------------------------------
begin
redtrededitcion.SelAttributes.Color := ColorBox1.Selected;
end;

procedure TFprincipal.btn5Click(Sender: TObject);
//-----------------------------------------------------------------------------
//**************************************************[ Justificar Texto  ]******
//-----------------------------------------------------------------------------
begin
   if Length(redtrededitcion.selText)>0 then JustifyRichEdit(redtrededitcion,FAlse)
                                        else JustifyRichEdit(redtrededitcion,True);
end;


// AllText : True=todo o texto; False=parágrafo atual
procedure JustifyRichEdit(RichEdit :TRichEdit; AllText :Boolean);
const
  TO_ADVANCEDTYPOGRAPHY   = $1;
  EM_SETTYPOGRAPHYOPTIONS = (WM_USER + 202);
  EM_GETTYPOGRAPHYOPTIONS = (WM_USER + 203);
var
  ParaFormat :TParaFormat;
  SelStart,
  SelLength :Integer;
begin
  ParaFormat.cbSize := SizeOf(ParaFormat);
  if SendMessage(RichEdit.handle,
              EM_SETTYPOGRAPHYOPTIONS,
              TO_ADVANCEDTYPOGRAPHY,
              TO_ADVANCEDTYPOGRAPHY) = 1 then
  begin
    SelStart := RichEdit.SelStart;
    SelLength := RichEdit.SelLength;
    if AllText then
      RichEdit.SelectAll;
    ParaFormat.dwMask := PFM_ALIGNMENT;
    ParaFormat.wAlignment := PFA_JUSTIFY;
    SendMessage(RichEdit.handle, EM_SETPARAFORMAT, 0, LongInt(@ParaFormat));
// Restaura seleção caso tenhamos mudado para All
    RichEdit.SelStart := SelStart;
    RichEdit.SelLength := SelLength;
  end;
end;

procedure TFprincipal.ColorBox3Change(Sender: TObject);
//-----------------------------------------------------------------------------
//*****************************************[ Color de Fondo del Editor  ]******
//-----------------------------------------------------------------------------
begin
   redtrededitcion.Color:=ColorBox3.Selected;
end;

Espero os sirva
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #11  
Antiguo 26-05-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola José Luis.

Yo también tenía por algún lado esa rutina ... y buscando la encontré.

Y como suelo copiar y pegar las url, la saque de aqui :http://www.swissdelphicenter.ch/en/showcode.php?id=1438

Como detalle, agrego que hay que agregar
Código:
uses RichEdit;
si no, va a arrojar errores de identificador desconocido con: CHARFORMAT2, cbSize, ...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #12  
Antiguo 26-05-2010
yossi yossi is offline
Miembro
 
Registrado: abr 2010
Posts: 59
Poder: 15
yossi Va por buen camino
muchisimas gracias a todos, ya he podido hacer todo lo que queria con mi richedit, las ideas que me dieron fueron muy buenas, tome un poco de cada uno para lograr mi objetivo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
RTF en Richedit f_cbuilder6 C++ Builder 0 20-05-2007 19:08:20
Parte de un RichEdit a otro RichEdit (donde esté el cursor) Tomy Varios 3 21-12-2005 21:08:15
RichEdit ivet OOP 1 26-06-2005 20:47:38
Tab en RichEdit Sonic C++ Builder 8 23-11-2004 12:40:05
RichEdit. Tonio Varios 1 25-06-2003 19:50:04


La franja horaria es GMT +2. Ahora son las 07:56:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi