Formatação do Richedit
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.
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.
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
Curtidas 0
Respostas
Emerson Nascimento
08/12/2021
De onde vem o texto padrão? De um outro campo BLOB SUB_TYPE 0?
O Re_Laudo está com PlainText = False?
O Re_Laudo está com PlainText = False?
GOSTEI 0
Dirceu Morais
08/12/2021
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.
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
Dirceu Morais
08/12/2021
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.
Obrigado a todos.
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