Formatação do Richedit

08/12/2021

0

Olá amigos,

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

Dirceu Morais

Responder

Posts

08/12/2021

Emerson Nascimento

De onde vem o texto padrão? De um outro campo BLOB SUB_TYPE 0?
O Re_Laudo está com PlainText = False?
Responder

08/12/2021

Dirceu Morais

Olá amigo,

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.

Responder

08/12/2021

Dirceu Morais

Olá Amigos,

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

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

Aceitar