Forms |
3.30 Usare il controllo calendario per inserire una data in una casella di testo. |
Roberto |
(D) Come si può scrivere in una casella di testo, associata ad un campo di tipo Data/ora, selezionando una data tramite il controllo ActiveX Controllo calendario 8.0? (R) Il controllo ActiveX Controllo calendario 8.0 viene distribuito insieme ad Access97, va installato espressamente usando il programma di installazione di Access. Ipotizziamo che, nella tabella che è origine record della maschera, ci sia un campo di tipo Data/ora chiamato Data1; fare in modo che, nella maschera, la casella di testo associata a tale campo si chiami txtData1. Aprire la maschera in visualizzazione Struttura. Inserire nella maschera, a destra del controllo txtData1, un piccolo pulsante di comando e chiamarlo ApriChiudi. Dal menu Inserisci seleziona il comando Controllo ActiveX… ; dalla lista che compare selezionare Controllo calendario 8.0 e premere il pulsante OK. Nel disegno della maschera comparirà il controllo Calendario: con il mouse ridimensionarlo a proprio piacimento e spostarlo sotto i controlli txtData1 e ApriChiudi (non preoccuparsi se coprirà altri controlli). Al controllo Calendario assegnare le seguenti Proprietà: 1) Nome elemento: acxCalendario 2) Seleziona con tabulazione: No (consigliato) 3) Visibile: No 4) Origine controllo: Data1 5) ShowTitle: No (consigliato) Per questo controllo ActiveX, Access non genera la proprietà evento AfterUpdate; poiché a noi serve detta proprietà evento per rendere il controllo Calendario non visibile dopo aver impostato con il mouse la data, generarlo come segue: 1) Aprire il modulo della maschera pigiando il pulsante Codice dalla barra dei comandi. Comparirà la finestra Class Module 2) Dalla casella a discesa posta in alto a sinistra della finestra selezionare acxCalendario. 3) Dalla casella a discesa posta in alto a destra della finestra selezionare AfterUpdate. 4) Ora nella Private Sub acxCalendario_AfterUpdate() scrivere il seguente codice VBA: Private Sub acxCalendario_AfterUpdate() Me!txtData1.SetFocus Me!acxCalendario.Visible = False End Sub5) Chiudere la finestra Class Module. A fronte dell’evento Su corrente della maschera generare il codice VBA: Private Sub Form_Current() Me!acxCalendario.Visible = False End SubSi consiglia di settare la Proprietà Seleziona con tabulazione del pulsante ApriChiudi a No. A fronte dell’evento Su clic del pulsante ApriChiudi generare il seguente codice VBA: Private Sub ApriChiudi_Click() If Me!acxCalendario.Visible = False Then Me!acxCalendario.Visible = True If IsNull(Me!Data1) Then Me!acxCalendario.Year = Year(Date) Me!acxCalendario.Month = Month(Date) Me!acxCalendario.Value = Date End If Else Me!acxCalendario.Visible = False End If End SubQuando si apre la maschera, tutte le volte che si vuole rendere visibile il controllo Calendario, pigiare il pulsante di comando ApriChiudi: selezionare prima il mese, poi l’anno e solo alla fine il giorno. Se si vuole rendere non visibile il controllo Calendario mentre è visibile, pigiare il pulsante ApriChiudi. NB. E’ necessario, per evitare possibili malfunzionamenti, che il campo Data/ora, la casella di tetsto ad esso associata ed il controllo Calendario abbiano nomi diversi. Download: |