64
Archivos, impression y estructuras

Visual Basic: Archivos, impresion y estructuras

Embed Size (px)

DESCRIPTION

Aqui la presentacion de como manipular archivos, impresion y estructuras en visual basic

Citation preview

Page 1: Visual Basic: Archivos, impresion y estructuras

Archivos, impression y estructuras

Page 2: Visual Basic: Archivos, impresion y estructuras

Introducción Hablaremos de:

◦ Guardar los datos de archivos de texto secuenciales◦ Leer datos de los archivos en la aplicación◦ Utilizar el OpenFileDialog, SaveFileDialog, ColorDialog y controles

FontDialog◦ Abrir, guardar archivos, la selección de colores y fuentes con cuadros

de diálogo estándar de Windows◦ Utilizar el control PrintDocument◦ Para imprimir informes de su aplicación◦ Los envases unitarios de datos junto a estructuras

Page 3: Visual Basic: Archivos, impresion y estructuras

Usando archivos

Page 4: Visual Basic: Archivos, impresion y estructuras

Los datos se pueden almacenar en un archivo•Hasta el momento, todos nuestros datos se han almacenado en los controles y las variables existentes en la memoria RAM

•Estos datos desaparecen una vez que el programa deja de funcionar

•Si los datos se almacenan en un archivo en un disco de computadora, pueden ser recuperados y utilizados en un momento posterior

Page 5: Visual Basic: Archivos, impresion y estructuras

El proceso de utilización de un archivo

Se deben tomar las siguientes medidas cuando un archivo es utilizado por una aplicación:◦ El archivo debe ser abierto; Si aún no existe, se debe crear◦ Los datos se escriben en el fichero o leen desde el archivo◦ Cuando la aplicación haya terminado con el archivo, el archivo se cierra

Page 6: Visual Basic: Archivos, impresion y estructuras

Archivo de salida Un archivo de salida es un archivo en el que un programa escribe datos

Page 7: Visual Basic: Archivos, impresion y estructuras

Archivo de entrada Un archivo de entrada es un archivo de un programa que lee los datos

Page 8: Visual Basic: Archivos, impresion y estructuras

Archivo de Acceso secuencial•El archivo de acceso secuencial es el tipo más sencillo de archivo de datos

•Un archivo de acceso secuencial es como un flujo de datos que debe ser leído de principio a fin

•Algunas veces conocido como un archivo de texto

•Puede ser fácilmente creado y modificado usando un editor de texto ◦ Bloc de notas de Windows, por ejemplo,

Page 9: Visual Basic: Archivos, impresion y estructuras

Escribir en archivos con objetos StreamWriter

Existen dos maneras básicas para abrir un archivo para escritura ◦ Crear un nuevo archivo ◦ Abrir un archivo existente y añadir datos a la misma ◦ Un objeto StreamWriter realiza la escritura real en el fichero

Dos pasos necesarios: ◦ Declare una variable StreamWriter ◦ Llame a cualquiera File.CreateText o File.AppendText y asignar su valor devuelto a la

variable StreamWriter

Page 10: Visual Basic: Archivos, impresion y estructuras

Uso de la instrucción Imports para los objetos StreamWriter

Para hacer que los objetos StreamWriter esten disponibles para su programa ◦ Inserte la siguiente instrucción Imports al principio del archivo de código del formulario:

Imports System.IO

Page 11: Visual Basic: Archivos, impresion y estructuras

Creación de un archivo de texto Declare una variable StreamWriter con el siguiente formato general:

◦ ObjectVar es el nombre de la variable de objeto ◦ Puedes usar privada o pública en lugar de Dim

◦ A nivel de clase o de nivel de módulo◦ Aqui un ejemplo:

Dim ObjectVar As StreamWriter

Dim phoneFile As StreamWriter

Page 12: Visual Basic: Archivos, impresion y estructuras

Creación de un archivo de texto A continuación, llame al método File.CreateText, pasando el nombre de un archivo Por ejemplo:

◦ Observe el valor de retorno de File.CreateText se asigna a la variable StreamWriter denominado phonefile

phoneFile = File.CreateText("phonelist.txt")

Page 13: Visual Basic: Archivos, impresion y estructuras

Rutas de archivo El nombre del archivo que se pasa al método File.CreateText

