Anteprima PDF, EXCEL, WORD in una FORM

344 views
Skip to first unread message

Serpico

unread,
Sep 22, 2010, 3:26:00 AM9/22/10
to Foxpro Italia
salve a tutti,
di nuovo qui a rompere e a chiedervi dei consigli.
Ho una form relativa agli articoli di magazzino nella quale posso
associare ad ogni articolo delle immagini (gif, bmp, jpg) e
visualizzare l'anteprima subito affianco.
E' possibile permettere la visualizzazione/anteprima di documenti
office e di file .pdf nello stesso modo?
Grazie mille
F.

foxuser

unread,
Sep 22, 2010, 4:21:11 AM9/22/10
to Foxpro Italia
Si è possibile in questo modo:

Sulla form devi mettere l' olecontrol "Microsoft Web Browser" e poi
utilizzi il seguente metodo:

lcFile="C:\prova\pippo.pdf"
*** lcFile= Strtran(lcFile," ","%20") && nel caso il file ha spazi
Thisform.olecontrol.Navigate(lcfile)

Considera che tale olecontrol è legato in qualche modo ad internet
explorer e che, provato su
su Windows XP e Windows 2003 entrambi con internet explorer 8,
funziona correttamente.
Sul mio PC (Win 7 + Internet explorer 9 beta ) con i
file .PDF,HTML,GIF,BMP,ICO,JPG funziona, ma quando provo a
visualizzare un file XLS o DOC non me lo visualizza nell' olecontrol
ma con EXCEL o WORD direttamente.
Se vuoi ti posto un piccolo esempio
Facci sapere
Ciao
Salvatore

Fabio Di Buò

