none
Herdar Controle de hora do windows, é possível????

    Pergunta

  • Na task bar do windows (lá no cantinho inferior direito) existe um label informando a hora, ao dar o duplo click em cima desse label abre a janela "Propiedades de data e hora", nessa janela tem uma textbox com a hora e um botão para cima e um para baixo. Este controle que serve para acertar a hora do windows me interessa, gostaria de adicionar este controle em um projeto que tenho. Preciso dele para que os futuros usuários do sistema possam entrar com uma determinada hora, trata-se de uma tela de agendamento de horário,  essa infroamação de hora será gravada em meu BD, e não terá nenhum efeito sobre a hora real do windows. Tem como eu adicionar este controle já pronto???? Ou é necessário eu contruir um no visual studio? Obrigado a todos.

    quarta-feira, 22 de agosto de 2007 02:19

Respostas

  •  George Alex wrote:

    Angus,

    Obrigado.

    Mas tenho ainda três duvidas:

     

    1.Tem como eu esconder os segundos, ficar só com a hora e os minutos.

     

    Sim. Na propriedade Format escolha "Custom" e na propriedade "CustomFormat" use a string "HH:mm":

     

     George Alex wrote:

    2.Tem como eu limitar a hora? Ou seja esse controle funcionará para mim como agendamento de serviços em um sistema de solicitações de serviço. Desta forma o agendamento de horário só poderia ser feito para horário comercial, e não qualquer hora possível.

     

    No método do evento ValueChanged verifique se a hora está dentro de um determinado intervalo e se não estiver ajuste o valor da hora do objeto. O exemplo abaixo (em VB) limita as horas permitidas entre 8 e 18:

     

    Dim dt As DateTime = DateTimePicker1.Value
     
    If dt.Hour > 18 Then
        DateTimePicker1.Value = New DateTime(DateTimePicker1.Value.Year, DateTimePicker1.Value.Month, DateTimePicker1.Value.Day, 18, DateTimePicker1.Value.Minute, 0)
    ElseIf dt.Hour < 8 Then
        DateTimePicker1.Value = New DateTime(DateTimePicker1.Value.Year, DateTimePicker1.Value.Month, DateTimePicker1.Value.Day, 8, DateTimePicker1.Value.Minute, 0)
    End If

     

     George Alex wrote:

    3. Quando rodo o projeto a hora para e ganha focus, como seu eu fosse ajustar, sem nem eu ter clicado no controle.

    Obrigado

     

    A ordem em que os objetos de um formulário recebem o foco é controlada pela propriedade TabIndex dos objetos. O seu DateTimePicker deve estar com TabIndex igual a 0 (primeiro objeto). Altere essa ordem em  todos os objetos que estão sobre o form para a ordem que você desejar.

    quarta-feira, 22 de agosto de 2007 13:00

Todas as Respostas

  • Você faz isso com o controle DateTimePicker. Ajuste a propriedade Format do controle para "Time" e a propriedade ShowUpDow para True.

     

    quarta-feira, 22 de agosto de 2007 03:36
  • Angus,

    Obrigado.

    Mas tenho ainda três duvidas:

     

    1.Tem como eu esconder os segundos, ficar só com a hora e os minutos.

     

    2.Tem como eu limitar a hora? Ou seja esse controle funcionará para mim como agendamento de serviços em um sistema de solicitações de serviço. Desta forma o agendamento de horário só poderia ser feito para horário comercial, e não qualquer hora possível.

     

    3. Quando rodo o projeto a hora para e ganha focus, como seu eu fosse ajustar, sem nem eu ter clicado no controle.

     

     

    Obrigado

    quarta-feira, 22 de agosto de 2007 11:42
  •  George Alex wrote:

    Angus,

    Obrigado.

    Mas tenho ainda três duvidas:

     

    1.Tem como eu esconder os segundos, ficar só com a hora e os minutos.

     

    Sim. Na propriedade Format escolha "Custom" e na propriedade "CustomFormat" use a string "HH:mm":

     

     George Alex wrote:

    2.Tem como eu limitar a hora? Ou seja esse controle funcionará para mim como agendamento de serviços em um sistema de solicitações de serviço. Desta forma o agendamento de horário só poderia ser feito para horário comercial, e não qualquer hora possível.

     

    No método do evento ValueChanged verifique se a hora está dentro de um determinado intervalo e se não estiver ajuste o valor da hora do objeto. O exemplo abaixo (em VB) limita as horas permitidas entre 8 e 18:

     

    Dim dt As DateTime = DateTimePicker1.Value
     
    If dt.Hour > 18 Then
        DateTimePicker1.Value = New DateTime(DateTimePicker1.Value.Year, DateTimePicker1.Value.Month, DateTimePicker1.Value.Day, 18, DateTimePicker1.Value.Minute, 0)
    ElseIf dt.Hour < 8 Then
        DateTimePicker1.Value = New DateTime(DateTimePicker1.Value.Year, DateTimePicker1.Value.Month, DateTimePicker1.Value.Day, 8, DateTimePicker1.Value.Minute, 0)
    End If

     

     George Alex wrote:

    3. Quando rodo o projeto a hora para e ganha focus, como seu eu fosse ajustar, sem nem eu ter clicado no controle.

    Obrigado

     

    A ordem em que os objetos de um formulário recebem o foco é controlada pela propriedade TabIndex dos objetos. O seu DateTimePicker deve estar com TabIndex igual a 0 (primeiro objeto). Altere essa ordem em  todos os objetos que estão sobre o form para a ordem que você desejar.

    quarta-feira, 22 de agosto de 2007 13:00
  • Resposta do Item 1:

     

    na propriedade CustomFormat do controle DateTimePicker digite: HH:mm para horas no formato 24h e hh:mm para formato 12h. Não se esqueça de mudar a propriedade Format do controle para Custom.

     

    Resposta do Item 2:

     

    Voce poderia criar uma regra no evento conforme exemplo abaixo:

    Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged

     

    Dim hora As Integer

    hora = CInt(Me.DateTimePicker1.Text.Substring(0, 2))

    If hora > 10 Then

    MsgBox("erro")

    End If

     

    End Sub

     

    Resposta do Item 3:

    DateTimePicker1.Select()

    DateTimePicker1.Focus()

    sendo que nenhum deles vai selecionar os valores.

     

    Espero ter ajudado.

    quarta-feira, 22 de agosto de 2007 13:12
  • muito obrigado

    quarta-feira, 22 de agosto de 2007 23:03