Page 1
http://www.desarrolladoras.com - [email protected]
Desarrollo de una aplicaciónDesarrollo de una aplicaciónen tres capasen tres capas
con interfase Cliente Windows,con interfase Cliente Windows,uso de Data Access A. Blocks, uso de Data Access A. Blocks,
DataSets tipadosDataSets tipadosy ...y ...
Page 2
http://www.desarrolladoras.com - [email protected]
otras yerbas…otras yerbas…
por Vilma Hinterwimmerpor Vilma Hinterwimmer
[email protected] @desarrolladoras.com
por Vilma Hinterwimmerpor Vilma Hinterwimmer
[email protected] @desarrolladoras.com
En el día de la Tradición…En el día de la Tradición…¿nos darán un mate al menos …?¿nos darán un mate al menos …?
Inspirada en la Aplicación Pachacamac de Daniel Seara.
Gracias Daniel por enseñarnos tanto!
Page 3
http://www.desarrolladoras.com - [email protected]
Temas a tratar.... Temas a tratar.... si llegamos a tiempo!si llegamos a tiempo!
• Identificando las capas y los proyectos
• Creando la solución y los proyectos
• DataSet tipados
• Donde almacenamos la cadena de conexión
• Usando el Data Access Application Blocks
Page 4
http://www.desarrolladoras.com - [email protected]
…….mas temas.mas temas
• La Clase Entidad y sus derivadas
• Herencia de Formularios
• Armado de un formulario tipo Outlook Express
• Principales propiedades, métodos y eventos de algunos controles
Page 5
http://www.desarrolladoras.com - [email protected]
La AplicaciónLa Aplicación
Page 6
http://www.desarrolladoras.com - [email protected]
Cliente
Webo
Windows
Negocio
Reglasy
Entidades
Datos
DAAB
Identificando las capasIdentificando las capas
Usuario Repositorio de DatosAplicación
Page 7
http://www.desarrolladoras.com - [email protected]
Negocio
Reglas de negocio
Entidades
Clases cuyos métodos implementan las reglas de negocio globales
Clases bases y sus heredades que definen los objetos a utilizar en la aplicación: Cliente, Proveedor, Factura, etc.
CapasCapas Cliente
Interfaz gráfica con el Usuario, puede ser Web o Windows
Datos
Acceso a repositorios de Datos directo o a través del DAAB
Page 8
http://www.desarrolladoras.com - [email protected]
Creando la solución y los proyectosCreando la solución y los proyectos
Cliente Negocio Datos
• Creamos una Solución en blanco
• Agregamos los Proyectos:
Nombre del proyecto Tipo de proyecto
Alumnos Aplicación para Windows AluNegocio Biblioteca de Clases
AluDatos Biblioteca de ClasesAluGlobal Biblioteca de ClasesData Access Application Block Existente
Page 9
http://www.desarrolladoras.com - [email protected]
Relación entre las capas y los proyectosRelación entre las capas y los proyectos
Cliente
Negocio
Cliente Negocio Datos
ALUMNOS
ALU
NEGOCIO
ALUGLOBAL
Proyecto Capa Referencias entre proyectos
DAAB
ALU
DATOS
APLICACION
Page 10
http://www.desarrolladoras.com - [email protected]
Capa Capa dede
DatosDatos
Page 11
http://www.desarrolladoras.com - [email protected]
DataSets tipadosDataSets tipados
La difícil tarea de crear DataSets tipados
en tan solo 4 Pasos...
Page 12
http://www.desarrolladoras.com - [email protected]
1. Agregar un Archivo DataSet.xsd al proyecto
Page 13
http://www.desarrolladoras.com - [email protected]
2.Agregar una conexión a datos en el Explorador de Servidores
Page 14
http://www.desarrolladoras.com - [email protected]
Dos pasos mas Dos pasos mas para llegar a tener...para llegar a tener...
¡Un DataSet Tipado!¡Un DataSet Tipado!
Page 15
http://www.desarrolladoras.com - [email protected]
3.Agregar la definición de la tabla al DataSet tipado ( drag and drop – arrastrar y soltar )
Page 16
http://www.desarrolladoras.com - [email protected]
4.Generar la clase (Generar conjunto de datos)
y..... LISTO!!!!!y..... LISTO!!!!!
Page 17
http://www.desarrolladoras.com - [email protected]
Este es nuestro DataSet tipadoEste es nuestro DataSet tipado
Un archivo .vb que contiene una clase...
la escribió Visual Studio por nosotros...
y ahora la podemos usar....
Page 18
http://www.desarrolladoras.com - [email protected]
y...y...
¿Para que sirve¿Para que sirve un Dataset Tipado? un Dataset Tipado?
Para facilitarnos...Para facilitarnos...
¡LA VIDA!¡LA VIDA!
Page 19
http://www.desarrolladoras.com - [email protected]
Escribiendo código Escribiendo código con uncon un
DataSet tipado DataSet tipado
Page 20
http://www.desarrolladoras.com - [email protected]
Tabla o Procedimiento Almacenado
TCliente
Nombre del Campo
Tipo del Campo
Nombre varchar
Direccion varchar
Saldo decimal
Clave varbinary
Sucursal smallint
La definición del dataset ahora será
Dim dstCliente As New dsCliente
La tabla será dstCliente.TCliente
A los campos de la fila n los llamamos:
dstCliente.TCliente(n).NombredstCliente.TCliente(n).DirecciondstCliente.TCliente(n).SaldodstCliente.TCliente(n).ClavedstCliente.TCliente(n).Sucursal
Page 21
http://www.desarrolladoras.com - [email protected]
donde antes escribíamos…
ahora podemos a escribir…..
donde antes escribíamos…
ahora podemos a escribir…..
ComboBox1.DataSource = dstCliente.Tables( _ “TCliente”)
ComboBox1.DataSource = dstCliente.TCliente
txtnombre.Text = dstCliente.Tables( _ “TCliente”).Rows(n).Item(0).ToString
txtnombre.Text = dstCliente.TCliente(n).Nombre
Page 22
http://www.desarrolladoras.com - [email protected]
¿Donde guardamos la ¿Donde guardamos la cadena de conexión?cadena de conexión?
Page 23
http://www.desarrolladoras.com - [email protected]
Almacenaremos la cadena de conexión Almacenaremos la cadena de conexión en el archivo de configuraciónen el archivo de configuración
de la Aplicaciónde la Aplicación
¿A que proyecto lo agregamos?
Al proyecto...
ALUMNOS
Page 24
http://www.desarrolladoras.com - [email protected]
Agregamos un archivo App.Config Agregamos un archivo App.Config al Proyecto Alumnos (Capa Cliente)al Proyecto Alumnos (Capa Cliente)
Page 25
http://www.desarrolladoras.com - [email protected]
Agregamos la clave y el valor de la cadena de Agregamos la clave y el valor de la cadena de conexión al archivo de configuraciónconexión al archivo de configuración
<appSettings>
<add key=“StrConn“
value="server=MiServidor;database=DB
;trusted_connection=true"/>
</appSettings>
Page 26
http://www.desarrolladoras.com - [email protected]
Así se verá en el Visual Studio nuestroAsí se verá en el Visual Studio nuestro archivo de configuraciónarchivo de configuración
Habría que encriptar la cadena de configuración para guardarla en el Archivo de Configuración.
Lo dejaremos para el próximo evento...
Page 27
http://www.desarrolladoras.com - [email protected]
Accedemos al valor desde el códigoAccedemos al valor desde el código
Dim strconn as String = _
Configuration.ConfigurationSettings.AppSettings( _
“StrConn")
Page 28
http://www.desarrolladoras.com - [email protected]
Data AccessData AccessApplication BlocksApplication Blocks
Page 29
http://www.desarrolladoras.com - [email protected]
La clase y los métodos La clase y los métodos principalesprincipales
Clase SqlHelperClase SqlHelper
Métodos Métodos
ExecuteReader
ExecuteNonQuery
ExecuteDataset
FillDataset
Page 30
http://www.desarrolladoras.com - [email protected]
ExecuteReaderExecuteReader
Devuelve un SQLDataReader con el cual accedemos a las filas
ExecuteReader(ByVal connectionString As String, _ ByVal commandType As CommandType, _ ByVal commandText As String, _ ByVal ParamArray commandParameters() As SqlParameter)
ExecuteNonQueryExecuteNonQuery
Devuelve el numero de filas afectadas
ExecuteNonQuery(ByVal connectionString As String, _ ByVal commandType As CommandType,
ByVal commandText As String, _ ByVal ParamArray commandParameters() As SqlParameter)
Page 31
http://www.desarrolladoras.com - [email protected]
ExecuteDatasetExecuteDataset
Devuelve un DataSet
ExecuteDataset(ByVal connectionString As String, _ ByVal commandType As CommandType, _ ByVal commandText As String, _ ByVal ParamArray commandParameters() As SqlParameter)
FillDatasetFillDataset
Llena de datos un DataSet que le pasamos como argumento, no devuelve ningún valor
FillDataset(connectionString As String, commandType As CommandType, _ commandText As String, _ dataSet As DataSet, _ tableNames() As String, _ ByVal ParamArray commandParameters() As SqlParameter)
Page 32
http://www.desarrolladoras.com - [email protected]
EjemplosEjemplos
ExecuteReaderExecuteReader
Imports Microsoft.ApplicationBlocks.Data.SqlHelper
... Dim drCat1 As SqlDataReaderdrCat1 = SqlHelper.ExecuteReader( strconn, _ CommandType.StoredProcedure, _ "GetProductsByCategory", _ New SqlParameter("@CategoryID", 1))
...drCat1.Close()
Page 33
http://www.desarrolladoras.com - [email protected]
EjemplosEjemplos
ExecuteNonQueryExecuteNonQuery
Imports Microsoft.ApplicationBlocks.Data.SqlHelper
Public Shared Function GrabarCliente(ByVal cliente As String) _ as Integer
Dim Params(0) As SqlParameterParams(0) = New SqlParameter("@NomCliente", _
SqlDbType.VarChar, 50) Params(0).Value = cliente Return ExecuteNonQuery( strconn, _ CommandType.StoredProcedure, _ “Clientes_Insert", Params)End Function
Page 34
http://www.desarrolladoras.com - [email protected]
EjemplosEjemplos
ExecuteDatasetExecuteDataset
Imports Microsoft.ApplicationBlocks.Data.SqlHelper
Public Shared Function LeerTodos( ) As DataSet Return ExecuteDataset( strconn,CommandType.StoredProcedure, _ “Clientes_GetAll“)End Function
Page 35
http://www.desarrolladoras.com - [email protected]
EjemplosEjemplos
FillDatasetFillDataset
Imports Microsoft.ApplicationBlocks.Data.SqlHelper
Public Shared Function LeerTodos( ByVal ds as Dataset ) _As DataSet
Dim strTabla() As String = {“Parametros_GetAll"} FillDataset( strconn, CommandType.StoredProcedure, _
"Parametros_GetAll", ds, strTabla) Return ds End Function
Page 36
http://www.desarrolladoras.com - [email protected]
PausaPausa
MateMateBreakBreak
Page 37
http://www.desarrolladoras.com - [email protected]
Escribiendo el código de la Escribiendo el código de la Capa de DatosCapa de Datos
1. Agregamos una clase al proyecto AluDatos.
2. Esta clase va a tener varios métodos compartidos para las distintas operaciones que necesitemos hacer sobre la Base de Datos.
TraerDataSet
Actualizar
Borrar
GuardarValor
Page 38
http://www.desarrolladoras.com - [email protected]
Escribiendo el código de la Escribiendo el código de la Capa de DatosCapa de Datos
Public Class CGrlDatos
Shared ConnAlu As String = _ Configuration.ConfigurationSettings.AppSettings("ConnALU")
Public Shared Function TraerDataset( _ ByVal entidad As String) As DataSet Try Return ExecuteDataset(ConnAlu, _ CommandType.StoredProcedure, entidad & "_GetAll") Catch ex As Exception
Throw ex End Try End Function...End Class
Page 39
http://www.desarrolladoras.com - [email protected]
Capa Capa NegocioNegocio
Page 40
http://www.desarrolladoras.com - [email protected]
Escribiendo el código de la Escribiendo el código de la Capa NegocioCapa Negocio
1.Agregamos una Clase CEntidad al proyecto AluNegocio.
2.Va a ser la Clase base de la cual vamos a heredar para crear mas fácilmente las demás.
3.Esta Clase va a estar compuesta por:
Declaración de Variables
Un constructor
Propiedades
Métodos
Page 41
http://www.desarrolladoras.com - [email protected]
Clase CEntidadClase CEntidad
Public Class CEntidad
Declaración de Variables
Constructores
Propiedades
Metodos
End Class
Page 42
http://www.desarrolladoras.com - [email protected]
Clase CEntidadClase CEntidadVariablesVariables
#Region "Declaración de Variables“
Friend mNomEnt As StringFriend mId As IntegerProtected Friend mDatos As DataRowProtected Friend mTDatos As DataSet
#End Region
Page 43
http://www.desarrolladoras.com - [email protected]
Clase CEntidadClase CEntidadConstructorConstructor
#Region "Constructores"
Sub New(ByVal NombreEntidad As String)mNomEnt = NombreEntidad
End Sub
#End Region
Page 44
http://www.desarrolladoras.com - [email protected]
CCllaassee
CCEEnnttiiddaad d
#Region "Propiedades"
Public Overridable Property Id() As Integer Get
Return mId End Get
Set(ByVal Value As Integer)Try mId = Value CGrlDatos.TraerDataset(mTDatos, mNomEnt, mId) If mTDatos.Tables(0).Rows.Count > 0 Then
mDatos = mTDatos.Tables(0).Rows(0) Else
mDatos = mTDatos.Tables(0).NewRowmTDatos.Tables(0).Rows.Add(mDatos)
End If Catch ex As Exception
Throw ex End Try
End Set End Property
#End Region
PPrrooppiieeddaaddeess
Page 45
http://www.desarrolladoras.com - [email protected]
Clase CEntidadClase CEntidadMétodosMétodos
Public Overridable Function TraerTodos() As DataSetTry
Return CGrlDatos.TraerDataset(New DataSet, _mNomEnt, mNomEnt & "_GetAll")
Catch ex As ExceptionThrow ex
End TryEnd Function
Public Overridable Function TraerLista() As DataSetTry
Return CGrlDatos.TraerDataset(New DataSet, _ mNomEnt, mNomEnt & "_GetList")
Catch ex As ExceptionThrow ex
End TryEnd Function
Page 46
http://www.desarrolladoras.com - [email protected]
Clase CEntidadClase CEntidadMétodosMétodos
Public Overridable Function TraerUno() As DataSetTry
Return CGrlDatos.TraerDataset(New DataSet, _ mNomEnt & "_GetByNro" & _ mNomEnt.PadLeft(3), Me.Id)
Catch ex As ExceptionThrow ex
End TryEnd Function
Page 47
http://www.desarrolladoras.com - [email protected]
Clase CEntidadClase CEntidadMétodosMétodos
Public Overridable Sub Actualizar()Try Dim DatosUno() As Object = _
mTDatos.Tables(0).Rows(0).ItemArray() If Me.Id <> -1 Then
CGrlDatos.Actualizar(mDatos, mNomEnt & "_Update") Else
CGrlDatos.ActualizarSal(mDatos, mNomEnt & "_Insert")Me.Id = DatosUno(0)
End IfCatch ex As Exception
Throw exEnd Try
End Sub
Page 48
http://www.desarrolladoras.com - [email protected]
Clase CEntidadClase CEntidadMétodosMétodos
Public Overridable Function Eliminar(ByVal Id As Integer, _ ByVal nomparam As Array) As Integer
Try Return CGrlDatos.Borrar(nomparam, _
mNomEnt & "_Delete", Id)Catch ex As Exception Throw exEnd Try
End Function
Page 49
http://www.desarrolladoras.com - [email protected]
Escribiendo el código de la Escribiendo el código de la Capa NegocioCapa Negocio
1. Agregamos una Clase por cada entidad que necesitemos, en este caso Alumnos, Curso, Asignaturas, Localidades, Paises, etc... al proyecto AluNegocio.
2. Estas Clases van a heredar de la Clase base CEntidad
3. Cada una de estas Clases va a estar compuesta por:
Declaración de Variables
Un constructor
Propiedades
Métodos
Page 50
http://www.desarrolladoras.com - [email protected]
Clase CPaisClase CPais
Public Class CPais
Inherits ALU.AluNegocio.CEntidad
Declaración de Variables
Constructores
Propiedades
Actualización
End Class
Page 51
http://www.desarrolladoras.com - [email protected]
Clase CPaisClase CPaisVariablesVariables
#Region "Declaración de Variables“
Protected Friend mTodosDatos As New dsPaisesPrivate Pais As dsPaises.PaisesRow
#End Region
Page 52
http://www.desarrolladoras.com - [email protected]
#Region "Constructores"
Sub New(ByVal value As Integer) MyBase.New("Paises") Try
MyBase.mId = valuemTodosDatos.Clear()CGrlDatos.TraerDataset(mTodosDatos, mNomEnt,
value)If mTodosDatos.Tables(0).Rows.Count = 0 Then
Pais = mTodosDatos.Paises.NewPaisesRowPais.PaiNroPai = -1Pais.PaiDesc = ""
ElsePais = mTodosDatos.Paises.Rows(0)
End IfMyBase.mTDatos = mTodosDatosMyBase.mDatos = Pais
Catch ex As ExceptionThrow ex
End Try End Sub#End Region
CCllaassee
CCPPaaiis s
CCoonnssttrruuccttoorr
Page 53
http://www.desarrolladoras.com - [email protected]
CCllaassee
CCPPiiaas s
#Region "Propiedades"
Public Overrides Property Id() As IntegerGet
Return MyBase.mIdEnd Get
Set(ByVal Value As Integer)MyBase.mId = Value
End SetEnd Property
Public Property Desc() As StringGet
Return Pais.PaiDescEnd GetSet(ByVal Value As String)
Pais.PaiDesc = ValueEnd Set
End Property
#End Region
PPrrooppiieeddaaddeess
Page 54
http://www.desarrolladoras.com - [email protected]
Clase CPaisClase CPaisMétodosMétodos
#Region "Actualización"
Public Overrides Sub Actualizar()Try If Me.Id > 0 Then
CGrlDatos.Actualizar(Pais, Me.mNomEnt & "_Update") Else
mId = CGrlDatos.ActualizarSal(Pais, _ Me.mNomEnt & "_Insert")
End IfCatch ex As Exception Throw exEnd Try
End Sub
#End Region
Page 55
http://www.desarrolladoras.com - [email protected]
Capa Capa ClienteCliente
Page 56
http://www.desarrolladoras.com - [email protected]
Herencia Herencia de de
FormulariosFormularios
Page 57
http://www.desarrolladoras.com - [email protected]
Formulario BaseFormulario Base
Public Class CUsuario
Inherits USU.Negocio.CEntidad
• Creamos un Formulario del cual van a heredar la mayoría de los Formularios de nuestra Aplicación
• Colocamos este Formulario en el Proyecto AluGlobal para poder hacer referencia a él desde el Proyecto Alumnos y cualquier otro Proyecto que agreguemos en la capa Cliente.
• Agregamos a este Formulario todas las cosas que se van a repetir en todos los formularios. Icono del Sistema, Nombre de la Empresa, etc...
• Generamos la solución para que se genere el Assembly y así poder heredarlo
• Creamos un Formulario del cual van a heredar la mayoría de los Formularios de nuestra Aplicación
• Colocamos este Formulario en el Proyecto AluGlobal para poder hacer referencia a él desde el Proyecto Alumnos y cualquier otro Proyecto que agreguemos en la capa Cliente.
• Agregamos a este Formulario todas las cosas que se van a repetir en todos los formularios. Icono del Sistema, Nombre de la Empresa, etc...
• Generamos la solución para que se genere el Assembly y así poder heredarlo
Page 58
http://www.desarrolladoras.com - [email protected]
Formulario HeredadoFormulario Heredado
Agregamos un Formulario que va a heredar todas las características de nuestro Formulario Base
Page 59
http://www.desarrolladoras.com - [email protected]
Formulario HeredadoFormulario Heredado
También podríamos haber elegido Formulario Heredado del cuadro de diálogo Agregar Nuevo Elemento
Elegimos el Formulario del cual vamos a heredar
Page 60
http://www.desarrolladoras.com - [email protected]
Formulario HeredadoFormulario Heredado
• Ya tenemos nuestro Formulario Heredado
• Todo lo que agregamos en el Formulario Base va a estar en todos los formularios heredados del mismo.
• Ahora nos dedicamos a agregarle a los Formularios heredados los controles particulares del mismos sin tener que preocuparnos que las cosas generales queden en distinto formato en los distintos formularios de la aplicación.
• Ya tenemos nuestro Formulario Heredado
• Todo lo que agregamos en el Formulario Base va a estar en todos los formularios heredados del mismo.
• Ahora nos dedicamos a agregarle a los Formularios heredados los controles particulares del mismos sin tener que preocuparnos que las cosas generales queden en distinto formato en los distintos formularios de la aplicación.
No tendremos que volver a agregar estos controles No tendremos que volver a agregar estos controles y este código nunca mas!y este código nunca mas!
Todos van a ser iguales!Todos van a ser iguales!
Page 61
http://www.desarrolladoras.com - [email protected]
Armado de un Formulario Armado de un Formulario
estiloestilo“Outlook Express”“Outlook Express”
Page 62
http://www.desarrolladoras.com - [email protected]
Formulario estilo Formulario estilo “Outlook Express”“Outlook Express”
Es fácil!!!Son sólo 10 pasos
Page 63
http://www.desarrolladoras.com - [email protected]
Formulario estilo “Outlook Express”Formulario estilo “Outlook Express”
1. Colocar en el Formulario todos los controles que vayan pegados sobre sus bordes. ToolBar, StatusBar, etc...
2. Colocar un control Panel y cambiar su propiedad Dock a Left
3. Colocar un control Splitter en el Formulario y cambiar su propiedad Dock a Left
4. Colocar un control ListView en el Formulario y cambiar su propiedad Dock a Fill
1. Colocar en el Formulario todos los controles que vayan pegados sobre sus bordes. ToolBar, StatusBar, etc...
2. Colocar un control Panel y cambiar su propiedad Dock a Left
3. Colocar un control Splitter en el Formulario y cambiar su propiedad Dock a Left
4. Colocar un control ListView en el Formulario y cambiar su propiedad Dock a Fill
Page 64
http://www.desarrolladoras.com - [email protected]
Formulario estilo “Outlook Express”Formulario estilo “Outlook Express”
5. Colocar un control Panel dentro del primer Panel y cambiar su propiedad Dock a Top
6. Colocar un control Splitter dentro del primer Panel y cambiar su propiedad Dock a Top
7. Colocar otro control Panel dentro del primer Panel y cambiar su propiedad Dock a Fill
5. Colocar un control Panel dentro del primer Panel y cambiar su propiedad Dock a Top
6. Colocar un control Splitter dentro del primer Panel y cambiar su propiedad Dock a Top
7. Colocar otro control Panel dentro del primer Panel y cambiar su propiedad Dock a Fill
Sólo faltan 3 pasos mas...
Page 65
http://www.desarrolladoras.com - [email protected]
Formulario estilo “Outlook Express”Formulario estilo “Outlook Express”
8. Dentro de cada uno de los dos últimos Panel que colocamos, colocar un control Button y cambiar su propiedad Dock a Top
9. Colocar un control TreeView dentro de cada uno de los 2 últimos Panel y cambiar su propiedad Dock a Fill
10.Colocar 2 controles ImageList en el formulario
8. Dentro de cada uno de los dos últimos Panel que colocamos, colocar un control Button y cambiar su propiedad Dock a Top
9. Colocar un control TreeView dentro de cada uno de los 2 últimos Panel y cambiar su propiedad Dock a Fill
10.Colocar 2 controles ImageList en el formulario
Listo!!!
Ahora sólo falta escribir un poquito para llenar de datos los controles y para que además funcionen...
Page 66
http://www.desarrolladoras.com - [email protected]
PrincipalesPrincipales
Propiedades, Propiedades, Métodos y Métodos y Eventos Eventos
de algunos Controlesde algunos Controles
Page 67
http://www.desarrolladoras.com - [email protected]
Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles
ImageListImageListPropiedades
Images: Colección de imágenes, aquí se cargan los Iconos
ImageSize: Cambiando esta propiedad podemos hacer que los Iconos se vean mas chicos o mas grandes
Page 68
http://www.desarrolladoras.com - [email protected]
Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles
TreeViewTreeViewPropiedades
ImageList: Asignar el nombre del ImageList del cual se van a tomar los Iconos a mostrar
ItemHeight: Altura de cada nodo
Page 69
http://www.desarrolladoras.com - [email protected]
Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles
TreeViewTreeViewPropiedades
Nodes: Colección de nodos, creamos los nodos, le asignamos el texto a mostrar y el índice de icono. También podemos hacer esto por código
SelectedNode: Nodo seleccionado en un instante dado
Page 70
http://www.desarrolladoras.com - [email protected]
Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles
TreeViewTreeViewMétodos
GetNodeAt: Devuelve el nodo, si existe, que se encuentra en el lugar donde se hizo click en base a las coordenadas x e y
ExpandAll: Expande todos los nodos del árbol
Page 71
http://www.desarrolladoras.com - [email protected]
Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles
TreeViewTreeViewEventos
AfterSelected: Se produce luego de seleccionar un nuevo nodo
MouseDown: Se produce al presionar cualquier botón del mouse. Lo utilizamos para saber si hizo click sobre un nodo o no y para cambiar de nodo seleccionado apretando cualquier botón del mouse
Page 72
http://www.desarrolladoras.com - [email protected]
Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles
ListViewListViewPropiedades
LargeImageList: Asignar el nombre del ImageList del cual se van a tomar los Iconos a mostrar de tamaño grande
SmallImageList: Asignar el nombre del ImageList del cual se van a tomar los Iconos a mostrar de tamaño pequeño
Page 73
http://www.desarrolladoras.com - [email protected]
Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles
ListViewListViewPropiedades
View: Estilo de Vista en la que se muestra el ListView
SelectedItems: Colección de elementos seleccionados en el control en un instante dado
Page 74
http://www.desarrolladoras.com - [email protected]
Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles
ListViewListViewEventos
SelectedIndexChanged: Se produce al cambiar el elemento seleccionado
Page 75
http://www.desarrolladoras.com - [email protected]
Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles
SplitterSplitter
Eventos
SplitterMoved: Se produce al arrastrar el Splitter
Page 76
http://www.desarrolladoras.com - [email protected]
Links útiles:Links útiles:Universidad.NetUniversidad.Net:
http://www.microsoft.com/spanish/msdn/comunidad/uni.net/
Sitio de Microsoft dedicado a .Net Windows Forms:Sitio de Microsoft dedicado a .Net Windows Forms:
http://www.windowsforms.net
Data Access Aplication Blocks:Data Access Aplication Blocks:
http://msdn.microsoft.com/library/en-us/dnbda/html/daab-rm.asp?frame=true
http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431
Desarrollador Cinco Estrellas:Desarrollador Cinco Estrellas:
http://www.microsoft.com/spanish/msdn/comunidad/dce/default.asp
PanoramaBox:PanoramaBox: http://www.panoramabox.com/
Page 77
http://www.desarrolladoras.com - [email protected]
Page 78
http://www.desarrolladoras.com - [email protected]
Muchas Gracias
desarrolladoras
www.desarrolladoras.com
Page 79
http://www.desarrolladoras.com - [email protected]
Clases Instanciadas Clases Instanciadas versus versus
Clases CompartidasClases Compartidas
Page 80
http://www.desarrolladoras.com - [email protected]
Clases CompartidasClases Compartidas
1. Las clases NO pueden ser compartidas. Sus métodos, propiedades y variables SI pueden serlo
2. Para que un Método, Propiedad y/o Variable sean compartidos debemos calificarlos con la palabra reservada SHARED
3. Un Método, Propiedad y/o Variable compartidos pueden ser usados en cualquier parte del código sin necesidad de crear un nuevo objeto, haciendo referencia al mismo a través del nombre de la clase. Ej: MiClase.MiMetodo()
Page 81
http://www.desarrolladoras.com - [email protected]
Clases CompartidasClases Compartidas
Public Class MiClase
Public Shared MiVariable As String
Public Shared Sub MiMetodo()MiVariable = "Hola Mundo"
End Sub
End Class
Public Class OtraClase
Public Sub OtroMetodo()MiClase.MiVariable = "Hola
Gente"MiClase.MiMetodo()
End Sub
End Class
Page 82
http://www.desarrolladoras.com - [email protected]
Clases InstanciadasClases Instanciadas
1. Las clases tal cual las definimos normalmente serán instanciadas mientras NO le agreguemos a algunos de sus miembros el calificativo SHARED (Algunos miembros podrán ser SHARED y a los mismos los podremos invocar a través del nombre de la Clase)
2. Para acceder a sus miembros, Métodos, Propiedades y/o Variables deberemos crear un objeto de esa Clase. Crearemos una nueva instancia.
3. Los Métodos, Propiedades y/o Variables de estas clases pueden ser usados en cualquier parte del código a través de la variable de objeto creada a partir de esta clase.
Page 83
http://www.desarrolladoras.com - [email protected]
Clases InstanciadasClases Instanciadas
Public Class MiClase
Public MiVariable As String
Public Sub MiMetodo()MiVariable = "Hola Mundo"
End Sub
End Class
Public Class OtraClase
Public Sub OtroMetodo() Dim obj As MiClase = New MiClase obj.MiVariable = "Hola Gente" obj.MiMetodo()
End Sub
End Class