unread,
Sep 22, 2010, 5:15:44 AM9/22/10
to foxpro...@googlegroups.com
Grazie per la risposta Salvatore.
Ti spiego quello che ho fatto.
Nella form ho una grid a sinistra(3 colonne, Numero, nomefile e un buttone per cercare e caricare l'immagine) e una classe Image a destra per visualizzare l'immagine caricata.
Sono andato nella form e ho tolto la classe Image.
Sono andato in Tools->Options->Controls->Microsoft Web Browser e messo la spunta su questo activeX.
L'ho aggiunto a destra della grid e cambiato dentro AfterRowColChange della grid il seguente codice:

THISFORM.PF.PageImmagini.olecontrol1.navigate(images.filename) 
THISFORM.PF.PageImmagini.REFRESH()
DODEFAULT()

Risultato?
Pagina di Bing con ricerca il nome del file importato.
:(


--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Foxpro Italia" di Google Gruppi.
Per postare messaggi in questo gruppo, invia un'email a foxpro...@googlegroups.com.
Per annullare l'iscrizione a questo gruppo, invia un'email a foxpro-itali...@googlegroups.com.
Per ulteriori opzioni, visita il gruppo all'indirizzo http://groups.google.com/group/foxpro-italia?hl=it.


foxuser

unread,
Sep 22, 2010, 5:35:38 AM9/22/10
to Foxpro Italia
nel campo images.filename c'e' il percorso completo del file ?
Ciao



On 22 Set, 11:15, Fabio Di Buò <fabio.di...@gmail.com> wrote:
> Grazie per la risposta Salvatore.
> Ti spiego quello che ho fatto.
> Nella form ho una grid a sinistra(3 colonne, Numero, nomefile e un buttone
> per cercare e caricare l'immagine) e una classe Image a destra per
> visualizzare l'immagine caricata.
> Sono andato nella form e ho tolto la classe Image.
> Sono andato in Tools->Options->Controls->Microsoft Web Browser e messo la
> spunta su questo activeX.
> L'ho aggiunto a destra della grid e cambiato dentro AfterRowColChange della
> grid il seguente codice:
>
> THISFORM.PF.PageImmagini.*olecontrol1*.navigate(images.filename)
> > foxpro-itali...@googlegroups.com<foxpro-italia%2Bunsu...@googlegroups.com>
> > .

Fabio Di Buò

unread,
Sep 22, 2010, 5:40:14 AM9/22/10
to foxpro...@googlegroups.com
Ho appena risolto! ;)
C'era solo il nome...ora ho messo tutto il percorso completo et voilà...funziona!
Come te mi visualizza tutti i file ad eccezione di excel e word che mi da le opzioni come se lo scaricassi da internet
Apri Salva Annulla
Ho windows xp e internet explorer 7

Per annullare l'iscrizione a questo gruppo, invia un'email a foxpro-itali...@googlegroups.com.

Barbara Vito

unread,
Sep 22, 2010, 6:50:02 AM9/22/10
to Foxpro Italia
Interessante questa cosa.
E se avessi bisogno solamente di aprire il programma giusto per ogni
estensione caricata?
Carico un immagine, posso anche visualizzarla affianco.
Carico un pdf. Apro il pdf. Carico un documento office, apro MOffice.
C'è qualcosa che mi permette di effettuare questo?
> > > > foxpro-itali...@googlegroups.com<foxpro-italia%2Bunsubscribe@goog legroups.com>
> > <foxpro-italia%2Bunsu...@googlegroups.com<foxpro-italia%252Bunsubscribe @googlegroups.com>
>
> > > > .
> > > > Per ulteriori opzioni, visita il gruppo all'indirizzo
> > > >http://groups.google.com/group/foxpro-italia?hl=it.
>
> > --
> > Hai ricevuto questo messaggio perché sei iscritto al gruppo "Foxpro Italia"
> > di Google Gruppi.
> > Per postare messaggi in questo gruppo, invia un'email a
> > foxpro...@googlegroups.com.
> > Per annullare l'iscrizione a questo gruppo, invia un'email a
> > foxpro-itali...@googlegroups.com<foxpro-italia%2Bunsubscribe@goog legroups.com>

pippo

unread,
Sep 22, 2010, 9:00:42 AM9/22/10
to Foxpro Italia
Se ho capito bene vuoi aprire il programma in una finestra
indipendente,
mentre visualizzi il file nel form, io mi sono fatto una cosa così:

LOCAL cheapre, myfile
myfile = "Pippo.pdf"
DO CASE
CASE UPPER(JUSTEXT(myfile)) = "XLS"
cheapre = "Excel.exe"
CASE UPPER(JUSTEXT(myfile)) = "DOC"
cheapre = "Winword.exe"
CASE UPPER(JUSTEXT(myfile)) = "PDF"
cheapre = "AcroRd32.exe"
ENDCASE
oShell=CreateObject("Shell.Application")
oShell.ShellExecute(cheapre)

Se vuoi aprire il file in una finestra indipendente:

cheapre = "C:\suopath\Pippo.xls"
oShell=CreateObject("Shell.Application")
oShell.ShellExecute(cheapre)

Sul buon vecchio foxitaly trovi documentazione sull'argomento
http://www.foxitaly.com/risorsetecniche/ShellApplication.htm

In alternativa puoi usare un'automazione del tipo

LOCAL oExcel, oWorkbook, oWorksheet
oExcel = CreateObject("Excel.Application")
oExcel.SheetsInNewWorkbook =1 && o quelli che ti servono
oWorkbook = oExcel.Workbooks.Add()
oWorkbook.Sheets(1).Name = "pippo"
oWorksheet = oWorkbook.Worksheets[1]
oWorksheet.Activate
oExcel.Visible=.T.

pippo

Fabio Di Buò

unread,
Sep 22, 2010, 10:01:49 AM9/22/10
to foxpro...@googlegroups.com
Io l'ho provato, ma il primo pezzo di codice
apre solamente il programma senza il file selezionato.
riconosce l'estensione e lo apre...ma io vorrei che aprisse anche il file selezionato.

Comunque ottima anche questa soluzione.

--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Foxpro Italia" di Google Gruppi.
Per postare messaggi in questo gruppo, invia un'email a foxpro...@googlegroups.com.
Per annullare l'iscrizione a questo gruppo, invia un'email a foxpro-itali...@googlegroups.com.

Serpico

unread,
Sep 22, 2010, 10:44:24 AM9/22/10
to Foxpro Italia
LOCAL cheapre, myfile
myfile = "Pippo.pdf"
DO CASE
CASE UPPER(JUSTEXT(myfile)) = "XLS"
cheapre = "Excel.exe"
CASE UPPER(JUSTEXT(myfile)) = "DOC"
cheapre = "Winword.exe"
CASE UPPER(JUSTEXT(myfile)) = "PDF"
cheapre = "AcroRd32.exe"
ENDCASE
oShell=CreateObject("Shell.Application")
oShell.ShellExecute(cheapre,"myFile")

Non dovrebbe aprire il programma con il file indicato??

On 22 Set, 16:01, Fabio Di Buò <fabio.di...@gmail.com> wrote:
> Io l'ho provato, ma il primo pezzo di codice
> apre solamente il programma senza il file selezionato.
> riconosce l'estensione e lo apre...ma io vorrei che aprisse anche il file
> selezionato.
>
> Comunque ottima anche questa soluzione.
>
> Il giorno 22 settembre 2010 15:00, pippo <vecchiopi...@tiscali.it> ha
> > foxpro-itali...@googlegroups.com<foxpro-italia%2Bunsubscribe@goog legroups.com>
> > .

pippo

unread,
Sep 22, 2010, 11:19:53 AM9/22/10
to Foxpro Italia
Infatti avevo vevo capito che tu volessi aprire il programma vuoto
facendo in modo che il sistema capisse quale programma aprire
da un file di partenza. In realtà la domanda era di Barbara, qualche
post più sopra. Per aprirli assieme comunque:

LOCAL cheapre
cheapre = "C:\lasuapath\\Pippo.xls"
oShell=CreateObject("Shell.Application")
oShell.ShellExecute(cheapre)

Lo puoi anche stampare:
oShell.ShellExecute(cheapre,"","","print")
Gli puoi passare dei parametri e definire il formato della finestra:
oShell.ShellExecute(cheapre,"","","open",3) && finestra ingrandita
oShell.ShellExecute(cheapre,"","","open",4) && posizione e dimensioni
usate più di recente
queste cose le trovi qui:
http://support.microsoft.com/kb/238245/en-us

pippo

Fabio Di Buò

unread,
Sep 22, 2010, 12:03:45 PM9/22/10
to foxpro...@googlegroups.com
cName = ALLTRIM(GETFILE('', 'Tutti i file', 'Apri'))
IF !EMPTY(cName)
cExt = RIGHT(cName, 3)
IF ((cExt == 'GIF') OR (cExt == 'JPG') OR (cExt == 'BMP')) THEN
.Image1.PICTURE = cName
ELSE 
myfile = "cName"  *provato con myfile = "c:\mypath\file.xls"
oShell = CreateObject("Shell.Application")
oShell.ShellExecute(myFile)
ENDIF 

Non mi apre il file.
Tenta di aprirmi il programma e poi mi dice che il file cName.xlsx nel caso di file excel non viene trovato.
Ho provato ad impostare un file senza sceglierlo e me lo apre, quindi a questo punto non gli piace il mio cName, ma perchè?


Per annullare l'iscrizione a questo gruppo, invia un'email a foxpro-itali...@googlegroups.com.

Gianni

unread,
Sep 22, 2010, 12:27:01 PM9/22/10
to foxpro...@googlegroups.com
myfile = cName

non

myfile = "cName"

Gianni

>> > > > foxpro-itali...@googlegroups.com<foxpro-italia%2Bunsu...@googlegroups.com>


>> <foxpro-italia%2Bunsubscribe@goog legroups.com>
>> > > > .
>> > > > Per ulteriori opzioni, visita il gruppo all'indirizzo
>> > > >http://groups.google.com/group/foxpro-italia?hl=it.
>>
>> --
>> Hai ricevuto questo messaggio perché sei iscritto al gruppo "Foxpro Italia"
>> di Google Gruppi.
>> Per postare messaggi in questo gruppo, invia un'email a
>> foxpro...@googlegroups.com.
>> Per annullare l'iscrizione a questo gruppo, invia un'email a

>> foxpro-itali...@googlegroups.com<foxpro-italia%2Bunsu...@googlegroups.com>

foxuser

unread,
Sep 22, 2010, 3:50:51 PM9/22/10
to Foxpro Italia
Di seguito il file shell.prg

Per aprire un qualsiasi file

do shell.prg with "c:\prova\miofile.xxx"

Leggendo di seguito ci sono le spiegazioni per l'utilizzo con altri
parametri.
Ciao
Salvatore



*!* *********
*!* parametri:
*!* lclink : e’ una stringa che puo rappresentare diverse cose :
*!* la path + il nome di un eseguibile ;
*!* la path + il nome di un file riconosciuto dal sistema
operativo(txt, doc, htm,xls,lnk ecc);
*!* tutto cio che ha senso nella finestra start – esegui del sistema
operativo;
*!* *******
*!* lcaction : è l’operazione definita in windows per un certo file;
se si fa click-destro su un certo
*!* file(registrato nel sistema) si vedrà quali sono le operazioni
disponibili per quel file.
*!* quelle comuni sono: apri, modifica,print,….
*!* quando lcaction non viene specificato, si esegue quella implicita
che windows fa vedere in grassetto.
*!* *******
*!* lcparms: certi programmi accettano parametri nella riga di
commando che di solito sono nomi di file .
*!* ad esempio il programma notepad.exe acceta come parametro nella
riga di commando un
*!* nome di file di tipo testo: notepad.exe c:\autoexec.bat
*!* *******
*!* lcdir : e’ il la directory di partenza per il programma che si
lancia;
*!* *******
*!* lcmodapertura: fa riferimento al modo in quale la finestra del
programma che si lancia sara’ aperta.
*!* l’elenco qui sotto contiene i valori possibili per questo
parametro.
*!* valori per il parametro lcmodapertura
*!* descrizione
*!* 1,5,9 finestra normale col focus
*!* 2 finestra minimizzata col focus
*!* 3 finestra massimizzata col focus
*!* 4, 8 finestra avra’ la posizione e la dimensione della
precedenta apertura, ma senza il focus. la finestra corrente rimane
attiva.
*!* 6,7 la finestra sara’ aperta come icona senza il focus. la
finestra corrente rimane attiva.
*!* torna al metodo shellexecute torna all'inizio del documento
lparameter lclink, lcaction, lcparms, lcdir,lcmodapertura
lcaction = iif(empty(lcaction), "Open", lcaction)
lcparms = iif(empty(lcparms), "", lcparms)
lcdir=iif(empty(lcdir),"",lcdir)
lcmodapertura=iif(empty(lcmodapertura),1,lcmodapertura)
declare integer ShellExecute in SHELL32.dll ;
integer nWinHandle, ;
string cOperation, ;
string cFileName, ;
string cParameters, ;
string cDir, ;
integer nShowWindow

declare integer FindWindow ;
in WIN32API ;
string cNull,string cWinName

return shellexecute(findwindow(0, _screen.caption), ;
@lcaction, @lclink, ;
@lcparms, @lcdir, lcmodapertura)
> >Il giorno 22 settembre 2010 17:19, pippo <vecchiopi...@tiscali.it> ha
> >> > > > foxpro-itali...@googlegroups.com<foxpro-italia%2Bunsubscribe@goog­legroups.com>
> >> <foxpro-italia%2Bunsubscribe@goog legroups.com>
> >> > > > .
> >> > > > Per ulteriori opzioni, visita il gruppo all'indirizzo
> >> > > >http://groups.google.com/group/foxpro-italia?hl=it.
>
> >> --
> >> Hai ricevuto questo messaggio perché sei iscritto al gruppo "Foxpro Italia"
> >> di Google Gruppi.
> >> Per postare messaggi in questo gruppo, invia un'email a
> >> foxpro...@googlegroups.com.
> >> Per annullare l'iscrizione a questo gruppo, invia un'email a
> >> foxpro-itali...@googlegroups.com<foxpro-italia%2Bunsubscribe@goog­legroups.com>
> >> .
> >> Per ulteriori opzioni, visita il gruppo all'indirizzo
> >>http://groups.google.com/group/foxpro-italia?hl=it.- Nascondi testo citato
>
> - Mostra testo citato -

Fabio Di Buò

unread,
Sep 23, 2010, 4:18:47 AM9/23/10
to foxpro...@googlegroups.com
Quali potrebbero essere le cause che influiscono sul mancato ridimensionamento di una form in fase di esecuzione?
Eppure non ho fatto grandi modifiche alla form esistente...
Integrato il DoubleClick di un pulsante, aggiunto un altro pulsate e modificato il Click.
Anchor???

Per annullare l'iscrizione a questo gruppo, invia un'email a foxpro-itali...@googlegroups.com.

foxuser

unread,
Sep 23, 2010, 6:12:21 AM9/23/10
to Foxpro Italia
Il mancato ridimensionamento di una form puoì essere causato dal
setfocus() di qualche controllo che viene richiamato in fase di "INIT"
degli oggetti stessi (che avviene prima di eseguire l'init della form)
Prova a verificare con SET STEP ON messo nel LOAD della form e segui
passo passo tutti gli eventi.
Ciao

Salvatore
> > > >> > > > foxpro-itali...@googlegroups.com<foxpro-italia%2Bunsu...@googlegroups.com>
> > <foxpro-italia%2Bunsubscribe@goog­legroups.com>
> > > >> <foxpro-italia%2Bunsubscribe@goog legroups.com>
> > > >> > > > .
> > > >> > > > Per ulteriori opzioni, visita il gruppo all'indirizzo
> > > >> > > >http://groups.google.com/group/foxpro-italia?hl=it.
>
> > > >> --
> > > >> Hai ricevuto questo messaggio perché sei iscritto al gruppo "Foxpro
> > Italia"
> > > >> di Google Gruppi.
> > > >> Per postare messaggi in questo gruppo, invia un'email a
> > > >> foxpro...@googlegroups.com.
> > > >> Per annullare l'iscrizione a questo gruppo, invia un'email a
> > > >> foxpro-itali...@googlegroups.com<foxpro-italia%2Bunsu...@googlegroups.com>
> > <foxpro-italia%2Bunsubscribe@goog­legroups.com>
> > > >> .
> > > >> Per ulteriori opzioni, visita il gruppo all'indirizzo
> > > >>http://groups.google.com/group/foxpro-italia?hl=it.-Nascondi testo
> > citato
>
> > > - Mostra testo citato -
>
> > --
> > Hai ricevuto questo messaggio perché sei iscritto al gruppo "Foxpro Italia"
> > di Google Gruppi.
> > Per postare messaggi in questo gruppo, invia un'email a
> > foxpro...@googlegroups.com.
> > Per annullare l'iscrizione a questo gruppo, invia un'email a
> > foxpro-itali...@googlegroups.com<foxpro-italia%2Bunsu...@googlegroups.com>
Reply all
Reply to author
Forward
0 new messages