Passare campo a funzione

di il
5 risposte

Passare campo a funzione

Mi scuso se sarà una sciocchezza e, forse, sarò poco chiaro

Ho codice simile tra vari report perciò sto creando una funzione pubblica per scrivere una sola volta il codice.
Voglio in base a delle scelte nascondere delle determinata immagini che si trovano nei report

Ricevo errore di run-time 438
Proprietà e metodo non supportate

In vari report faccio
Private Sub Report_Load()
funzioneFT Me.OpenArgs, Me, Me.timbro
End Sub
Questa e' la funzione

Public Function funzioneFT(scelta, ReportName As Report, timbro as picture)
Select Case scelta
Case Is = "1"
MsgBox "hai scelto 1"
ReportName.timbro.Visible = True
Case Is = "2"
MsgBox "hai scelto 2"
Case Is = "3"
MsgBox "hai scelto 3"
MsgBox timbro
ReportName.timbro.Visible = False
End Select
End Function

5 Risposte

  • Re: Passare campo a funzione

    Discutibile tu abbia molti report con questo codice... come mai...?


    La variabile Timbro definiscila come Control non come Picture... vai a vedere cosa rappresenta una variabile Picture...

    Ora ti chiedo, nel caso di Scelta=2 cosa pensi di fare...? Visibile o Non Visibile...?
    Ora siccome all'apertura il controllo immagine assume il valore di default quindi immagino VISIBILE=TRUE...mi verrebbe da pensare che basta Scelta=3 per condizionare VISIBILE=False...

    Poi siccome passi Timbro come oggetto la sintassi che usi è errata... confusa oltretutto dal Nome della Variabile sempre Oggetto ReportName che non è affatto un Nome ma proprio l'oggetto report...
    Magari basta questa riga...?
    
    Timbro.Visible=Scelta<3
    Ora sicuro serva una funzione public per questo...?
  • Re: Passare campo a funzione

    Ma, quel Me, da solo che passi dalla funzione, non crea problemi? Visto che si tratta di una parola riservata?
  • Re: Passare campo a funzione

    fratac ha scritto:


    Ma, quel Me, da solo che passi dalla funzione, non crea problemi? Visto che si tratta di una parola riservata?
    No non è una parola riservata è il riferimento all'oggetto puntato ByRef quindi va bene.
    Il me si us solo all'interno dell'oggetto ma passato byref la variabile oggetto, parametro della function, punta all'oggetto stesso...
  • Re: Passare campo a funzione

    Alcuni dei miei report devo poterli stampare con o senza qualcosa ad esempio un immaigne

    Quello che sto facendo è:
    aprire una maschera con delle scelte del tipo report con img, report senza img
    poi dopo la scelta si apre il report ed eseguo il codice sotto ripotato

    Ricevo ancora errore di run-time 438

    Il codice che propongo non è completo poiché da errore.
    Private Sub Report_Load()
    funzioneFT Me.OpenArgs, Report.Name, "timbro_img"
    End Sub
    
    Public Function funzioneFT(scelta, ReportName As String, timbro As String)
    Select Case scelta
    Case Is = "1"
    MsgBox "hai scelto Senza firma e Timbro"
    Reports(ReportName).timbro.Visible = False
    Case Is = "2"
    MsgBox "hai scelto Solo firma"
    Case Is = "3"
    MsgBox "hai scelto Firma e Timbro"
    MsgBox timbro
    Reports(ReportName).timbro.Visible = True
    End Select
    End Function
    
  • Re: Passare campo a funzione

    Ti ho suggerito cosa scrivere hai fatto una modifica di testa tua sbagliata... vedi tu ma non hai capito ancora cosa significa passare l'oggetto ByRef... magari pensaci, passare il report i il nome non serve a nulla, basta l'oggetto.
Devi accedere o registrarti per scrivere nel forum
5 risposte