 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
faccruz Colaborador

Registrado: Terça-Feira, 20 de Julho de 2010 Mensagens: 1563
|
Enviada: Ter Nov 07, 2017 11:04 am Assunto: Editor HTML (Dúvidas) |
|
|
Bom dia,
Estou criando um editor de HTML, porém surgiram algumas dúvidas
1 - Como concatenar as tags HTML? (Ex. <font>)
Sendo que eu preciso selecionar o texto onde irei aplicar a tag? _________________ Facc System - Sistemas para Computador |
|
| Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Ter Nov 07, 2017 11:46 am Assunto: |
|
|
Você quer concatenar as tags no início e fim ao texto selecionado?
Se estiver utilizando um RichEdit:
| Código: | | RichEdit1.SelText:= '<font>' + RichEdit1.SelText + '</font>'; |
_________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
| Voltar ao Topo |
|
 |
faccruz Colaborador

Registrado: Terça-Feira, 20 de Julho de 2010 Mensagens: 1563
|
Enviada: Ter Nov 07, 2017 12:15 pm Assunto: |
|
|
O Fórum me trolou, rsrs
Na verdade quero concatenar todos os tipos de estilos CSS
Ex.: Font size="4" face="Times New Roman" color = "#000"
Atualmente está assim
Deveria ficar todas as formatações juntas _________________ Facc System - Sistemas para Computador |
|
| Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Ter Nov 07, 2017 4:13 pm Assunto: |
|
|
Para facilitar, te sugiro a criar um Editor de Texto comum com RichEdit em que o usuário formata o texto como desejado (Cor, Fonte, Tamanho, Alinhamento).
E no final é possível converter o conteúdo formatado para HTML.
Segue função que converte o texto do RichEdit para HTML e salva no Clipboard, depois copiamos para um StringList para gerar o arquivo HTML.
uses:
| Código: | | SHDocVw, MSHTML, ShellApi |
Função:
| Código: | function ClipboardToHTML(AParent: TWinControl): WideString;
var
wb: TWebBrowser;
function WaitDocumentReady: Boolean;
var
StartTime: DWORD;
begin
StartTime := GetTickCount;
while wb.ReadyState <> READYSTATE_COMPLETE do
begin
Application.HandleMessage;
if GetTickCount >= StartTime + 2000 then // time-out of max 2 sec
begin
Result := False; // time-out
Exit;
end;
end;
Result := True;
end;
begin
Result := '';
wb := TWebBrowser.Create(nil);
try
wb.Silent := True;
wb.Width := 0;
wb.Height := 0;
wb.Visible := False;
TWinControl(wb).Parent := AParent;
wb.HandleNeeded;
if wb.HandleAllocated then
begin
wb.Navigate('about:blank');
(wb.Document as IHTMLDocument2).designMode := 'on';
if WaitDocumentReady then
begin
(wb.Document as IHTMLDocument2).execCommand('Paste', False, 0);
Result := (wb.Document as IHTMLDocument2).body.innerHTML;
end;
end;
finally
wb.Free;
end;
end; |
Exemplo de uso (aproveitando o código do seu outro post para gerar HTML):
| Código: | var
HTML: TStringList;
caminho: string;
begin
try
HTML := TStringList.Create;
caminho := GetTempFolderWindows('TEMP') + '\' + 'teste.html';
if FileExists(caminho) then
DeleteFile(caminho);
HTML.Add('<DOCTYPE>');
HTML.Add('<html>');
HTML.Add(' <head>');
HTML.Add(' <meta>');
HTML.Add(' </head>');
HTML.Add('<body>');
RichEdit1.SelectAll;
RichEdit1.CopyToClipboard;
HTML.Add(ClipboardToHTML(Self));
HTML.Add('</body>');
HTML.Add('</html>');
HTML.SaveToFile(caminho);
ShellExecute(Handle, 'open', PChar(caminho), nil, nil, SW_SHOWMAXIMIZED);
finally
FreeAndNil(HTML);
end;
end; |
Função extraída do link:
https://stackoverflow.com/questions/11954946/how-to-convert-simple-richtext-to-html-tags-in-delphi _________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
| Voltar ao Topo |
|
 |
faccruz Colaborador

