Newsgroup: it.comp.lang.delphi
Titolo: Visualizzazione pagina HTML incorporata (stile Outlook)


ABLS Team - 
www.abls.it
SINTESI S.r.l. - 
www.sintesi.com

 procedure del programma?
Se hai installato Internet Explorer, puoi usare il componente
WebBrowser, presente nella palette dei componenti "Internet".
Usando il metodo Navigate, gli consenti o di aprire una pagina
web (in questo caso gli passi un url), o di aprire un documento
su disco (in questo caso gli passi il percorso del documento).
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Su delphi5/6: TWebBrowser.
Se non lo trovi nella palette, cercalo nella component list.
Bye
AS


 ha scritto nel messaggio
news:e49dcf3e51a7f210edd...@mygate.mailgate.org...

Ho analizzato le funzionalità del controllo WebBrowser che avevo già in
parte esaminato, ma sul quale non mi ero soffermato. Gli eventi
OnBeforeNavigate dovrebbero permettermi di individuare i link cliccati, e
quindi reagire di conseguenza visualizzando una determinata interfaccia.
Non ho ben illustrato cosa intendo per pagina "incorporata": vorrei che il
controllo mi visualizzasse una pagina HTML generata al volo; questa pagina
potrebbe contenere, ad esempio, un elenco di attività in scadenza
(analogamente a Outlook 2000/XP): faccio clic sulla descrizione
dell'attività e mi si apre automaticamente la finestra di dialogo contenente
le proprietà dell'elemento stesso. E' possibile dare "in pasto" al controllo
WebBrowser una pagina Web non presente su disco, poichè generata al volo?
Ringrazio ancora per gli aiuti.


 WebBrowser una pagina Web non presente su disco, poichè generata al volo?
Hmmm... che io sappia no, ma immagino che tu possa salvare 
la pagina creata al volo in un file .html e dargliela in pasto
come file su disco.  Puoi crearla nella directory TEMP di Windows 
o, comunque, in una sottocartella TEMP della tua applicazione.



Thanks. Proverò questa soluzione, poi farò sapere i risultati, così se
qualcun altro avrà bisogno di simili funzionalità saprà già cosa fare.



Prova il componente all'indirizzo:
http://www.euromind.com/iedelphi/EmbeddedWb.htm
permette una personalizzazione molto buona dell'oggetto, molte interfacce di
IE sono state "delphizzate" e possono essere usate senza tanti dubbi...
Permette anche di buttare un documento HTML direttamente all'interno
dell'oggetto senza passare da files temporanei...
Se non ricordo male, è pure freeware per tutti gli scopi... :))
Su quel sito c'è molta roba, suggerimenti e codici utili per studiare ed
imparare a far andare IE come pare a noi in Delphi... very good.
Ciao
Matteo


 Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Ringrazio per l'aiuto. Ho visitato il sito che mi hai indicato e ho
scaricato il componente in questione. Non appena ho tempo, provo ad
installarlo. Ad ogni modo, sono riuscito ad arrivare ad un buon punto anche
utilizzando il semplice TWebBrowser come indicato dagli aiuti, puntuali e
corretti come sempre, degli altri partecipanti al thread. Vi spiego il
procedimento, qualora vi servisse in futuro per aggiungere questa
stuzzicante funzionalità alle vostre applicazioni, specialmente quando sono
rivolte ad una utenza che vuole avere un ambiente il più semplice e
intuitivo possibile.
La mia pagina "Today" (Oggi) è un TFrame che viene visualizzato all'avvio
del programma. Quando viene creato il frame, provvedo a generare il file
HTML sostituendo alcune macro inserite nel modello con i dati da
visualizzare; il file .htm viene salvato nella cartella in cui è installato
il programma (vedrò se spostarlo nella cartella dei file temporanei).
Successivamente, il testo viene dato in pasto al controllo WebBrowser che lo
visualizza utilizzando il metodo Navigate; da quel momento in poi, viene
gestito l'evento OnBeforeNavigate intercettando i clic dell'utente sulla
pagina HTML visualizzata. Ovviamente, i link utilizzati sono semplici parole
chiave (identificatori) che mi permettono, all'interno della routine di
evento, di capire quale link è stato selezionato, poichè l'URL viene passato
come parametro al metodo stesso; è possibile personalizzare completamente il
link per aggiungere parametri addizionali e quant'altro si ritiene
necessario: il formato è di libera scelta individuale. Ovviamente,
nell'evento OnBeforeNavigate occorre impostare il parametro Cancel a True
per evitare che il controllo WebBrowser tenti di muoversi all'indirizzo
"fake" (fasullo) associato al link. L'unico problema che rimane da risolvere
è la disabilitazione del menu visualizzabile facendo clic con il tasto
destro sul controllo WebBrowser, ma forse basta un po' di JavaScript per
limitarne le possibilità.
Vedo se il controllo suggerito da Matteo risolve il problema, ma sono
comunque giunto a buon punto grazie al vostro aiuto.
Ciao!


 il programma (vedrò se spostarlo nella cartella dei file temporanei).
_dovrebbe_ essere possibile farlo mangiare direttamente al webbrowser:
del resto e' quel che fa IE: non salva lo stream che arriva sulla porta
80 prima di visualizzarlo.
Mi pare ci sia nei demo degli ICS (i componenti di F.Piette) un esempio.
Al limite, puoi usare per produrre lo stream html un TPageProducer e lo
pubblichi su una tua porta da cui poi lo leggi con il webbrowser
Saluti
Paolo Arosio


Non sono del tutto sicuro che IE non salvi informazioni su disco quando
arrivano dati, specialmente quando la cache è abilitata; se anche fosse
vero, IE visualizza le informazioni ricevute poichè gli viene fornito un
indirizzo valido di risorsa dalla barra degli indirizzi, quindi la risorsa
da visualizzare deve comunque esistere (che venga salvata o meno); inoltre,
non posso pretendere che IE sia configurato in un modo particolare, o che
siano presenti componenti di rete.
Mi sembra un po' eccessivo gestire delle porte per implementare una simile
funzionalità; comunque, la gestione del file HTML esterno creato
dinamicamente funziona alla perfezione.
Grazie per i suggerimenti...se mi capitasse di dover visualizzare
informazioni che si riferiscono ad una rete di PC piuttosto che ad un solo
PC, sicuramente potrei utilizzare il tuo sistema per gestire le porte e
visualizzare le stesse informazioni su tutti i PC in maniera centralizzata.
