PDA

Ver la Versión Completa : QRRichText y negrita


Angel.Matilla
16-04-2014, 13:15:29
Estaba tratando de adaptar el código del hilo Cómo poner QRRichText en negrita (http://www.clubdelphi.com/foros/showthread.php?t=14973) para una aplicación en C++ Builder 6. Lo he dejado así:
Función
void Negrita(TRichEdit *Rich, AnsiString Texto)
{
int nPos = Rich->FindText(Texto, 0, 1000, TSearchTypes() << stMatchCase);

Rich->SelStart = nPos;
Rich->SelLength = Texto.Length();
Rich->SelAttributes->Style << fsBold;
}
//---------------------------------------------------------------------------Y para usarlo pongo esto:
Negrita(fCarSoc->RichText->ParentRichEdit, Label10->Caption);Se compila sin problema, pero al ejecutarlo me da un mensaje de error:
http://i98.photobucket.com/albums/l251/Angel_Matilla/Error_zps63e2571d.jpg

He comprobado con el depurador que ParentRichEdit aparece como NULL. ¿Qué estoy haciendo mal?

ecfisa
16-04-2014, 16:34:22
Hola Angel.


void StyledText(TRichEdit *RE, AnsiString Searched, TFontStyle FS)
{
RE->SelStart = RE->FindText(Searched,0,RE->GetTextLen(),
TSearchTypes() << stMatchCase);
RE->SelLength = Searched.Length();
RE->SelAttributes->Style = RE->SelAttributes->Style << FS;
}


Ejemplo de uso:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
RichEdit1->Text = "negrita, italica, subrayada, tachada";
StyledText(RichEdit1, "negrita", fsBold);
StyledText(RichEdit1, "italica", fsItalic);
StyledText(RichEdit1, "subrayada", fsUnderline);
StyledText(RichEdit1, "tachada", fsStrikeOut);
QRRichText1->ParentRichEdit = RichEdit1;
QuickRep1->Preview();
}


Saludos :)

Angel.Matilla
16-04-2014, 17:56:46
Perfecto ecfisa. Muchas gracias. Sólo hay un pequeño problema fácil de resolver con los finales de línea. Eres un hacha. :)

Angel.Matilla
16-04-2014, 18:35:40
Como he dicho antes ha quedado perfecto. Pongo aquí como me ha quedado el código:
TRichEdit *Rich = new TRichEdit(this);
Rich->Parent = this;
Rich->Visible = false;

Rich->Lines->Clear();
Rich->Lines->Add(<El texto que se desee>);

Estilo(Rich, Buscado, <Estilo>);
Form1->QRRichText->ParentRichEdit = Rich;
Form1->QuickRep1->Preview();<Estilo> es, evidentemente, fsBold, fsUnderline, etc.