Registrado: Terça-Feira, 20 de Julho de 2010 Mensagens: 1563
|
Enviada: Seg Nov 13, 2017 12:46 pm Assunto: |
|
|
| natanbh1 escreveu: | Para facilitar, te sugiro a criar um Editor de Texto comum com RichEdit em que o usuário formata o texto como desejado (Cor, Fonte, Tamanho, Alinhamento).
E no final é possível converter o conteúdo formatado para HTML.
Segue função que converte o texto do RichEdit para HTML e salva no Clipboard, depois copiamos para um StringList para gerar o arquivo HTML.
uses:
| Código: | | SHDocVw, MSHTML, ShellApi |
Função:
| Código: | function ClipboardToHTML(AParent: TWinControl): WideString;
var
wb: TWebBrowser;
function WaitDocumentReady: Boolean;
var
StartTime: DWORD;
begin
StartTime := GetTickCount;
while wb.ReadyState <READYSTATE_COMPLETE>= StartTime + 2000 then // time-out of max 2 sec
begin
Result := False; // time-out
Exit;
end;
end;
Result := True;
end;
begin
Result := '';
wb := TWebBrowser.Create(nil);
try
wb.Silent := True;
wb.Width := 0;
wb.Height := 0;
wb.Visible := False;
TWinControl(wb).Parent := AParent;
wb.HandleNeeded;
if wb.HandleAllocated then
begin
wb.Navigate('about:blank');
(wb.Document as IHTMLDocument2).designMode := 'on';
if WaitDocumentReady then
begin
(wb.Document as IHTMLDocument2).execCommand('Paste', False, 0);
Result := (wb.Document as IHTMLDocument2).body.innerHTML;
end;
end;
finally
wb.Free;
end;
end; |
Exemplo de uso (aproveitando o código do seu outro post para gerar HTML):
| Código: | var
HTML: TStringList;
caminho: string;
begin
try
HTML := TStringList.Create;
caminho := GetTempFolderWindows('TEMP') + '\' + 'teste.html';
if FileExists(caminho) then
DeleteFile(caminho);
HTML.Add('<DOCTYPE>');
HTML.Add('<html>');
HTML.Add(' <head>');
HTML.Add(' <meta>');
HTML.Add(' </head>');
HTML.Add('<body>');
RichEdit1.SelectAll;
RichEdit1.CopyToClipboard;
HTML.Add(ClipboardToHTML(Self));
HTML.Add('</body>');
HTML.Add('</html>');
HTML.SaveToFile(caminho);
ShellExecute(Handle, 'open', PChar(caminho), nil, nil, SW_SHOWMAXIMIZED);
finally
FreeAndNil(HTML);
end;
end; |
Função extraída do link:
https://stackoverflow.com/questions/11954946/how-to-convert-simple-richtext-to-html-tags-in-delphi |
Valeu pela dica, porém, está sendo aberto um arquivo em branco _________________ Facc System - Sistemas para Computador |
|
| Voltar ao Topo |
|
 |
faccruz Colaborador

Registrado: Terça-Feira, 20 de Julho de 2010 Mensagens: 1563
|
Enviada: Seg Nov 13, 2017 1:06 pm Assunto: |
|
|
Achei onde estava o erro.
Mas apareceu outra dificuldade, estou utilizando o TJvRichEdit por causa que eu preciso adicionar imagens no HTML.
Porém, ao utilizar a função para converter, ela simplesmente ignora a imagem, gerando apenas as outras tags. _________________ Facc System - Sistemas para Computador |
|
| Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Qui Nov 16, 2017 9:48 am Assunto: |
|
|
Realmente esta função que postei não funciona com imagem.
Tem uma alternativa com a bibilioteca Jedi com o componente JvRichEditToHtml.
Mas infelizmente ela também não dá suporte a conversão com imagens.
Documentação:
| Citação: | | http://wiki.delphi-jedi.org/wiki/JVCL_Help:TJvRichEditToHtml |
| Citação: | | Please note that TJvRichEditToHtml does not attempt to convert tabs, tables, images, or other advanced RTF markup instructions. |
| Citação: | | Por favor, note que o TJvRichEditToHtml não tenta converter guias, tabelas, imagens ou outras instruções avançadas de marcação RTF. |
Exemplo de uso:
| Código: | var
caminho: string;
begin
caminho := GetTempFolderWindows('TEMP') + '\' + 'teste.html';
if FileExists(caminho) then
DeleteFile(caminho);
JvRichEditToHtml1.ConvertToHtml(JvRichEdit1, caminho);
ShellExecute(Handle, 'open', PChar(caminho), nil, nil, SW_SHOWMAXIMIZED);
end; |
Se eu descobrir alguma maneira de converter para html com imagens lhe aviso. _________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|