Cómo determinar el mes nuevo seleccionado en el Control Calendar

Seleccione idioma Seleccione idioma
Id. de artículo: 193967 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Resumen

El control de calendario de Microsoft proporciona eventos NewMonth y NewYear. Estos eventos se producen cuando el usuario selecciona un año o mes diferente en el calendario. Sin embargo, los eventos no indican qué mes o año se ha seleccionado. Este artículo demuestra cómo puede determinar que seleccionó mes o año.

Más información

El control Calendar de Microsoft no se proporciona con Visual Basic. El control se suministra como parte de Microsoft Access o puede descargarse gratuitamente desde la dirección URL siguiente:
http://msdn.microsoft.com/en-us/library/ms697701.aspx

Ejemplo paso a paso

  1. Inicie Visual Basic y cree un nuevo proyecto EXE estándar. Se creará Form1 de manera predeterminada.
  2. En el menú proyecto, haga clic en componentes y, a continuación, compruebe el componente de "Control de calendario de Microsoft 8.0". El control Calendar estará disponible en el cuadro de herramientas.
  3. Colocar un control de calendario en Form1.
  4. Copie y pegue el código siguiente a ventana de código del formulario:
          Option Explicit
          Private Declare Function FindWindowEx Lib "user32" _
             Alias "FindWindowExA" _
             (ByVal hWnd1 As Long, _
             ByVal hWnd2 As Long, _
             ByVal lpsz1 As String, _
             ByVal lpsz2 As String) As Long
    
          Private Declare Function SendMessage Lib "user32" _
             Alias "SendMessageA" _
             (ByVal hwnd As Long, _
             ByVal wMsg As Long, _
             ByVal wParam As Long, _
             lParam As Any) As Long
    
          Private Const CB_GETCURSEL = &H147
          Private Const CB_GETLBTEXT = &H148
          Private calendarHwnd As Long
          Private cboMonthHwnd As Long
          Private cboYearHwnd As Long
    
          Private Sub Form_Load()
             calendarHwnd = FindWindowEx(Me.hwnd, 0&, "CalendarWndClass", _
                vbNullString)
             cboMonthHwnd = FindWindowEx(calendarHwnd, 0&, "ComboBox", _
                vbNullString)
           cboYearHwnd = FindWindowEx(calendarHwnd, cboMonthHwnd, "ComboBox", _
                vbNullString)
          End Sub
    
          Private Sub Calendar1_NewMonth()
             Dim monthIndex As Long, temp As Long
             Dim ret As String * 255
             ret = Space(255)
             ' Find 0-based index of the selected item:
             monthIndex = SendMessage(cboMonthHwnd, CB_GETCURSEL, 0&, 0&)
             ' Put month name in ret and length of month name in temp:
             temp = SendMessage(cboMonthHwnd, CB_GETLBTEXT, monthIndex, _
                 ByVal ret)
             ' uncomment the line below to see if the ComboBox was used:
             'If Calendar1.Month = 0 Then Debug.Print "ComboBox used to
             'select";
             Debug.Print Left(ret, temp) 'Displays Month Name
          End Sub
    
          Private Sub Calendar1_NewYear()
             Dim yearIndex As Long, temp As Long
             Dim ret As String * 255
             ret = Space(255)
             ' Find 0-based index of the selected item:
             yearIndex = SendMessage(cboYearHwnd, CB_GETCURSEL, 0&, 0&)
             ' Put year value in ret and length of year value in temp:
             temp = SendMessage(cboYearHwnd, CB_GETLBTEXT, yearIndex, _
                 ByVal ret)
             ' uncomment the line below to see if the ComboBox was used:
             'If Calendar1.Year = 0 Then Debug.Print "ComboBox used to
             'select ";
             Debug.Print Left(ret, temp) 'Displays Year
          End Sub
    						
  5. Presione la combinación de teclas CTRL+G para ver la ventana Inmediato.
  6. Presione la tecla F5 para ejecutar el proyecto.
  7. Elija un mes en el cuadro combinado primero. Observe que la ventana inmediata muestra el nombre del mes seleccionado.
  8. Elija un año en el segundo cuadro combinado. Observe que la ventana inmediata muestra el año seleccionado.
Nota: El evento de NewMonth puede producirse mediante el control ComboBox para seleccionar un nuevo mes o haciendo clic en un nuevo día en que está en un mes distinto del mostrado diferente.

Por ejemplo, suponga que el valor actual en el calendario es 1 de febrero. Si hace clic en lo que sería el día 31, el evento de NewMonth se produce porque ha elegido un día de enero. Si necesita distinguir entre utilizar el control ComboBox para seleccionar un mes frente a haciendo clic en un día en el calendario que cambia el mes, compruebe la propiedad mes del calendario en el evento NewMonth. Si Month es 0, se utilizó el control ComboBox para seleccionar el nuevo mes. En caso contrario, si Month es mayor que 0, el usuario elige una nueva fecha en el calendario. De forma similar, puede comprobar la propiedad de año en el evento NewYear.

Propiedades

Id. de artículo: 193967 - Última revisión: domingo, 23 de febrero de 2014 - Versión: 4.2
La información de este artículo se refiere a:
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Edición de aprendizaje
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Palabras clave: 
kbnosurvey kbarchive kbmt kbhowto KB193967 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 193967

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com