Aplicando MSAgent
 

Fecha: 02/Ago/2004 (30/07/2004)
Autor: Erick Aragón hackjavasun@yahoo.com.mx

.

Explicación (artículo)

En este articulo se muestra un ejemplo de MSAgent y Aplicaciones Windows, para este articulo se toma como base el Articulo publicado por Adrián Ponce:     adrianponce_Agentvbnet.htm

Por lo que es necesario leer esa publicación para comprender este documento.

Lo que se hará en esta aplicación es Validar las entradas del usuario mediante el evento Validating de los TextBox si la validación no se cumple mostraremos a Merlín al lado derecho de los TextBox y le pediremos al usuario que teclee lo que se le pide.

A continuación pasamos a ver lo que sería la GUI de la Aplicación Windows.

Como podemos ver es una ventana muy simple, solo consta de 4 Label, 4 TextBox y 1 Button.

Ahora pasaremos a lo que seria el código.

Esto es el texto normal.

A continuación sigue código en Visual Basic:

#Region "variables"
              Dim merlin As AgentObjects.IAgentCtlCharacterEx 'Variable para llamar al agent
#End Region

'Con este procedimiento podremos colocar a merlín al lado de cualquier control de nuestro formulario.
'Como se puede notar el procedimiento recibe por parámetro una variable de tipo object y una de tipo string
'Como dice Guillermo en su libro "Los lenguajes basados en .NET Framework usan el concepto
'(Object) como base elemental de cualquier tipo, ya sea numérico o alfanumérico. Todo tipo
'en Net. Framework está basado en un tipo especial llamado Object.".
Public Sub posicionar(ByVal objeto As Object, ByVal mensaje As String)
                Dim x, y As String 'Estas variables nos servirán para almacenar las coordenadas en las que se colocara a Merlín.
                merlin.Show() 'Mostramos al Agente, en este caso a Merlín
'Colocamos a Merlín a la derecha del control
                  x = CType(Me.Location.X.ToString(), Integer) + CType(objeto.Location.X.ToString, Integer) + CType(objeto.size.width, Integer)
                  y = CType(Me.Location.Y.ToString(), Integer) + CType(objeto.Location.Y.ToString, Integer) - 40
                 merlin.MoveTo(CShort(x), CShort(y)) 'Con este método Posicionamos al Agente
                 merlin.Play("GestureRight")'Hacemos que merlín señale a la Izquierda del Monitor
                 merlin.Speak(mensaje)'hacemos hablar a Merlín
                 merlin.Hide() 'Ocultamos a Merlín Después de Mostrar el Mensaje
End Sub

Evento LOAD del formulario.

Private Sub WindowsMerlin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                Agent.Characters.Load("merlin", "merlin.acs") 'se llama a merlin
                merlin = Agent.Characters("merlin") 'se selecona a merlin
                merlin.LanguageID = &HC0AS 'motor de lenguaje
End Sub
'Con este evento nos aseguramos que el Foco no cambie de textbox hasta que este tenga algo.. 
Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
If TextBox1.Text = Nothing Then
                   posicionar(TextBox1, "Teclea el nombre por favor")
                    e.Cancel = True
End If
End Sub
Código para el evento Validating del TextBox4.
Private Sub TextBox4_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox4.Validating
'Validamos si el tamaño en caracteres del CP tecleado es diferente de 5
If (TextBox4.Text.Length <> 5) Then
            e.Cancel = True
            posicionar(TextBox4, "El Código Postal debe tener 5 caracteres")
End If
'Validamos si todos los caracteres del CP son números
If Not (e.Cancel) Then 'Esta parte entra sino se a cancelado el cambio del Focu.
           Dim charIndex As Integer
           For charIndex = 0 To TextBox4.Text.Length - 1
                     If Not (Char.IsNumber(TextBox4.Text, charIndex)) Then
                                 e.Cancel = True
                                 posicionar(TextBox4, "El Código Postal debe tener solo números")
                                 Exit For
                        End If
              Next charIndex
End If
End Sub

ir al índice

Fichero con el código de ejemplo: ErickAragon_AplicandoMSAgent - Tamaño 10KB