Puede ser una ruta completa del archivo con la letra de la unidad "C:\data\vbfiles\phonelist.txt"

◦ Recomendar a un archivo en el directorio raíz de la unidad por defecto◦ "\phonelist.txt"◦ Incluya información de ruta en absoluto◦ "phonelist.txt"

Si no hay información de la ruta especificada

Se utiliza la carpeta \ Debug \ bin del proyecto actual

Page 14: Visual Basic: Archivos, impresion y estructuras

Abrir un archivo existente y agregando datos a el

Si ya existe un archivo de texto, es posible que se desee agregar más datos al final del archivo◦ Esto se llama añadiendo el archivoEn primer lugar, declarar una variable StreamWriterA continuación, llame al método File.AppendText, pasando el nombre de un archivo existenteSi el archivo no sale se crearápor ejemplo :

phoneFile = File.AppendText("phonelist.txt")

Page 15: Visual Basic: Archivos, impresion y estructuras

Escribiendo datos a un archivo El método WriteLine de la clase StreamWriter escribe una línea de datos en un archivo con el siguiente formato general:

◦ ObjectVar es el nombre de la variable de objeto StreamWriter◦ Data representa constantes o variables cuyo contenido se escribirán en el archivo

◦ Al llamar al método sin el argumento de datos, escribe una línea en blanco en el archivo

El método WriteLine escribe los datos en el archivo y, a continuación, escribe un carácter de nueva línea inmediatamente después de los datos

Un Carácter de Nueva Línea Es Un Personaje invisible Separa Que el Texto dividiéndola en Otra línea ahora CUANDO aparece en la Pantalla

ObjectVar.WriteLine(Data)

Page 16: Visual Basic: Archivos, impresion y estructuras

Escribiendo datos a un archivo A continuación escribe los nombres y puntuaciones de tres estudiantes en un archivo:

Además de separar el contenido de un archivo en línea, el carácter de nueva línea también sirve como un delimitador

• Un delimitador es un elemento que separa otros artículos• Los datos deben ser separados con el fin de que se pueda leer desde un archivo

' Write data to the file.studentFile.WriteLine("Jim")studentFile.WriteLine(95)studentFile.WriteLine("Karen")studentFile.WriteLine(98)studentFile.WriteLine("Bob")studentFile.WriteLine(82)

Page 17: Visual Basic: Archivos, impresion y estructuras

El método de Write El método de Write es un miembro de la clase StreamWriter que escribe un artículo de los datos sin tener que escribir un carácter de nueva línea con el siguiente formato general:

◦ ObjectVar es el nombre de un objeto StreamWriter◦ Data representa el contenido de una constante o variable que se escriben en

el archivo◦ Escribe datos en un archivo sin necesidad de terminar la línea con un carácter

de nueva línea◦ Un espacio en blanco o una coma se podrían utilizar para proporcionar un delimitador entre los

elementos de datos

ObjectVar.Write(Data)

Page 18: Visual Basic: Archivos, impresion y estructuras

Cerrando un archivo La clase StreamWriter tiene un método denominado Close que cierra un archivo con el siguiente formato general:

◦ ObjectVar es la variable de objeto StreamWriter que se desea cerrar◦ La siguiente declaración cierra una variable de objeto StreamWriter

denominado salesFile:

El metodo Close ◦ Escribe cualquier información no guardada restante en el búfer de archivo◦ Lanza memoria asignada por el objeto StreamWriter

ObjectVar.Close()

salesFile.Close()

Page 19: Visual Basic: Archivos, impresion y estructuras

Añadir datos a un archivo Cuando añadimos un archivo

•Escribimos nuevos datos inmediatamente después de los datos existentes en el archivo

Si un archivo existente se abre con el método AppendText

•Los datos escritos en el archivo se anexan a los datos existentes en el archivo•Si no existe el archivo, se crea

Page 20: Visual Basic: Archivos, impresion y estructuras

Ejemplo de como añadir datos a un archivo

El siguiente ejemplo :Abre un archivo en modo de adición y escribe datos adicionales para el archivo

Antes Despues' Declare an object variableDim friendFile As StreamWriter

' Open the file.friendFile = File.AppendText("MyFriends.txt")

' Write the data.friendFile.WriteLine("Bill Johnson")friendFile.WriteLine("555–4545")

