Originariamente inviato da alka
Grazie. Sono curioso di sapere i risultati.
Una volta tanto, posso dirti di aver conseguito un ottimo risultato.
L'editor TinyMCE non è un gran che, ma è gratuito e perlomeno funziona. Ecco come inserirlo in Delphi come editor WYSIWYG:
codice:
var
Document : IHTMLDocument2;
elem : IHTMLTextAreaElement;
[...]
WebBrowser1.Navigate(ExtractFilePath(Application.ExeName) + 'index.html');
Screen.Cursor := crAppStart;
try
while WebBrowser1.Busy do
begin
Application.ProcessMessages;
Sleep(50);
end;
repeat
Application.ProcessMessages;
Sleep(50);
until WebBrowser1.ReadyState = 4;
// ^ Il ciclo serve ad evitare che Delphi interagisca con Internet Explorer
// prima che abbia terminato di caricare la pagina, con conseguenze disastrose.
finally
Screen.Cursor := crDefault;
Document := WebBrowser1.Document as IHTMLDocument2;
elem := Document1.all.item('htmlbox', 0) as IHTMLTextAreaElement;
elem.value := UnaStringaQualsiasi;
Document.parentWindow.ExecScript('tinyMCE.updateContent(''htmlbox'')', 'javascript');
end;
Quindi, per richiamare il codice HTML scritto dall'utente:
codice:
Document := WebBrowser1.Document as IHTMLDocument2;
Document.parentWindow.ExecScript('tinyMCE.triggerSave()', 'javascript');
elem := Document.all.item('htmlbox', 0) as IHTMLTextAreaElement;
HTMLText := elem.value;
if HTMLText = '
</p>' then HTMLText := '';
Il documento index.html deve contenere una <textarea> con id "htmlbox", e ovviamente un richiamo a TinyMCE come specificato nei manuali dello stesso.
Per togliere le barre di scorrimento, il menu di contesto e la selezione del testo da TWebBrowser, consiglio TWBContainer.