Fórum Formatação do Richedit #617330
08/12/2021
0
No meu software faço a impressão de Laudos, para isso coloquei 2 Richedit.
Porque Dois?
O primeiro (aqui eu acho Re_Padrao) tenho um texto padrão, para carregar o (Re_Laudo) quando for um novo laudo. Então o usuário faz as alterações e grava no banco o conteúdo do Re_Laudo.
Quando é um novo laudo e é buscado do Re_Padrao, o Re_Laudo vem configurado corretamente.
Quando é um um laudo já existente, ele é buscado do Banco de dados e ele fica desconfigurado.
//Carregar o Re_Laudo
Procedure Carrega_laudo()
Begin
If Novo_Laudo then
Re_Laudo.Text := Re_Padrao.text
Else
texto.Text := cdsLaudoRESULTADO.AsString;
end;
procedure Grava_laudo()
Begin
cdsLaudo.sql.text := 'Update OR Insert Into LAUDO (FICHA,RESULTADO,'+
'ASSINATURA, MEDICO, CRM, UFCRM, USERCAD, EMPRESA_ID) Values ('+
cdsPesquisaFICHA_ID.AsString+','+
QuotedStr(Re_Laudo.text) +','+
QuotedStr(MemoAssina.Text)+','+QuotedStr(MemoMedico.Text)+','+
QuotedStr(edCrm.Text)+','+QuotedStr(edUF.Text)+ ','+
USERCAD + ',' + cdsPesquisaID_EMPRESA.AsString + ') matching(Ficha)';
cdslaudo.execsql;
end;
O campo Resultado é tipo: /* BLOB SUB_TYPE 0 SEGMENT SIZE 80 */
No banco de dados é gravado certinho, já com a formatação.
PS: Lembrando que a formatação citada, refere-se a quebra de linhas e o alinhamento que é justificado, ou seja, quando é um novo laudo ele é carregado justificado e com as quebras de linhas corretamente, mas quando busca do BD ele perde esta configuração.
Desde já eu agradeço.
Dirceu Morais
Curtir tópico
+ 0Posts
08/12/2021
Emerson Nascimento
O Re_Laudo está com PlainText = False?
Gostei + 0
08/12/2021
Dirceu Morais
O Texto Padrão, vem de outro Richedit a qual eu dei o nome de Re_Padrao.
Quando é um "novo laudo" o texto padrão do Richedit1 é carregado no Richedit2,
Quando é uma alteração o texto é buscado do Banco de Dados.
A propriedade plaintext dos dois Richedit está setada como false.
Gostei + 0
08/12/2021
Dirceu Morais
Pode fechar o Post resolvido.
Resolvi o problema buscando o conteúdo do Banco de Dados e jogando em Stream.
Veja como ficou.
Procedure Carrega_laudo()
Var Stream : TMemoryStream;
Laudo : AnsiString;
Begin
If Novo_Laudo then
Re_Laudo.Text := Re_Padrao.text
Else
Begin
Try
Laudo := cdsLaudoRESULTADO.AsAnsiString;
//Escrever o conteudo do laudo na STREAM
stream := TMemoryStream.Create;
stream.Clear;
stream.Write(PAnsiChar(laudo)^, Length(laudo));
stream.Position := 0;
//Carrega a stream no RichEdit
Re_Laudo.PlainText := False;
Re_Laudo.Lines.LoadFromStream(stream);
Finally
stream.Free;
End;
end;
end;
Procedure Grava_Laudo()
Var Stream : TMemoryStream;
Laudo : AnsiString;
Begin
//Salvar no stream
stream := TMemoryStream.Create;
stream.Clear;
RE_LAUDO.Lines.SaveToStream(stream);
stream.Position := 0;
//Ler a partir do fluxo em um AnsiString (Laudo)
if (stream.Size > 0) then
begin
SetLength(Laudo, stream.Size);
if (stream.Read(Laudo[1], stream.Size) <= 0) then
raise EStreamError.CreateFmt('Fim do fluxo atingido com% d bytes restantes para ler', [stream.Size]);
end;
Finally
stream.Free;
End;
cdsLaudo.SQL.Text :=
'Update OR Insert Into RES_PSICOSOCIAL (FICHA,RESULTADO,'+
'ASSINATURA, MEDICO, CRM, UFCRM, USERCAD, EMPRESA_ID) Values ('+
cdsPesquisaFICHA_ID.AsString+
',:Re_Laudo,'+
QuotedStr(MemoAssina.Text)+','+QuotedStr(MemoMedico.Text)+','+
QuotedStr(edCrm.Text)+','+QuotedStr(edUF.Text)+ ','+
USERCAD + ',' + cdsPesquisaID_EMPRESA.AsString + ') matching(Ficha)';
//Grava no base de dados
cdsLaudo.ParamByName('Re_Laudo').AsAnsiString := Laudo;
cdsLaudo.ExecSQL;
End;
Obrigado a todos.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)