' Close the file.friendFile.Close()

Page 21: Visual Basic: Archivos, impresion y estructuras

Lectura de archivos con Objetos StreamReader

Un objeto StreamReader lee datos de un archivo de texto secuencial

Un objeto StreamReader es una instancia de la clase StreamReader

La clase StreamReader proporciona métodos para leer los datos de un archivo

Crea una variable de objeto StreamReader utilizando el siguiente formato general :

◦ ObjectVar es el nombre de la variable de objeto◦ Puedes usar una variable privada o pública en lugar de Dim

◦ A nivel de clase o de nivel de módulo

Dim ObjectVar As StreamReader

Page 22: Visual Basic: Archivos, impresion y estructuras

Lectura de archivos con Objetos StreamReader

El método File.OpenText abre un archivo y guarda la dirección de la variable de objeto StreamReader utilizando el siguiente formato general :

◦ Filename es una cadena o una variable de cadena que especifica la ruta de acceso y / o el nombre del archivo para abrir

◦ Por ejemplo:

•Para hacer que la clase StreamReader este disponible• Escribe el siguiente commando Imports en la parte inferior de tu codigo:

File.OpenText(Filename)

Dim customerFile As StreamReadercustomerFile = File.OpenText("customers.txt")

Imports System.IO

Page 23: Visual Basic: Archivos, impresion y estructuras

Leyendo datos desde un archivo El método ReadLine en la clase StreamReader lee una línea de datos de un archivo con el siguiente formato general :

◦ ObjectVar es el nombre de una variable de objeto StreamReader◦ El método lee una línea desde el archivo asociado con ObjectVar y devuelve los datos como

una cadena◦ Por ejemplo, la siguiente declaración lee una línea desde el archivo y lo almacena en la

variable :

ObjectVar.ReadLine()

strCustomerName = customerFile.ReadLine()

Page 24: Visual Basic: Archivos, impresion y estructuras

Leyendo datos desde un archivo Los datos se leen desde un archivo en una dirección de sólo avance

Cuando se abre el archivo :◦ Su posición de lectura se

establece en el primer artículo en el archivo

Como se lee los datos :◦ La posición de lectura avanza

por el archivo

Dim textFile As StreamReadertextFile = File.OpenText ("Quotation.txt")

strInput = textFile.ReadLine()

Page 25: Visual Basic: Archivos, impresion y estructuras

Cerrando el archivo La clase StreamReader tiene un método denominado Close que cierra un objeto StreamReader abierto con el siguiente formato general :

◦ ObjectVar es la variable de objeto StreamReader que se desea cerrar◦ La siguiente declaración cierra una variable de objeto StreamReader llamado readFile :

ObjectVar.Close()

readFile.Close()

Page 26: Visual Basic: Archivos, impresion y estructuras

Determinar si un archivo existe Para determinar si existe un archivo antes de abrirlo, se puede llamar al método File.Exists utilizando el siguiente formato general :

◦ Filename es el nombre de un archivo, que puede incluir la ruta◦ El método devuelve True si los archivos existen o Falso si el archivo no existe

File.Exists(Filename)

If File.Exists(strFilename) Then ' Open the file. inputFile = File.OpenText(strFilename)Else MessageBox.Show(strFilename & " does not exist.")End If

Page 27: Visual Basic: Archivos, impresion y estructuras

Usando vbTab para alinear elementos de la pantalla

La constante predefinida vbTab◦ Mueve la posición de impresión hacia adelante a la siguiente, incluso múltiplo de 8◦ Se puede utilizar para alinear columnas en la salida en pantalla o impresa

ListBox1.Items.Add("012345678901234567890")ListBox1.Items.Add("X" & vbTab & "X")ListBox1.Items.Add("XXXXXXXXXXXX" & vbTab & "X")ListBox1.Items.Add(vbTab & vbTab & "X")

Page 28: Visual Basic: Archivos, impresion y estructuras

La detección del final de un archivo

En muchos casos, la cantidad de datos en un archivo es desconocida

El uso de la propiedad EndOfStream del objeto StreamReader para determinar cuándo se ha alcanzado el final del archivo

Si se ha alcanzado el final del archivo, la propiedad se establecerá en True

De lo contrario, se establecerá en False

