visual usar studio obtener net mostrar minutos horas hora formato fecha espaƱol como color cambiar vb6 colors

vb6 - usar - mostrar fecha y hora en datetimepicker c#



Cambiar el color del texto en un control DTPicker (2)

Odio publicar algo que no sea realmente útil, pero parece ser algo más allá del alcance de lo que Microsoft pretendía que hicieran los desarrolladores con el control. Si bien es cierto que debe haber una llamada API para establecer el color (Windows ciertamente sabe pintarlo de negro cuando está habilitado y gris cuando está desactivado), el método para hacerlo se me escapa.

Mi recomendación, si nadie más responde cómo hacer lo que necesita, es obtener un nuevo control DateTime Picker con las propiedades necesarias (parece que hay algunas opciones de terceros) o control "roll your own" .

FWIW, este mismo problema existe en VB.NET, con la excepción de que Microsoft reemplaza (y luego oculta) las propiedades ForeColor (y BackColor) heredadas del objeto Control genérico para no hacer nada.

En VB6, tengo un control DTPicker en un formulario. (El DTPicker es el selector de fecha y hora del calendario, incluido en Microsoft Windows Common Controls-2 6.0, disponible en el cuadro de diálogo Componentes).

Si bien hay muchas propiedades que afectan los colores del calendario cuando se despliega, no hay ninguna propiedad que permita cambiar el color de la fecha que se muestra en el cuadro de texto. Estoy buscando algo así como la propiedad ForeColor estándar de TextBox.

¿Alguien tiene un poco de magia API para permitirme simular esa propiedad?


Voy a abordar dos problemas con el objeto DatePicker y una solución alternativa para ellos.

  1. No puede poner un valor en blanco en DatePicker, lo que me lleva al segundo problema.
  2. No puede cambiar el color de la fuente para, al menos, hacer que aparezca en blanco.

Para mantener la funcionalidad del DatePicker Y obtener la capacidad de tener un valor en blanco y las opciones de formato de fuente normales (colores, etc.), utilicé dos objetos. Primero crea un objeto DTP y establece el ancho para que solo puedas ver realmente la flecha desplegable. Para mí, esto fue 15. Luego, cree un TextBox regular lo suficientemente amplio como para mantener su fecha. Coloque la flecha DTP directamente a la derecha (o izquierda) del cuadro de texto. Luego, simplemente agrega código al evento Change del DTP para copiar su .Value en el .Text del TextBox, así:

Private Sub MyDTP_Change() MyUserForm.MyDateTextBox.Text = MyUserForm.MyDTP.Value End Sub

Luego, si tiene referencias de datos, necesita acceder a MyDateTextBox.Text en lugar de MyDTP.Value y presto! Obtiene la funcionalidad del DTP con el control de formato de un TextBox regular.

EDITAR: Perdón JeffK, no estaba trabajando con VB en un entorno de producción hace 9 años. :) Me gustaría agregar el otro lado de la funcionalidad a esto también. Esto permite la sincronización bidireccional entre el TextBox y el DTP. IE: Ingresa manualmente una fecha en el TextBox y sigue el Calendario DTP. Si el TextBox está en blanco o tiene una fecha no válida, el DTP se establece de forma predeterminada en la fecha de hoy.

Private Sub MyDateTextBox_Change() If MyUserForm.MyDateTextBox.Text <> "" And IsDate(MyUserForm.MyDateTextBox.Text) = True Then If CDate(MyUserForm.MyDateTextBox.Text) <= MyUserForm.MyDPT.MaxDate And _ CDate(MyUserForm.MyDateTextBox.Text) >= MyUserForm.MyDPT.MinDate Then MyUserForm.MyDTP.Value = MyUserForm.MyDateTextBox.Text Else MyUserForm.MyDTP.Value = Date End If Else MyUserForm.MyDTP.Value = Date End If End Sub