WebControlWrapper

Buongiorno,

Dopo aver scoperto questa fantastica classe(WebControlWrapper) che permette di integrare control personalizzati in js ho iniziato a guardare gli esempi disponibili nella cartella Extras/WebSDK per cercare di capirci qualcosa. Purtroppo la mia preparazione sull’argomento molto scarsa e tolto il PDF disponibile sto facendo davvero fatica. C’ altra documentazione a me sfuggita? Qualcuno sa consigliarmi da dove iniziare?

Ho provato a integrare l’esempio YUI Rich Text Editor nella mia WEB app per ho riscontrato un problema. Ho integrato il control YUI2RTE in un Web Dialog che viene aperto da una WebPage. Dopo aver chiuso e riaperto la WebPage js mi da un errore(se la apro la prima volta non da nessun problema) :

Could not execute returned javascript: RSCustom.yui.RTE.xIq4PCjM_libraryLoaded is not a function Source: Xojo.createNamespace("yui.RTE"); Xojo.loadLibraries("http://yui.yahooapis.com/2.9.0/build/yahoo-dom-event/yahoo-dom-event.js", function() { Xojo.loadLibraries("http://yui.yahooapis.com/2.9.0/build/element/element-min.js", function() { Xojo.loadLibraries("http://yui.yahooapis.com/2.9.0/build/container/container_core-min.js", function() { Xojo.loadLibraries("http://yui.yahooapis.com/2.9.0/build/editor/simpleeditor-min.js", function() { setTimeout(RSCustom.yui.RTE.xIq4PCjM_libraryLoaded(),10); }); }); }); });

Da quello che ho capito io non riesce a ricaricare i file delle librerie perch probabilmente esistono gia. Sbaglio qualcosa io o c’ qualche errore nell’esempio?

Grazie a tutti

In effetti l’esempio pensato per una istanza sola.

Nel tuo caso devi cambiare il codice in modo che la libreria venga caricata una sola volta.
Per fare questo aggiungi una propriet boolan LoadLater

Nell’evento Open prima di LoadLibraries
inserisci

If Not IsLibraryRegistered(Session, JavascriptNamespace, JavascriptNamespace , 1) Then

dopo

RegisterLibrary(Session, JavascriptNamespace, JavascriptNamespace, 1) Else LoadLater=true End If

Aggiungi l’evento Shown (ricordandoti di ridefinirlo in modo a poterlo richiamare) e qui:

if LoadLater then ExecuteJavaScript("setTimeout(RSCustom.yui.RTE." + Me.ControlID + "_libraryLoaded(),1);") end if RaiseEvent Shown

Ora il controllo pu essere mostrato anche nelle dialog

Qui trovi due progetti xojo da cui puoi imparare molto.
Xojo Materialize
Xojo toast

Antonio ora funziona perfettamente! Preciso e tempestivo come sempre :slight_smile:

Grazie Luciano ora guardo tutto sperando di capirci qualcosa.