El ejemplo siguiente utiliza un bucle Do Until que utiliza la propiedad EndOfStream para determinar el final del archivo :

Dim scoresFile As StreamReaderDim strInput As StringscoresFile = File.OpenText("Scores.txt")Do Until scoresFile.EndOfStream strInput = scoresFile.ReadLine() lstResults.Items.Add(strInput)LoopscoresFile.Close()

Page 29: Visual Basic: Archivos, impresion y estructuras

Otros métodos StreamReader El método Read sólo lee el siguiente carácter de un archivo y devuelve el código entero para el personaje con el siguiente formato general :

◦ ObjectVar es el nombre de un objeto StreamReader◦ Utilice la función Chr para convertir el código entero a un personaje

ObjectVar.Read

Dim textFile As StreamReaderDim strInput As String = String.EmptytextFile = File.OpenText("names.txt")Do While Not textFile.EndOfStream strInput &= Chr(textFile.Read)LooptextFile.Close()

Page 30: Visual Basic: Archivos, impresion y estructuras

Otros métodos StreamReader El método ReadToEnd lee y devuelve todo el contenido de un archivo que comienza en la posición de lectura actual usando el siguiente formato general:

◦ ObjectVar es el nombre de un objeto StreamReader

ObjectVar.ReadToEnd

Dim textFile As StreamReaderDim strInput As StringtextFile = File.OpenText("names.txt")strInput = textFile.ReadToEnd()textFile.Close()

Page 31: Visual Basic: Archivos, impresion y estructuras

Trabajando con Arreglos y Archivos

El contenido de un array pueden ser fácilmente escriben en un archivo utilizando un bucle

Dim outputFile as StreamWriteroutputFile = File.CreateText("Values.txt")

For intCount = 0 To (intValues.Length – 1) outputFile.WriteLine(intValues(intCount))Next

outputFile.Close()

Page 32: Visual Basic: Archivos, impresion y estructuras

Trabajando con Arreglos y Archivos

Es tan fácil de leer el contenido de un archivo en una matriz usando un bucle

Dim inputFile as StreamReaderinputFile = File.OpenText("Values.txt")

For intCount = 0 To (intValues.Length – 1) intValues(intCount) = CInt(inputFile.ReadLine())Next

inputFile.Close()

Page 33: Visual Basic: Archivos, impresion y estructuras

Los controles de OpenFileDialog, SaveFileDialog, FontDialog, y ColorDialog

Page 34: Visual Basic: Archivos, impresion y estructuras

Los controles OpenFileDialog y SaveFileDialog

Windows tiene un método estándar para permitir al usuario elegir un archivo para abrir o guardar

Estos métodos permiten a los usuarios navegar por un archivo◦ El control OpenFileDialog y control SaveFileDialog proporcionan esta capacidad en

Visual Basic

Para utilizar el control OpenFileDialog◦ Haga doble clic en la herramienta OpenFileDialog en la ventana Caja de herramientas

bajo el tab Dialogs ◦ Aparece en bandeja de componentes◦ Utilice ofd como prefijo estándar al nombrar

SaveFileDialog se utiliza de una manera similar

Page 35: Visual Basic: Archivos, impresion y estructuras

Trayendo un Open Dialog Box Tráela a la pantalla con el método ShowDialog

Método devuelve un valor que indica qué botón el usuario selecciona el cuadro de diálogo :◦ Windows.Forms.DialogResult.OK para el boton de OK◦ Windows.Forms.DialogResult.Cancel para el boton de cancel

Por ejemplo:

ControlName.ShowDialog()

If ofdOpenFile.ShowDialog() = Windows.Forms.DialogResult.OK Then MessageBox.Show(ofdOpenFile.FileName)Else MessageBox.Show("You selected no file.")End If

Page 36: Visual Basic: Archivos, impresion y estructuras

La propiedad de Filter Los controles FileDialog tienen una propiedad Filter

◦ limita los archivos que se muestran a las extensiones de archivo específicos◦ Especifique descripción del filtro y se mostrará al usuario primero◦ A continuación, especifique el propio filtro◦ Símbolo de pipe (|) utilizado como delimitador

Propiedad Filter permite al usuario elegir:◦ Archivos de texto(*.txt), enseña todos los archivos.txt ◦ Todos los archivos(*.*), enseña todos los archivos

