Fórum Problema com componente RichEdit no delphi 2010 #388728

18/10/2010

0

Olá, migrei um projeto do delphi 7 para o delphi 2010 e agora tenho problema com componentes do tipo RichEdit, pois eles não mostram os textos formatados corretamente. Por exemplo, o texto  CONFIRMACAO DE ERRO...           após salvar aparece assim: {\RTF1\ANSI\ANSICPG1252\DEFF0\DEFLANG1046{\FONTTBL{\F0\FNIL\FCHARSET0 ARIAL;}}{\COLORTBL ;\RED0\GREEN0\BLUE0;}\VIEWKIND4\UC1\PARD\CF1\B\FS20 CONFIRMACAO DE ERRO...\PAR\PAR} Alguém possui alguma solução para este problema? Ressalto que o mesmo projeto compilado no delphi 2007 não apresenta esse erro.   Desde já agradeço.   Alex Maia      
Alex Maia

Alex Maia

Responder

Posts

18/10/2010

Wilson Junior

Verifique se a propriedade PlainText do RichEdit está como False.

Espero ter colaborado.
Responder

Gostei + 0

18/10/2010

Alex Maia

Está. Neste RichEdit também tenho que mostrar formações de textos, como: cores, fontes... Mas não funciona no delphi 2010
Responder

Gostei + 0

18/10/2010

Fábio Cruz

Experimentou apagar o componente e colocar o do Delphi2010?
Responder

Gostei + 0

18/10/2010

Alex Maia

Também tentei apagando os ateriores e colocando novos, mas não funcionou.
Responder

Gostei + 0

19/10/2010

Wilson Junior

Teste isto:
procedure Carregar_TextoFormatado(reRichEdit: TRichEdit; TextoFormatado: string);
var
  streTexto: TStringStream;
begin
  streTexto := TStringStream.Create( TextoFormatado );
  try
    reRichEdit.Lines.LoadFromStream( streTexto );
  finally
    FreeAndNil( streTexto );
  end;
end;

{ Chamada do processo }
TextoFormatado := '{\RTF1\ANSI\ANSICPG1252\DEFF0\DEFLANG1046{\FONTTBL{\F0\FNIL\FCHARSET0 ARIAL;}}{\COLORTBL ;\RED0\GREEN0\BLUE0;}\VIEWKIND4\UC1\PARD\CF1\B\FS20 CONFIRMACAO DE ERRO...\PAR\PAR}';
Carregar_TextoFormatado( MeuRichEdit, TextoFormatado );


Espero ter colaborado.
Responder

Gostei + 0

19/10/2010

Alex Maia

Wilson, ainda não testei, mas desde já lhe agradeço pela resposta. Estou usando o DBRichEdit pra mostrar o texto salvo no banco. O ruim será ter que fazer isso em todas as partes do sistema que usam o DBRichEdit.   Vlw.
Responder

Gostei + 0

19/10/2010

Wilson Junior

Olha, utilizo o Delphi 2010 e tenho vários campos no banco definidos como "BLOB SUB_TYPE TEXT SEGMENT SIZE 100" e os utilizo também com o DBRichEdit, e não preciso fazer nada para os mesmos funcionarem (Exceto vincular o DataSet e o Field no DBRichEdit).

Espero ter colaborado.
Responder

Gostei + 0

19/10/2010

Wilson Junior

Ah, verifique qual o tipo do seu campo no banco de dados.
PS: só para constar, os dados que lhe passei são do Firebird 2.
Responder

Gostei + 0

19/10/2010

Alex Maia

O meu é campo tipo text no mysql
Responder

Gostei + 0

19/10/2010

Wilson Junior

Olhe o código da unit DBCtrls, do componente TDBRichEdit
procedure TDBRichEdit.UpdateData(Sender: TObject);
var
  Stream: TStringStream;
begin
  if FDataLink.Field.IsBlob then
  begin
    Stream := TStringStream.Create('');
    try
      Lines.SaveToStream(Stream);
      FDataLink.Field.AsString := Stream.DataString;
    finally
      Stream.Free;
    end;
  end else
    FDataLink.Field.AsString := Text;
end;


O seu campo Field deve ser do tipo BLOB.

Espero ter colaborado.
Responder

Gostei + 0

19/10/2010

Wilson Junior

e na mesma unit veja
procedure TDBRichEdit.LoadMemo;
var
  Stream: TStringStream;
begin
  if not FMemoLoaded and Assigned(FDataLink.Field) and FDataLink.Field.IsBlob then
  begin
    try
      Stream := TStringStream.create(FDataLink.Field.AsString);
      try
        Lines.LoadFromStream(Stream);
      finally
        Stream.Free;
      end;
      FMemoLoaded := True;
    except
      { Rich Edit Load failure }
      on E:EOutOfResources do
        Lines.Text := Format('(%s)', [E.Message]);
    end;
    EditingChange(Self);
  end;
end;


Espero ter colaborado.
Responder

Gostei + 0

12/11/2010

Thiago

procedure Carregar_TextoFormatado(reRichEdit: TRichEdit; TextoFormatado: string);
var
  streTexto: TStringStream;
begin
  streTexto := TStringStream.Create( TextoFormatado );
  try
    reRichEdit.Lines.LoadFromStream( streTexto );
  finally
    FreeAndNil( streTexto );
  end;
end;

{ Chamada do processo }
TextoFormatado := '{\RTF1\ANSI\ANSICPG1252\DEFF0\DEFLANG1046{\FONTTBL{\F0\FNIL\FCHARSET0 ARIAL;}}{\COLORTBL ;\RED0\GREEN0\BLUE0;}\VIEWKIND4\UC1\PARD\CF1\B\FS20 CONFIRMACAO DE ERRO...\PAR\PAR}';
Carregar_TextoFormatado( MeuRichEdit, TextoFormatado );
 

Troque para AnsiString que vai dar certim eu tive esse mesmo problema
procedure Carregar_TextoFormatado(reRichEdit: TRichEdit; TextoFormatado: AnsiString);var
  streTexto: TStringStream;
begin
  streTexto := TStringStream.Create( TextoFormatado );
  try
    reRichEdit.Lines.LoadFromStream( streTexto );
  finally
    FreeAndNil( streTexto );
  end;

Espero que tenha ajudado. açb
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar