CAMPO ALLEGATO - APERTURA FINESTRA GESTIONE ALLEGATO DA CODICE

di il
12 risposte

CAMPO ALLEGATO - APERTURA FINESTRA GESTIONE ALLEGATO DA CODICE

Buongiorno a tutti.

Vorrei, da codice, spostare il focus sul un campo allegato ed aprire direttamente la finestra di gestione degli allegati senza dover fare doppio click sul campo.

Ho provato, dopo essermi posizionato con SetFocus sul campo allegato, a simulare il doppio click del mouse con SendKeys. Ma non funziona.

Probabilmente si può settare qualche proprietà del campo per abilitare la visualizzazione della maschera di gestione, ma non l'ho trovata.

Sapreste indicarmi il codice per aprire da una function la finestra di gestione degli allegati di cui sotto?

Grazie

12 Risposte

  • Re: CAMPO ALLEGATO - APERTURA FINESTRA GESTIONE ALLEGATO DA CODICE

    Molto semplicemente devi evocare il metodo doppio click.

  • Re: CAMPO ALLEGATO - APERTURA FINESTRA GESTIONE ALLEGATO DA CODICE

    Buongiorno Sihsandrea.

    Sei sicuro funzioni anche su una form di Access.

    Io non riesco ad applicarlo, DoubleClick non compare tra le proprietà/metodi di Application.

    Sbaglio sintassi o mi manca qualche libreria ?

    Il codice è contenuto all'interno si una Sub.

    Il focus viene correttamente spostato sul campoAllegato

    Private Sub Tipologia_Spesa_AfterUpdate()
    …
    Me.CampoAllegato.SetFocus
    Application.DoubleClick    'da errore 
    …
  • Re: CAMPO ALLEGATO - APERTURA FINESTRA GESTIONE ALLEGATO DA CODICE

    05/11/2023 - StefanoACC ha scritto:


    Private Sub Tipologia_Spesa_AfterUpdate() … Me.CampoAllegato.SetFocus Application.DoubleClick 'da errore …

    Cos'è???

    https://it.comp.appl.access.narkive.com/bRD7wRLx/evento-lanciato-da-un-altra-maschera#

    Cosa hai scritto su doppio click?

    A parte che puoi scrivere lo stesso codice anche su doppio click di qualsiasi oggetto.

  • Re: CAMPO ALLEGATO - APERTURA FINESTRA GESTIONE ALLEGATO DA CODICE

    E' un apice cui segue il commento “da errore”

    Io non voglio verificare l'evento doppio click o inserire una funzione su evento doppio click.

    Io ho un campo di tipo “allegato” (chiaramente collegato ad una tabella) . per inserirci un allegato si deve aprire la ‘finestra di gestione degli allegati’ facendo doppio click sul campo,  e da qui si inserisce un allegato nel campo o si gestiscono quelli già inseriti .

     Per velocizzare le operazioni di inserimento, nella mia maschera c'è una sub che al verificarsi di una data condizione sposta il focus direttamente sul campo di tipo “allegato”, ed a questo punto io voglio che da codice si apra automaticamente anche la finestra di gestione degli allegati , evitando così di dover fare  doppio click con il mouse sul campo .

    Quindi ho provato da codice a simulare il doppio click con l'istruzione

    ...
    Me.CampoAllegato.SetFocus
    SendKeys "{F2}" 
    ...

    ma non funziona. 

    Ho provato anche (trovato in rete)

    ...
    Me.CampoAllegato.SetFocus
    SendKeys "{F2}" 
    SendKeys "{HOME}" 
    ...

    Non funziona…

    C'è qualcuno che sappia indicarmi il codice per aprire da sub la finestra di gestione degli allegati di un campo di tipo allegato ?

    grazie in anticipo

  • Re: CAMPO ALLEGATO - APERTURA FINESTRA GESTIONE ALLEGATO DA CODICE

    Scusa, come fa access a capire che al doppio click non deve colorare lo sfondo di rosso ma aprire una finestra?

    Puoi mettere un po' di codice?

    05/11/2023 - StefanoACC ha scritto:


    Ho provato anche (trovato in rete)

    ...
    Me.CampoAllegato.SetFocus
    SendKeys "{F2}" 
    SendKeys "{HOME}" 
    ...

    Non funziona…

    Questo codice dove lo hai inserito?

    05/11/2023 - StefanoACC ha scritto:


    Quindi ho provato da codice a simulare il doppio click con l'istruzione

    ...
    Me.CampoAllegato.SetFocus
    SendKeys "{F2}" 
    ...

    ma non funziona. 

    Questo codice dove lo hai inserito?

    Poi, mi fai vedere cosa c'è scritto sul doppio click che apre la finestra? Da sub oggetto_dblclick… o qualcosa del genere

  • Re: CAMPO ALLEGATO - APERTURA FINESTRA GESTIONE ALLEGATO DA CODICE

    I campi allegati non si usano per le note controindicazioni… mi chiedo perche invece tu li stia usando…?

  • Re: CAMPO ALLEGATO - APERTURA FINESTRA GESTIONE ALLEGATO DA CODICE

    Prima di tutto grazie a tutti per la collaborazione.

    Scusate se insisto. Convengo che ci siano delle controindicazioni, ma il programma ed il codice assolvono da tempo alle loro funzioni, anche se magari potevano essere scritti meglio o ottimizzati.

    Vorrei solo ulteriormente velocizzare un passaggio per l'inserimento di un allegato nel campo. 

    In una form. La mia sub in uscita dal campoX, verifica il contenuto del campoY e se quest'ultimo IsNull salta direttamente al campo Allegato. A questo punto ora si deve fare doppio click sul campo e si inserisce l'allegato. Io vorrei automatizzare anche questo passaggio. Ovverosia vorrei che, se il campoY IsNull, si selezioni il campo di tipo allegato e si apra direttamente anche la finestra per l'inserimento degli allegati, senza dover fare manualmente doppio click con il mouse sul campo Allegato come avviene ora.

    Private Sub campoX_AfterUpdate()
    If IsNull(Me.campoY) Then
       Me.Allegato.SetFocus
       SendKeys "{F2}"
    End If
    End Sub
    

    Ho ascoltato vari consigli. Ma non ho trovato quello corretto, 

    Simulare tramite codice il doppio click non funziona, o perlomeno non funziona solo spostando il focus sul campo allegato.

    O forse non è corretto il parametro "{F2}" per simulare il doppio click in Access.

    O forse esiste una proprietà del campo di tipo allegato che può “aprire” la finestra di inserimento.

    In fondo, quando faccio doppio click sul campo allegato per apire la finestra di inserimento, eseguo un'istruzione… come si scrive ?

    Grazie

  • Re: CAMPO ALLEGATO - APERTURA FINESTRA GESTIONE ALLEGATO DA CODICE

    Richiamare un evento dovrebbe essere la base prima di addentrarsi in applicativi che rischiano di restare incompleti o incompiuti.

    Dovresti usare qualcosa del tipo call oggetto_DblClick()

    Ma puoi anche scrivere l'apertura di apertura della finestra di inserimento.

    Sempre brancolando nel buio perché non vedo ne codici ne form, soprattutto in un linguaggio abbandonato ai tempi della prima barba.

    Anche chi è più ferrato di me non capisce come poterti aiutare.

    Tu scrivi sendkey ma non si capisce quale oggetto deve ricevere la key.

    Hai un codice nell'oggetto “allegato” che interviene sull'evento dblclick?

    Più di così nessuno riesce a capire il tuo problema.

  • Re: CAMPO ALLEGATO - APERTURA FINESTRA GESTIONE ALLEGATO DA CODICE

    Grazie per la risposta.

    L'idea è che, avendo il focus sul campo allegato, la simulazione del doppio click la prende il campo attivo.

    Infatti, se faccio tentativi sostituendo "{F2}"con altri parametri , ad es.  "{ENTER}" che fa spostare il focus sul campo successivo, ottengo l'effetto desiderato. Se provo con un diverso campo testo, sposto li il focus e poi con SendKeys ci scrivo un stringa dentro, funziona.

    Insomma l'istruzione SendKeys così come l'ho proposta sembra funzionare su tutto, simula correttamente l'immissione da tastiera, tranne che per il doppio click.
    Il codice da me proposto in effetti non da errore, ma semplicemente non fa nulla. Quindi la mia idea è che o "{F2}" non corrisponde a doppio click in Access (come invece appare sui forum in rete) , oppure la finestra di inserimento allegati non è sensibile all'istruzione SendKeys e necessita di qualcos'altro per essere aperta da codice.

    Comincio a propendere più per il fatto che "{F2}" non corrisponda a doppio click. Molti dei forum che lo indicano facevano esempi su VBA di Excel

  • Re: CAMPO ALLEGATO - APERTURA FINESTRA GESTIONE ALLEGATO DA CODICE

    Hai provato a leggere questo:

    https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/sendkeys-statement

    Non so dove tu abbia letto che "{F2}" sia il DoubleClick dal momento che emula l'invio di F2 di tastiera…!

    Secondo me non serve nessun SendKeys cosa sempre da evitare come gli allegati… ma mi pare a te importi poco delle cose sconsigliate… salvo poi trovare accroccchi…!

    Un modo complesso per lanciare il DoubleClick è inviare un comando tramite API…

    Declare PtrSafe Function SendMessage Lib "user32" Alias _
    "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPtr
    
    Private Const WM_LBUTTONDBLCLK = &H203
    SendMessage TheHandle, WM_LBUTTONDBLCLK, 0, 0

    Il problema è recuperare l'Hwnd del controllo… che non è affatto semplice… serve spostare il Focus sul Controllo e ciclare i Child della Form per cercare il classname della TextBox… perchè Access ha solo un controllo per volta assegnato all'hWnd di classe… ed è quello con il Focus.

  • Re: CAMPO ALLEGATO - APERTURA FINESTRA GESTIONE ALLEGATO DA CODICE

    06/11/2023 - @Alex ha scritto:


    Secondo me non serve nessun SendKeys cosa sempre da evitare come gli allegati… ma mi pare a te importi poco delle cose sconsigliate… salvo poi trovare accroccchi…!

    Ciao Alex e grazie per la risposta.

    Solo per farti capire.

    Non è che mi importa poco, ma il codice è li da molto tempo, assolve il compito perfettamente e non c'è necessità che lo rifaccia da capo. Volevo solo abbreviare un passaggio  ma se alla fine ci metto più che a ripensare il codice…. tanto vale fare come dici tu.

  • Re: CAMPO ALLEGATO - APERTURA FINESTRA GESTIONE ALLEGATO DA CODICE

    06/11/2023 - StefanoACC ha scritto:

    Ciao Alex e grazie per la risposta.

    Solo per farti capire.

    Non è che mi importa poco, ma il codice è li da molto tempo, assolve il compito perfettamente e non c'è necessità che lo rifaccia da capo. Volevo solo abbreviare un passaggio  ma se alla fine ci metto più che a ripensare il codice…. tanto vale fare come dici tu.

    Vedi tu… gli allegati inglobati sono una rogna, si usano il Path(Relativi o Assoluti a seconda di cosa serve) e poi si gestisce con FileDialog la selezione e con FolloHyperlink l'apertura con il SW di Default. 

Devi accedere o registrarti per scrivere nel forum
12 risposte