Buenas a todos/as!.
He hecho un ejemplo que me dice los días que quedan para navidad.
Quizás no es la forma más recomendable o no entiendo el problema adecuadamente.
Es una aplicación que se va a ejecutar una vez entremos en el escritorio. Siempre, todos los días.
Tengo una fecha estimada, el día de navidad y la fecha actual. Resto la diferencia y me dice los días que quedan. Hasta ahí bien. ( fue un rollo el tema de fechas ).
A la hora de representar esto, me surgen dudas, probablemente de no entender el comportamiento de la clase.
Si fuera un icono en la bandeja de entrada o panel superior, momentáneamente al mostrarse el escritorio, me gustaría mostrar el icono y
un mensaje en el icono que puede ser un globo, "Quedan x's días para navidad", luego el mensaje desaparece y el icono se queda en la bandeja.
¿ Es esto el funcionamiento "normal" de un icono en la bandeja de entrada ?. ( Por si debo cambiar la forma de presentar el mensaje )
- Algunos muestran valores como es valores de temperaturas
- Otros simplemente
actúan cuando haces clic en ellos
Sigo.
El icono aparece "pegado" al selector de áreas de trabajo,
a su izquierda no detrás de este, claro el selector del área de trabajo es otro icono a su manera.
Si hago clic en el (esto no es lo que quiero) el mensaje aparece en el formulario ( que es un control ), ya que por lo que parece un
trayicon no es un control.
Puedo hacer el proyecto con formulario o sin este (no es realmente necesario), haciendo un proyecto de consola y añadiendo componentes.
Os muestro el código:
Código:
Const FECHANAVIDAD As String = "25/12/2022"
Private fechaestimada As Date
Private icono As TrayIcon
Public Sub Form_Open()
'Quiero pasarla en el formato "dd/mm/yyyy"
fechaestimada = CadenaConvAFecha(FECHANAVIDAD)
icono = New TrayIcon As "Manejador"
With icono
.Picture = Stock["18/clock"]
.Show
End With
End
''Convierte la cadena a un tipo fecha
Public Function CadenaConvAFecha(sfecha As String) As Date
Dim fechatemp As Date
Dim asfecha As String[]
'Fecha como cadena se convierte a un array
asfecha = Split(sfecha, "/")
'asfecha[0] = día , asfecha[1] = mes , asfecha[2] = año
'Convierto a tipo fecha
fechatemp = Date(asfecha[2], asfecha[1], asfecha[0])
Return fechatemp
End
Public Sub Manejador_Click()
'FIXME:Esto no se muestra en el icono, se muestra en el formulario, que es un control.
With Balloon
.Delay = 5000
.Font = Font["Arial, 8, Bold, italic"]
.Info("Quedán " & DateDiff(Now, fechaestimada, gb.Day) & " días para Navidad", Me)
End With
End
Recomendaciones.
Realmente no quiero hacer clic en el icono, solo quiero que me muestre un mensaje y desparezca este.
He pensado hasta en un timer, pero es que trayicon tiene algo parecido a un reloj.
Subo el proyecto.
Saludos