Problema com componente RichEdit no delphi 2010
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
Curtidas 0
Respostas
Wilson Junior
18/10/2010
Verifique se a propriedade PlainText do RichEdit está como False.
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
Alex Maia
18/10/2010
Está. Neste RichEdit também tenho que mostrar formações de textos, como: cores, fontes...
Mas não funciona no delphi 2010
GOSTEI 0
Fábio Cruz
18/10/2010
Experimentou apagar o componente e colocar o do Delphi2010?
GOSTEI 0
Alex Maia
18/10/2010
Também tentei apagando os ateriores e colocando novos, mas não funcionou.
GOSTEI 0
Wilson Junior
18/10/2010
Teste isto:
Espero ter colaborado.
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.
GOSTEI 0
Alex Maia
18/10/2010
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.
GOSTEI 0
Wilson Junior
18/10/2010
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.
Espero ter colaborado.
GOSTEI 0
Wilson Junior
18/10/2010
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.
PS: só para constar, os dados que lhe passei são do Firebird 2.
GOSTEI 0
Alex Maia
18/10/2010
O meu é campo tipo text no mysql
GOSTEI 0
Wilson Junior
18/10/2010
Olhe o código da unit DBCtrls, do componente TDBRichEdit
O seu campo Field deve ser do tipo BLOB.
Espero ter colaborado.
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.
GOSTEI 0
Wilson Junior
18/10/2010
e na mesma unit veja
Espero ter colaborado.
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.
GOSTEI 0
Thiago
18/10/2010
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
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
GOSTEI 0