Page 37: Visual Basic: Archivos, impresion y estructuras

Otras propiedades OpenFileDialog

La propiedad InitialDirectory es la carpeta que se muestra inicialmente

La propiedad Title especifica el texto en la barra de título◦ El ejemplo siguiente establece el filtro InitialDirectory y Propiedades del título :

' Configure the Open dialog box and display it.With ofdOpenFile .Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*" .InitialDirectory = "C:\Data" .Title = "Select a File to Open" If.ShowDialog() = Windows.Forms.DialogResult.OK Then inputFile = File.OpenText(.Filename) End IfEnd With

Page 38: Visual Basic: Archivos, impresion y estructuras

Ejemplo de un Open Dialog Box

Page 39: Visual Basic: Archivos, impresion y estructuras

El control SaveFileDialog El SaveFileDialog utiliza los mismos métodos:

◦ ShowDialog

Las misma propiedades:◦ Filter◦ InitialDirectory◦ Title

Y las misma constants de resultado:◦ Windows.Forms.DialogResult.OK◦ Windows.Forms.DialogResult.Cancel

Page 40: Visual Basic: Archivos, impresion y estructuras

Ejemplo de un Windows Save As Dialog Box

Page 41: Visual Basic: Archivos, impresion y estructuras

El control ColorDialog El control ColorDialog muestra un cuadro de diálogo Color de Windows estándar

◦ Para colocar un control ColorDialog en un formulario◦ Haga doble clic en el icono de ColorDialog en la sección Diálogos de la ventana Caja de

herramientas◦ Aparece el control en la bandeja de componentes◦ Use el prefijo cd al nombrar el control

◦ Para mostrar un cuadro de diálogo Color, llame al método ShowDialog◦ Devuelve uno de los siguientes valores

◦ Windows.Forms.DialogResult.OK◦ Windows.Forms.DiallogResult.Cancel

Page 42: Visual Basic: Archivos, impresion y estructuras

Ejemplo del Windows Color Dialog Box

Page 43: Visual Basic: Archivos, impresion y estructuras

El control FontDialog El control FontDialog muestra un cuadro de diálogo estándar de Windows

◦ Para colocar un control en un formulario FontDialog◦ Haga doble clic en el icono FontDialog en la sección Diálogos de la ventana Caja de

herramientas◦ Aparece del control en la bandeja de componentes◦ Utilice el prefijo fd al nombrar el control

Para mostrar un cuadro de diálogo Color, llame al método ShowDialog ◦ Devuelve uno de los siguientes valores

◦ Windows.Forms.DialogResult.OK◦ Windows.Forms.DiallogResult.Cancel

Page 44: Visual Basic: Archivos, impresion y estructuras

Ejemplo del Windows Font Dialog Box

Page 45: Visual Basic: Archivos, impresion y estructuras

El control PrintDocument

Page 46: Visual Basic: Archivos, impresion y estructuras

El control PrintDocument El control PrintDocument le da a su aplicación la posibilidad de imprimir la salida de la impresora

◦ Para colocar un control PrintDocument en un formulario

◦ Haga doble clic en la herramienta PrintDocument en la sección Impresión de la Caja de herramientas

◦ Aparece en la bandeja de componentes◦ Utilice el prefijo pd al nombrar el control

Page 47: Visual Basic: Archivos, impresion y estructuras

El metodo Print y elPrintPage Event

El control PrintDocument tiene un método de impresión que se inicia el proceso de impresión utilizando el siguiente formato general:

◦ Cuando se llama al método, se dispara un evento PrintPage◦ Debe escribir código en el controlador de eventos para iniciar la impresión

Para crear una plantilla de código de controlador de eventos PrintPage:◦ Haga doble clic en el control PrintDocument en la bandeja de componentes◦ La plantilla de código de controlador de evento aparece en la ventana de código:

PrintDocumentControl.Print()

Private Sub pdPrint_PrintPage(...) Handles pdPrint.PrintPage

End Sub

Page 48: Visual Basic: Archivos, impresion y estructuras

El metodo Print Method y el PrintPage Event

Dentro del evento lanzador PrintPage◦ Usted escribe código que envía el texto a la impresora

◦ Usando una especifica◦ Font◦ Color◦ Location

