Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   QRRichText y negrita (https://www.clubdelphi.com/foros/showthread.php?t=85672)

Angel.Matilla 16-04-2014 13:15:29

QRRichText y negrita
 
Estaba tratando de adaptar el código del hilo Cómo poner QRRichText en negrita para una aplicación en C++ Builder 6. Lo he dejado así:
Función
Código:

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:
Código:

Negrita(fCarSoc->RichText->ParentRichEdit, Label10->Caption);
Se compila sin problema, pero al ejecutarlo me da un mensaje de error:


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

ecfisa 16-04-2014 16:34:22

Hola Angel.

Código:

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:
Código:

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:
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.


La franja horaria es GMT +2. Ahora son las 11:38: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