Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247

    [DELPHI] Semplicissimo editor WYSIWYG

    Salve a tutti,

    sto cercando un componente VCL che faccia da semplice editor WYSIWYG per un documento RTF.

    E' sufficiente che gestisca l'allineamento del testo, il grassetto, il corsivo, il sottolineato, i collegamenti ipertestuali (molto importante) e delle semplicissime tabelle.

    Su Internet trovo solo strumenti troppo costosi e sofisticati, come WPTools. Quello che mi serve è molto, ma molto di meno.


    Grazie,
    Giacomo

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Hai già dato un'occhiata su Torry Delphi's Pages?

    In ogni caso, la problematica che affronti non è di semplice soluzione, ed è per questo motivo che i componenti di terze parti individuati hanno un certo costo.

    Potresti tentare la strada alternativa della costruzione di un editor WYSIWYG interagendo con il componente WebBrowser (wrapper di Internet Explorer) e adoperando le interfacce fornite dal componente, ma è senz'altro una attività tendenzialmente complessa.

    Inoltre, le interfacce che consentono l'editing HTML con Internet Explorer sono probabilmente soggette a cambiamenti con l'imminente versione 7.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Ho trovato un buon editor WYSIWYG javascript: TinyMCE.
    E' completamente gratuito e compatibile con MSIE 7.

    Ora la mia idea è di includere un componente TWebBrowser in un form, con Location una pagina HTML contenente TinyMCE. E questo l'ho già fatto.
    L'unico problema è che Delphi dovrebbe essere in grado di leggere il codice HTML all'interno di una <textarea>, "estrapolandolo" da una pagina web non salvata.
    Sono sicuro che questo è possibile, il punto è: come?

    Qualcuno mi saprebbe aiutare?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    L'unico problema è che Delphi dovrebbe essere in grado di leggere il codice HTML all'interno di una <textarea>, "estrapolandolo" da una pagina web non salvata.
    Sono sicuro che questo è possibile, il punto è: come?
    Nessuno ha qualche idea al riguardo?

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da firefox88
    Nessuno ha qualche idea al riguardo?
    Dovresti sfruttare le interfacce di programmazione COM messe a disposizione dal controllo per eseguire comandi, come ottenere il riferimento alla TEXTAREA in oggetto, e da lì risalire al suo contenuto.

    Prova a ricercare WebBrowser all'interno di Torry Delphi's Pages per alcuni esempi.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Originariamente inviato da alka
    Dovresti sfruttare le interfacce di programmazione COM messe a disposizione dal controllo per eseguire comandi, come ottenere il riferimento alla TEXTAREA in oggetto, e da lì risalire al suo contenuto.

    Prova a ricercare WebBrowser all'interno di Torry Delphi's Pages per alcuni esempi.

    Ciao!
    OK, mi sembra che ci sia un bel po' di roba, ti farò sapere...

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da firefox88
    OK, mi sembra che ci sia un bel po' di roba, ti farò sapere...
    Grazie. Sono curioso di sapere i risultati.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    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.

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Ottimo lavoro, e a buon rendere!

    Dovrei cimentarmi anche io, prossimamente, ad implementare qualcosa del genere, quindi se ci saranno ulteriori sviluppi e miglioramenti provvederò a riportarle in questo thread integrando le informazioni che hai già fornito.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.