◦ Con el metodo e.Graphics.DrawString

Page 49: Visual Basic: Archivos, impresion y estructuras

El metodo Print Method y el PrintPage Event

El método e.Graphics.DrawString utiliza el siguiente formato general :

◦ String es la cadena que se va a imprimir◦ FontName es una cadena que contiene el nombre de la fuente que se utilice◦ Size es el tamaño de la fuente en puntos◦ Style es el estilo de fuente (negrita, cursiva, regular, ponches o subrayado)◦ Brushes.Black Especifica que la salida debe ser impresa en negro◦ Hpos es la posición horizontal de la salida, en puntos, desde el margen izquierdo◦ Vpos es la posición vertical de la salida, en puntos, desde el margen superior

e.Graphics.DrawString(String, New Font(FontName, Size, Style, Brushes.Black, HPos, VPos)

Page 50: Visual Basic: Archivos, impresion y estructuras

Ejemplo del PrintPageDim inputFile As StreamReader ' Object variableDim intX As Integer = 10 ' X coordinate for printingDim intY As Integer = 10 ' Y coordinate for printing' Open the file.inputFile = File.OpenText(strFilename)' Read all the lines in the file.Do While Not inputFile.EndOfStream ' Print a line from the file. e.Graphics.DrawString(inputFile.ReadLine(), New Font ("Courier", 10, FontStyle.Regular), Brushes.Black, intX, intY) ' Add 12 to intY intY += 12 Loop' Close the file.inputFile.Close()

Page 51: Visual Basic: Archivos, impresion y estructuras

Informes formateados con String.Format

Los informes suelen contener las siguientes secciones:◦ Un encabezado de informe

◦ Impreso primero, contiene información general, como

◦ El nombre del reporte◦ La fecha y hora de impresión del informe

◦ El cuerpo del reporte◦ Contiene los datos del reporte

◦ A menudo formateada en columnas◦ Un informe de pie de página opcional

◦ Contiene la suma de uno para más columnas de datos

Page 52: Visual Basic: Archivos, impresion y estructuras

Impresión de informes con columnas de datos

Los datos se imprimen normalmente en formato de columna

Con cada columna que tiene una cabecera

Puede usar Monospaced para asegurar que◦ Cada carácter tiene la misma cantidad de espacio◦ Las columnas seran aliniadas

El método String.Format se utiliza para alinear los datos a lo largo de los límites de columna

Page 53: Visual Basic: Archivos, impresion y estructuras

Usando String.Format para alinear los datos a lo largo de límites de columnas

El método String.Format se puede utilizar para alinear los datos a lo largo de los límites de columna utilizando el siguiente formato general:

◦ El Método String.Format Se Puede utilizar el párrafo para alinear los Datos a lo Largo de los Límites de Columna utilizando el siguiente Formato general

◦ Arg0 y Arg1 son valores que deben ser formateados◦ Los [...] de notación indica que más argumentos pueden seguir◦ El método devuelve una cadena que contiene los datos◦ Proporcionado por los argumentos(Arg0, Arg1, etc)◦ Formateado con las especificaciones que se encuentran en FormatString

String.Format(FormatString, Arg0, Arg1 [,...])

Page 54: Visual Basic: Archivos, impresion y estructuras

Argumentos del método String.Format

Contiene tres conjuntos de números dentro de llaves◦ El primer número de una serie especifica el número de índice de argumento

◦ 0 representa el índice de intX◦ 1 representa el índice de intY◦ 2 representa el índice de intZ

◦ El segundo número en un conjunto es un valor absoluto que especifica el ancho de la columna, en los espacios, y el tipo de justificación que se utilizará◦ Un número positivo especifica justificación derecha◦ Un número negativo especifica justificación izquierda

Page 55: Visual Basic: Archivos, impresion y estructuras

Ejemplo Encabezado de informe y títulos de columna

Dim intCount As Integer ' Loop counterDim decTotal As Decimal = 0 ' AccumulatorDim intVertPosition As Integer ' Vertical printing position

' Print the report header.e.Graphics.DrawString("Sales Report", New Font("Courier New", 12,FontStyle.Bold), Brushes.Black, 150, 10)

e.Graphics.DrawString("Date and Time: " & Now.ToString(), New Font("Courier New", 12, FontStyle.Bold), Brushes.Black, 10, 38)

' Print the column headings.e.Graphics.DrawString(String.Format("{0, 20} {1, 20} ","NAME", "SALES"), New Font("Courier New", 12, FontStyle.Bold), Brushes.Black, 10, 66)

Page 56: Visual Basic: Archivos, impresion y estructuras

Ejemplo del Informe de Órgano y pie de página

' Print the body of the report.intVertPosition = 82

For intCount = 0 To 4 e.Graphics.DrawString(String.Format("{0, 20} {1, 20}", strNames(intCount),decSales(intCount).ToString("c")), New Font("Courier New", 12, FontStyle.Regular), Brushes.Black, 10, intVertPosition)

decTotal += decSales(intCount) intVertPosition += 14Next

' Print the report footer.e.Graphics.DrawString("Total Sales: " & decTotal.ToString("c"), New Font("Courier New", 12, FontStyle.Bold), Brushes.Black, 150, 165)

Page 57: Visual Basic: Archivos, impresion y estructuras

Ejemplo de Salida del Informe

Page 58: Visual Basic: Archivos, impresion y estructuras

Estructuras

Page 59: Visual Basic: Archivos, impresion y estructuras

Arreglos frente a Estructuras Arreglos:

◦ Varios campos en una matriz◦ Todo el mismo tipo de datos◦ Distinguido por un índice numérico

Estructuras◦ Varios campos en una estructura◦ Pueden ser de diferentes tipos de datos◦ Distinguido por un nombre de campo

Page 60: Visual Basic: Archivos, impresion y estructuras

Creando una estructura Una estructura es un tipo de datos puede crear que contiene una o más variables conocidas como campos Se crea una estructura en la clase o de nivel de módulo con la declaración de estructura:

◦ Por ejemplo:

[AccessSpecifier] Structure StructureName FieldDeclarationsEnd Structure

Structure EmpPayData Dim intEmpNumber As Integer Dim strFirstName As String Dim strLastName As String Dim dblHours As Double Dim decPayRate As Decimal Dim decGrossPay As DecimalEnd Structure

Page 61: Visual Basic: Archivos, impresion y estructuras

Declarando una estructura

With deptHead .intEmpNumber = 1101 .strFirstName = "Joanne" .strLastName = "Smith" .dblHours = 40.0 .decPayRate = 25 .decGrossPay = CDec(deptHead.dblHours) * deptHead.decPayRateEnd With

Dim deptHead As EmpPayData

Page 62: Visual Basic: Archivos, impresion y estructuras

Pasando Estructura Variables de Procedimientos y Funciones

Las estructuras pueden ser pasados a procedimientos y funciones como cualquier otra variable El tipo de datos a utilizar en la especificación es el nombre de la estructura

Sub CalcPay(ByRef employee As EmpPayData) ' This procedure accepts an EmpPayData variable ' as its argument. The employee's gross pay ' is calculated and stored in the grossPay ' field. With employee .decGrossPay =.dblHours * .decPayRate End WithEnd Sub

Page 63: Visual Basic: Archivos, impresion y estructuras

Arreglos como miembros de una estructura

Las estructuras pueden contener matrices Debe ReDim después de declarar estructura de variables

Dim student As StudentRecordReDim student.dblTestScores(4)student.strName = "Mary McBride"student.dblTestScores(0) = 89.0student.dblTestScores(1) = 92.0student.dblTestScores(2) = 84.0student.dblTestScores(3) = 96.0student.dblTestScores(4) = 91.0

Structure StudentRecord Dim strName As String Dim dblTestScores() As DoubleEnd Structure

Page 64: Visual Basic: Archivos, impresion y estructuras

Arreglos de estructuras Puede declarar una matriz de estructuras

employees es una matriz de tipo EmpPayData con 10 elementos

◦ Para acceder a los elementos individuales de la matriz, utilizar un subíndice

◦ Use la instrucción ReDim para establecer el tamaño de cada campo de matriz

Const intMAX_SUBSCRIPT As Integer = 9Dim employees(intMAX_SUBSCRIPT) As EmpPayData

employees(0).intEmpNumber = 1101

For intIndex = 0 To intMax_SUBSCRIPT ReDim students(intIndex).dblTestScores(4)Next