196
2. Entrada y Salida de Datos Entrada de datos InputBox(mensaje, [título][,por_omisión] [,posx][,posy]) Por ejemplo: x = InputBox(“Dato:”) ‘x almacena el dato introducido por el teclado Salida de datos Objeto.Print lista de expresiones Por ejemplo: Print a + 5, a * b / 2, “Fin” Print x; y + 5; w Print n; m Print “LISTADO DE RESULTADOS” Posiciones de impresión Función Spc Spc(n) Inserta n espacios antes de imprimir la expresión especificada a continuación. Solo puede utilizarse con Print Por ejemplo: Dim n As String : Dim edad As Integer n=InputBox(“Nombre y apellidos”) Edad=InputBox(“Edad:”) Print Spc(12) ; “NOMBRE” ; Spc(16) ; “EDAD” Print “--------------------------------------------------------” Print n; Spc(11); edad Función Tab Tab(n) Indica la posición (columna) donde se desea que comience la impresión de una determinada expresión. Solo puede utilizarse con Print. Por ejemplo: Dim n As String : Dim edad As Integer n=InputBox(“Nombre y apellidos”) Edad=InputBox(“Edad:”) Print Tab(13) ; “NOMBRE” ; Tab(35) ; “EDAD” Print “--------------------------------------------------------” Print n; Tab(35); edad Dar formato a la salida Print Format(Entrada,Patrón) Por ejemplo: n=34.84894 Print Format(n,”0.000”) ‘Imprime el valor de n con tres decimales ‘El resultado será 34.850 Patrón Entrada: 5 Entrada: -5 Entrada: 0.5 Sin patrón 5 -5 0.5 0 5 -5 1 0.00 5.00 -5.00 0.50 #,##0 5 -5 1 #,##0.00 5. - 5. .5 0% 500% -500% 50% 0.00% 500.00% -500.00% 50.00% Ejercicios 2.1 Realizar un programa que calcule el área de un círculo. Área = pi x radio2 Siendo pi = 3.141592 Utilizar los comandos InputBox y Print 2.2 Realizar un programa que pregunte el nombre y el año de nacimiento y dé como resultado la siguiente información: Hola nombre En el año 2020 tendrás nn años 2.3 Realizar un programa que evalúe el polinomio p = 3·x5- b·x3+c·x-7 y visualizar el resultado con el siguiente formato Para x = valor, 3x^5 – 5x^3 + 2x – 7 = p Imprimir p con 5

Informe de programacion

Embed Size (px)

Citation preview

Page 1: Informe de programacion

2. Entrada y Salida de Datos Entrada de datos InputBox(mensaje, [título][,por_omisión][,posx][,posy]) Por ejemplo: x = InputBox(“Dato:”) ‘x almacena el dato introducido por el teclado Salida de datos Objeto.Print lista de expresiones Por ejemplo: Print a + 5, a * b / 2, “Fin” Print x; y + 5; w Print n; m Print “LISTADO DE RESULTADOS” Posiciones de impresión Función Spc Spc(n) Inserta n espacios antes de imprimir la expresión especificada a continuación. Solo puede utilizarse con Print Por ejemplo: Dim n As String : Dim edad As Integer n=InputBox(“Nombre y apellidos”) Edad=InputBox(“Edad:”) Print Spc(12) ; “NOMBRE” ; Spc(16) ; “EDAD” Print “--------------------------------------------------------” Print n; Spc(11); edad Función Tab Tab(n) Indica la posición (columna) donde se desea que comience la impresión de una determinada expresión. Solo puede utilizarse con Print. Por ejemplo: Dim n As String : Dim edad As Integer n=InputBox(“Nombre y apellidos”) Edad=InputBox(“Edad:”) Print Tab(13) ; “NOMBRE” ; Tab(35) ; “EDAD” Print “--------------------------------------------------------” Print n; Tab(35); edad Dar formato a la salida Print Format(Entrada,Patrón) Por ejemplo: n=34.84894 Print Format(n,”0.000”) ‘Imprime el valor de n con tres decimales ‘El resultado será 34.850 Patrón Entrada: 5 Entrada: -5 Entrada: 0.5 Sin patrón 5 -5 0.5 0 5 -5 1 0.00 5.00 -5.00 0.50 #,##0 5 -5 1 #,##0.00 5. -5. .5 0% 500% -500% 50% 0.00% 500.00% -500.00% 50.00% Ejercicios 2.1 Realizar un programa que calcule el área de un círculo. Área = pi x radio2 Siendo pi = 3.141592 Utilizar los comandos InputBox y Print 2.2 Realizar un programa que pregunte el nombre y el año de nacimiento y dé como resultado la siguiente información: Hola nombre En el año 2020 tendrás nn años 2.3 Realizar un programa que evalúe el polinomio p = 3·x5-b·x3+c·x-7 y visualizar el resultado con el siguiente formato Para x = valor, 3x^5 – 5x^3 + 2x – 7 = p Imprimir p con 5 cifras decimales 2.4 Realizar el mismo programa anterior, pero empleando ahora coeficientes variables. a·x5-b·x3+c·x-7

Las cajas de mensajes o Message Box, tienen una función clara, que es la de mostrar una determinada información, aviso, o pregunta para que el usuario tenga conocimiento de ella y actúe.

 

Hay diferentes formas de mostrar información :

1) El aviso es sí, que tiene por objetivo mostrar una información de interés.

2) El aviso con espera de respuesta, que muestra una información esperando que el usuario seleccione una de las respuestas posibles para que el programa la trate.

 

Una caja de mensaje, puede ser por ejemplo, la instrucción MsgBox "Hola" .

Page 2: Informe de programacion

Por defecto, la caja de mensaje será similar a esta :

 

Debe darse cuenta de algunas cosas :

En primer lugar el mensaje, "Hola" que se escribe a continuación de la palabra MsgBox, también debe darse cuenta del botón Aceptar que tiene el Focus de la ventana activa y que sólo hay ese botón, y por último el título de la ventana.

 

Podemos modificar estos parámetros para alcanzar nuestros objetivos, por eso, vamos a escribir ahora este código : MsgBox "Hola", ,"Ejemplo" .

El resultado es :

 

Como podemos apreciar en el código, la caja de mensaje posee un título Ejemplo y el mensaje, pero es posible que deseemos escribir un mensaje en varias líneas con salto de párrafo. Nada tan fácil como este código por ejemplo : MsgBox "Hola" & vbCrLf & "Esto es un ejemplo.", , "Ejemplo".

El resultado es :

Page 3: Informe de programacion

 

 

Supongo que se habrá percatado de que entre el mensaje y el título de la ventana, hemos escrito dos comas, esto es porque entre las comas, debe ir un número que representará el icono a mostrar. Existen cuatro iconos diferentes además de la posibilidad de no mostrar ninguno. Los iconos son :

 

Estos iconos corresponden a los siguientes mensajes :

Mensaje crítico.

Mensaje de pregunta.

Mensaje exclamativo.

Mensaje de información.

 

Para mostrar el icono en cuestión o para que Visual Basic lo entienda, es necesario escribir lo siguiente :

Mensaje crítico. VbCritical ó 16

Mensaje de pregunta. VbQuestion ó 32

Mensaje exclamativo. VbExcalamqtion ó 48

Mensaje de información. VbInformation ó 64

 

Note que es lo mismo insertar VbCritical o 16.

 

Vamos a ver un ejemplo añadiendo un icono al último ejemplo :

MsgBox "Hola" & vbCrLf & "Esto es un ejemplo.", vbQuestion , "Ejemplo"

Page 4: Informe de programacion

El resultado es :

 

Ahora bien, es posible que queramos mostrar algún otro botón que o bien no sea el de Aceptar o que además del botón de Aceptar haya más botones. Para este propósito, tenemos los siguientes parámetros :

Aceptar vbOKOnly ó 0

Aceptar y Cancelar vbOKCancel ó 1

Anular, Reintentar, Ignorar vbAbortRetryIgnore ó 2

Sí, No y Cancelar vbYesNoCancel ó 3

Sí y No vbYesNo ó 4

Reintentar y Cancelar vbRetryCancel ó 5

Aplicación modal vbApplicationModal ó 0 (Es la caja de mensaje sin icono)

 

La forma de hacer esto es sumar al parámetro del icono que queremos mostrar el valor de los botones que deseamos que aparezcan.

Así por ejemplo :

MsgBox "Hola" & vbCrLf & "Esto es un ejemplo.", vbQuestion + vbYesNo , "Ejemplo"

El resultado es :

Page 5: Informe de programacion

 

Aún así, es posible que deseemos que el Focus lo adquiera otro un botón determinado. Por ejemplo, en este caso el Focus lo tiene el botón Sí, pero es posible que deseemos que lo tenga el botón No por ejemplo. Esto se consigue con los siguientes parámetros :

Primer botón predeterminado vbDefaultButton1 ó 0

Segundo botón predeterminado vbDefaultButton2 ó 256

Tercer botón predeterminado vbDefaultButton3 ó 512

 

Por ejemplo : MsgBox "Hola" & vbCrLf & "Esto es un ejemplo.", vbQuestion + vbYesNo + vbDefaultButton2, "Ejemplo"

El resultado es :

 

Si no se señala el botón predeterminado, Visual Basic seleccionará el primer botón.

En caso de seleccionar como predeterminado un botón que no existe, (por ejemplo el tercero), Visual Basic seleccionará el primero.

 

Ahora bien, si decidimos mostrar un mensaje esperando una respuesta, o queremos saber que botón ha pulsado el usuario, esto lo podemos conseguir mediante el siguiente código de respuestas :

Page 6: Informe de programacion

Aceptar vbOK ó 1

Cancelar vbCancel ó 2

Anular vbAbort ó 3

Reintentar vbRetry ó 4

Ignorar vbIgnore ó 5

Sí vbYes ó 6

No vbNo ó 7

 

Así por ejemplo, el siguiente código :

Dim Resp As Integer

Resp = MsgBox("Hola" & vbCrLf & "Esto es un ejemplo.", vbQuestion + vbYesNo + vbDefaultButton2, "Ejemplo")

If Resp = 6 Then

MsgBox "Ha pulsado SI"

Else

MsgBox "Ha pulsado NO"

End If

Tiene el resultado siguiente :

 

Page 7: Informe de programacion

 

 

Si pulsamos el botón Sí obtendremos una acción, y si pulsamos el otro botón otra acción.

 

Ahora bien, para elegir o seleccionar un evento o acción, el usuario debe saber combinar los códigos, sabiendo que un MsgBox posee la siguiente sintaxis principal:

MsgBox Mensaje, Botones, Título de la ventana

 

 

InputBox

 

El InputBox o caja de entrada es otra de las partes más utilizadas para la interacción del usuario con la aplicación. Es importante que el usuario interactúe con la aplicación para ser el protagonista de esta.

 

El InputBox nos permite sacar una caja donde el usuario pasará un parámetro, valor o dato para que el programa lo trate y lo ejecute.

 

El mensaje que quiere que aparezca se realiza de forma casi idéntica al MessageBox. Puede escribirse varias líneas de texto seguidas por la constante de Visual Basic VbCrLf o salto de línea o párrafo.

 

La sentencia es : Val = InputBox (Mensaje, Titulo, ValorPredeterminado)

Val almacenará el texto escrito por el usuario, que puede ser una cantida, cadena string, … etc.

Page 8: Informe de programacion

 

Por ejemplo :

Dim Val As String

Val = InputBox("Deme su nombre", "Ejemplo")

MsgBox "Su nombre es: " & Val

Tiene como resultado :

 

 

Ahora bien, podemos determinar un texto predeterminado a la caja de entrada, como por ejemplo :

Dim Val As String

Val = InputBox("Deme su nombre", "Ejemplo", "Mundo Visual")

MsgBox "Su nombre es: " & Val

Obtendremos como resultado :

Page 9: Informe de programacion

 

Es importante determinar que si el usuario elige el botón Cancelar, el programa devolverá una cadena de caracteres igual a 0, es decir, Val="".

 

La caja de entrada puede ser sin embargo más personalizada mediante dos parámetros como son la posición de la ventana de entrada de datos en la pantalla. Estos parámetros se ponen a continuación del ValorPredeterminado.

Por ejemplo :

Dim Val As String

Val = InputBox("Deme su nombre", "Ejemplo", "Mundo Visual", 1200, 1400)

Situará la ventana en el eje de las X a 1200 twips (posición horizontal) y la Y a 1400 twips (posición vertical).

 

 

Repaso : Hemos visto en este capítulo el uso de MsgBox, y InputBox, los cuales nos van a servir de gran utilidad en nuestros proyectos Visual Basic.

Manejo de operadores en VB  

Una formula es una sentencia que combina números, variables, operadores y palabras clave para crear un Nuevo valor. En este capítulo practicaremos los operadores matemáticos, es decir, los símbolos utilizados para enlazar las partes de una formula.

Operadores de VB

Operación matemática Orden de prioridad al evaluar

Page 10: Informe de programacion

+ Suma ( ) Los valores entre paréntesis se evalúan primero

- Resta ^* Multiplicación - La negación (creación de un número

negativo) es el tercero/ División */ Multiplicación y división\ División entera \ División entera

Mod Resto de la division entera Mod El resto^ Exponente (elevar a una

potencia)+ - Suma y resta

& Concatenación de cadenzas (combinación)

& Concatenador de cadenas

Los operadores de igual nivel se evalúan de izquierda a derecha, según aparecen en la expresión

Todas las operaciones en un solo programa.

Objetos

1 Label (Borra el Caption del Label1)

2 Textbox (Borra Text1 y Text2 dentro de las cajas)

5 Comando (Modifica la propiedad Caption)

Interfaz

 Cambia el nombre (Name) a los Command1, 2, 3, 4 y 5 por el el mismo que aparece en el Caption.

Al Label1 puedes cambiar la Propiedad BorderStyle a 1-Fixed Single

Programación

Multiplicar:

Private Sub Multiplicar_Click()

Page 11: Informe de programacion

 Label1 = Text1 * Text2

End Sub

Potencias:

Private Sub Potencias_Click()

 Label1 = Text1 ^ Text2

End Sub

Dividir:

Private Sub Dividir_Click()

 Label1 = Text1 / Text2

End Sub

Logaritmo:

Private Sub Logaritmo_Click()

 Label1 = Log(Text1) / Log(10#)

End Sub

Logaritmo:

Private Sub Logaritmo_Click()

 Label1 = Log(Text1) / Log(10#)

End Sub

LogBaseX:

Private Sub LogBaseX_Click()

 Label1 = LogaritmoX(Text1, Text2)

End Sub

General:

Public Function LogaritmoX(ByVal x, y As Integer) As Single

Page 12: Informe de programacion

 LogaritmoX = Log(x) / Log(y)

End Function

minicalculadora

Crea la siguiente interfaz:

Label1

Propiedad Valor

Nombre (Name) Label1

Font Arial, Negrita, tamaño 14

Caption (Vacío)

BorderStyle 1 – Fixed Single

Command1

Propiedad Valor

Nombre Command1

Font Arial, Negrita, tamaño 14

Caption +

Text1

Propiedad Valor

Page 13: Informe de programacion

Nombre Text1

Font Arial, Negrita, tamaño 14

Text (Vacío)

Text2

Propiedad Valor

Nombre Text2

Font Arial, Negrita, tamaño 14

Text (Vacío)

Programación

Entra el siguiente código en el objeto Command1 o +:

Guarda el proyecto y ejecútalo.

Reto

Crea el interfaz que te presento a continuación.

Modifica la propiedad Caption del Frame1 (Recuerda crear el Frame antes de los Comandos que van dentro) y de los Commands

Escribe el código para cada operador, para los botones Borrar todo y Salir.

Recuerda la fórmula del %. Por ejemplo, si se quiere sacar el 3% de 60 hay que hacer lo siguiente:

Page 14: Informe de programacion

(60 * 3) / 100

Su entorno de desarrollo es muy similar al de otros lenguajes e IDE's.

Se compone principalmente de una barra de herramientas y menús, que se pueden personalizar con prácticamente la totalidad de los comandos del IDE, a necesidad.

El espacio de trabajo incluye y muestra todas las ventanas del proyecto, las vistas del código de los módulos y objetos, y los controles con los que se compondrán las ventanas de la aplicación. Por defecto se dispone los siguientes controles:

o (PictureBox) Caja de Imágeneso (Label) Etiquetao (TextBox) Caja de textoo (Frame) Marcoo (CommandButton) Botón de comandoo (CheckBox) Casilla de verificacióno (OptionButton) Botón de opcióno (ComboBox) Lista desplegableo (ListBox) Listao (HScrollBar) Barra de desplazamiento horizontalo (VScrollBar) Barra de desplazamiento verticalo (Timer) Temporizadoro (DriveListBox) Lista de unidades de discoo (DirListBox) Lista de directorioso (FileListBox) Lista de archivoso (Shape) Figurao (Line) Líneao (Image) Imageno (Data) Conexión a origen de datoso (OLE) Contenedor de documentos embebidos compatibles con Object

Linking and Embedding

1. 6. Funciones incorporadas por Visual Basic2. FUNCIONES PARA MANEJO DE CADENAS DE CARACTERES Existen varias funciones útiles

para el manejo de cadenas de caracteres (Strings). Estas Funciones se utilizan para la evaluación, manipulación o conversión de cadenas de caracteres.

3. El operador Like permite comparar dos cadenas de caracteres. Si son iguales devuelve True y si no lo son, False. Téngase en cuenta que Like es un operador, no una función. Existe además el operador de concatenación & que puede ser utilizado con cadenas de caracteres. Se utiliza para poner una cadena a continuación de otra. Por ejemplo: str1 = quot;My first stringquot; ’Se inicializan los strings str2 = quot;My second stringquot; TextoFinal = str1 & str2 ’TextoFinal vale quot;My first stringMy ‘ second stringquot; El operador quot;+quot; opera de forma análoga, pero su uso se desaconseja pues en ciertas ocasiones convierte las cadenas en números y realiza la suma.

4. FUNCIONES MATEMÁTICAS Al igual que las funciones vistas para el manejo de cadenas de caracteres, existe una serie de funciones matemáticas las cuales permiten realizar cálculos dentro de un programa de Visual Basic.

Page 15: Informe de programacion

5. Ejemplos: MyNumber = Abs(50.3) ’Devuelve 50.3. MyNumber = Abs(-50.3) ’Devuelve 50.3. MyAngle = 1.3 'El ángulo debe estar en radianes. MySecant = 1 / Cos(MyAngle) 'Calcula la secante. MySqr = Sqr(4) 'Devuelve 2. MySqr = Sqr(23) 'Devuelve 4.79583152331272. MyVar1 = 12: MyVar2 = -2.4: MyVar3 = 0 'Declaración de las variables MySign = Sgn(MyVar1) 'Devuelve 1. MySign = Sgn(MyVar2) 'Devuelve -1. MySign = Sgn(MyVar3) 'Devuelve 0.

6. Con el fin de completar estas funciones, se ofrece a continuación otras funciones derivadas de las primeras. Se podría programar dichas funciones en un fichero *.bas y así poderlas utilizar posteriormente en cualquier programa. Dichas funciones se muestran en la Tabla

7. Ejercicios adicionales 6.1 Escribir un programa que de como resultado el número de dígitos de un número entero introducido por el teclado. 6.2 Escribir un programa que permita visualizar un número cualquiera de longitud no mayor a 16 dígitos, sustituyendo los espacios en blanco a la izquierda por asteriscos. Por ejemplo: para una entrada: 123 la salida será: *************123 6.3 Escribir un programa que permita ingresar una palabra, y posteriormente imprimir la palabra con las letras en orden inverso. Por ejemplo: Se ingresa: INGENIERIA Se imprime: AIREINEGNI

8. 6.3 Realizar un programa que permita obtener n números diferentes al azar, comprendidos entre otros dos a y b. 6.4 Obtener la media aritmética de la siguiente función, evaluándola para “n” valores de “x” elegidos al azar comprendidos entre 1 y 25. ⎛1⎞ f ( x ) = (sen ( x ) ) + ln⎜ ⎟·e − x 2 ⎝x⎠

9. 6.5 Escribir un programa que lea una cadena de n caracteres e imprima el resultado que se obtiene cada vez que se realice una rotación de un carácter a la derecha sobre dicha cadena. El proceso finalizará cuando se haya obtenido nuevamente la cadena de caracteres original. Por ejemplo: HOLA AHOL LAHO OLAH HOLA

10. Funciones de texto11.12.

13.Asc(string)

Devuelve el código numérico (ANSI) del primer carácter de la cadena string, que por lo menos debe tener uno. En caso contrario se produce un error. Por ejemplo para obtener el código de la letra A:

14. Código:15. <%

     Response.Write( Asc("A") )%>

16.Y este sería el resultado:

17. Código:18. 65

19.20.

21.Chr(código)

Page 16: Informe de programacion

Funciona justo al contrario que Asc(): su argumento es el código numérico (ANSI) de un carácter. Por ejemplo para obtener la letra A:

22. Código:23. <%

     Response.Write( Chr(65) )%>

24.

Y este sería el resultado:25. Código:26. A

27.

Respecto a estas dos funciones, conviene recordar que los códigos comprendidos entre 0 y 32 no son visibles en pantalla ni pueden imprimirse, ya que son caracteres de control. Por ejemplo Chr(10) es un avance de línea.

28. Código:29. String(cuantos, cod_caracter)

30.

Devuelve una cadena compuesta por el/los caracteres cuyo código indica cod_caracter y de la longitud indicada por cuantos. Por ejemplo:

31. Código:32. <%

     Response.Write( String(5, 65) )%>

33.

Y este sería el resultado:34. Código:35. AAAAA

36.37.

38.Space(cuantos)

Es parecida a la anterior, pero solamente es capaz de generar cadenas compuestas por espacios en blanco, de la longitud indicada por cuantos. Esto mismo se puede hacer también con la función String().

39. Código:40. Cstr(valor)

41.

Devuelve un string conteniendo valor. Es decir, que convierte cualquier tipo de dato contenido en valor al tipo string. Hay algunas particularidades que conviene conocer en función del tipo de dato recibido por valor. Si recibe

42. Código:43.           Booleano: devuelve un string con la palabra "False" o

"True"           Date: devuelve un string con una fecha en el formato corto: "30/12/2002"           Null: Error

Page 17: Informe de programacion

          Error: devuelve un string con la palabra "Error" seguida del número del error           Numérico: devuelve un string con el número aplicando la configuración regional (coma decimal, etc.)

44.45.

46.InStr([Inicio, ]Cadena, Subcadena[, Comparación])

Devuelve un número que indica la posición del primer carácter de una subcadena dentro de otra, obviamente de mayor longitud. cadena. Sus argumentos son:

Inicio Opcional. Es un número que indica en qué posición, dentro de Cadena, se comienza a buscar Subcadena. Si se omite, por defecto se comienza por la posición 1.Cadena Obligatorio. Es la cadena principal dentro de la cual hay que buscar Subcadena. Debe tener el tipo de dato string.Subcadena Obligatorio. Es la cadena con la muestra de lo que se va a buscar dentro de Cadena. Debe tener el tipo de dato string.Comparación Opcional. Es es un número que indica de qué forma se van a evaluar la subcadena buscada. Puede escribirse el número o la constante intrínseca equivalente. Puede tener dos valores:

47. Código:48.     * 0 Comparación binaria. Por defecto (vbBinaryCompare)

    * 1 Comparación textual (vbTextCompare)

49.

Utilizar la Comparación binaria o textual permite diferenciar, por ejemplo, mayúsculas de minúsculas, que por defecto VBScript considera iguales. Al ser 0 el valor por defecto de Comparar, Instr() distingue entre mayúsculas y minúsculas

He aquí un ejemplo:50. Código:51. <%

  Dim Cadena    Cadena = "Esto es una prueba de buscar subcadenas"

  Response.Write(Instr(1, Cadena, "prueba")%>

52.

Y este sería el resultado:53. Código:54. 13

55.

Este es el funcionamiento ideal, pero pueden ocurrir cosas inesperadas en el valor de las cadenas. Entonces, la función se comportará de la siguiente manera: Si la longitud de Cadena es 0, Instr() devuelve 0. Si el valor de Inicio es mayor que la longitud de Cadena también devolverá 0. Si la longitud de Subcadena es 0, devolverá el valor de Inicio. Si Subcadena no es encontrada dentro de Cadena, devolverá 0. Y por último, si Cadena o Subcadena contienen Null devolverá Null.

Page 18: Informe de programacion

56.

57.InStrRev(Cadena, Subcadena[, Inicio[, Comparar]])

Como habrás visto, tiene una pequeña diferencia de sintaxis con la anterior, aunque en todo lo demás funciona igual, excepto en que en lugar de comenzar la búsqueda por defecto en la posición 1 de Cadena lo hace comenzando por la última posición de la misma, o lo que es equivalente, por la posición -1.

58.

59.LCase(Cadena)

Devuelve una cadena cuyas letras mayúsculas han sido convertidas a minúsculas. por ejemplo:60. Código:61. <%

  Dim Cadena  Cadena = "Esto es una prueba DE MAYÚSCULAS y Números: 1234"

  Response.Write(LCase(Cadena)%>

62.

Y este sería el resultado:63. Código:64. esto es una prueba de mayúsculas y números: 1234

65.66.

67.UCase(Cadena)

Devuelve una cadena cuyas letras minúsculas han sido convertidas a mayúsculas. Es decir, justo lo contrario que la anterior función LCase()

68.

69.Left(Cadena, Cuantos)

Devuelve una cadena conteniendo el número de caracteres especificado por Cuantos del lado izquierdo de Cadena. Por ejemplo:

70. Código:71. <%

  Dim Cadena  Cadena = "ABCDEFGHIJK"

  Response.Write(Left(Cadena, 3)%>

72.Y este sería el resultado:

Page 19: Informe de programacion

73. Código:74. ABC

75.76.

77.Right(Cadena, Cuantos)

Devuelve una cadena conteniendo el número de caracteres especificado por Cuantos del lado derecho de Cadena. Por ejemplo:

78. Código:79. <%

  Dim Cadena  Cadena = "ABCDEFGHIJK"

  Response.Write(Right(Cadena, 3)%>

80.

Y este sería el resultado:81. Código:82. IJK

83.84.

85.Len(Cadena)

Devuelve un número que indica cuantos caracteres contiene Cadena. Por ejemplo:86. Código:87. <%

  Dim Cadena  Cadena = "ABCDEFGHIJK"

  Response.Write(Len(Cadena)%>

88.

Y este sería el resultado:89. Código:90. 11

91.

Si en lugar de una cadena el argumento es un número, Len() devolverá el número de dígitos que forman el número propiamente dicho. Por ejemplo:

92. Código:93. <%

  Dim Valor  Valor = 2003

  Response.Write(Len(Valor)%>

Page 20: Informe de programacion

94.

Y este sería el resultado:95. Código:96. 4

97.98.

99.Mid(Cadena, Inicio[, Cuantos])

Devuelve una cadena conteniendo el número de caracteres indicado por Cuantos extraida de Cadena y comenzando en la posición indicada por Inicio. Por ejemplo:

100. Código:101. <%

  Dim cadena  Cadena = "ABCDEFGHIJK"

  Response.Write(Mid(Cadena, 2, 3))%>

102.

Y este sería el resultado:103. Código:104. BCD

105.106.

107.LTrim(Cadena)   RTrim(Cadena)   Trim(Cadena)

Estas tres funciones sirven para eliminar los espacios en blanco que haya en el lado izquierdo, derecho o en ambos de Cadena. Los espacios que contenga Cadena en el interior no se verán afectados. Por ejemplo:

108. Código:109. <%

  Dim cadena  Cadena = " ABCD EFGH IJK "

  Response.Write(Chr(34) & LTrim(Cadena) & Chr(34) )  Response.Write(Chr(34) & RTrim(Cadena) & Chr(34))  Response.Write(Chr(34) & Trim(Cadena) & Chr(34))%>

110.

Y este sería el resultado:111. Código:112. "ABCD EFGH IJK "

" ABCD EFGH IJK""ABCD EFGH IJK"

113.

Page 21: Informe de programacion

114.

115.Replace(Cadena, Busca, Cambio[, Inicio, [Cuantos, [Comparar]]])

Localiza el contenido de Busca dentro de Cadena y lo sustituye (Replace) por el valor de Cambio. Sus argumentos son:

Cadena Obligatorio. Es la cadena principal dentro de la cual hay que realizar los cambios. Debe tener el tipo de dato string.Busca Obligatorio. Es la subcadena que indica lo que hay que buscar dentro de Cadena para cambiarlo. También debe tener el tipo de dato string.Cambio Obligatorio. Es la subcadena que sustituirá a Busca. Al igual que los dos anteriores, debe tener el tipo de dato string.

Inicio Opcional. Es un número que indica en qué posición, dentro de Cadena, se comienza a buscar el valor de Busca. Si se omite, por defecto se comienza por la posición 1.Cuantos Opcional. Indica cuantas sustituciones, de todas las posibles, se quiere realizar. El valor por defecto es -1, que significa todas.Comparar Opcional. Es es un número que indica de qué forma se va a evaluar la subcadena buscada. Puede escribirse el número o la constante intrínseca equivalente. Puede tener dos valores:

116. Código:117.     * 0 Comparación binaria. Por defecto (vbBinaryCompare)

    * 1 Comparación textual (vbTextCompare)

118.

Utilizar la Comparación binaria o textual permite diferenciar, por ejemplo, mayúsculas de minúsculas, que por defecto VBScript considera iguales. Al ser 0 el valor por defecto de Comparar, Replace() distingue entre mayúsculas y minúsculas

He aquí un ejemplo:119. Código:120. <%

  Dim Cadena    Cadena = "Esto es una prueba de buscar subcadenas y cambiarlas"

  Response.Write(Replace(Cadena, "prueba", "muestra")%>

121.

Y este sería el resultado:122. Código:123. Esto es una muestra de buscar subcadenas y cambiarlas

124.Hay que tener en cuenta algunas cosas: Si la longitud de Cadena es 0, Replace() devuelve lo mismo. Se producirá un error si Cadena es Null. Otra cosa importante es que si inicio es mayor que 0, la cadena resultante será la comprendida entre el punto señalado por Inicio y el fin de Cadena, es decir que será menos larga que el original.

125.

126.StrComp(Cadena1, Cadena2[, Comparar])

Page 22: Informe de programacion

Compara Cadena1 con Cadena2 y devuelve un valor numérico para indicar el resultado. El modo de comparar las dos cadenas viene indicado por Comparar, que es opcional. Puede escribirse el número o la constante intrínseca equivalente para definir Comparar. Puede tener dos valores:

127. Código:128.     * 0 Comparación binaria. Por defecto (vbBinaryCompare)

    * 1 Comparación textual (vbTextCompare)

129.

Utilizar la Comparación binaria o textual permite diferenciar, por ejemplo, mayúsculas de minúsculas, que por defecto VBScript considera iguales. Al ser 0 el valor por defecto de Comparar, StrComp() distingue entre mayúsculas y minúsculas

Los valores obtenidos con StrComp() son:130. Código:131.     * -1 si cadena1 es menor que cadena2

    * 0 si cadena1 es igual que cadena2    * 1 si cadena1 es mayor que cadena2    * Null si cadena1 o cadena2 contienen Null

132.http://foro.elhacker.net/scripting/vbscript_funciones_de_texto-t269001.0.html;msg1318471#ixzz1NC3KPSAL

133. Visual Basic - Guía del Estudiante Cap. 1134. INTRODUCCION Antecedentes históricos.135. ___________________________________136. El lenguaje de programación BASIC (Beginner's All purpose Symbolic

Instruction Code ) nació en el año 1964 como una herramienta destinado a principiantes, buscando una forma sencilla de realizar programas, empleando un lenguaje casi igual al usado en la vida ordinaria ( en inglés), y con instrucciones muy sencillas y escasas. Teniendo en cuenta el año de su nacimiento, este lenguaje cubría casi todas las necesidades para la ejecución de programas. Téngase en cuenta que las máquinas existentes en aquella época estaban estrenando los transistores como elementos de conmutación, los ciclos de trabajo llegaban a la impensable cifra de 10.000 por segundo y la memoria no pasaba de unos pocos k´s en toroides de ferrita.

137. La evolución del BASIC por los años 70 fue escasa, dado el auge que tomaron en aquella época lenguajes de alto nivel como el FORTRAN y el COBOL. En 1978 se definió una norma para unificar los Basics existentes creándose la normativa BASIC STANDARD

138. Con la aparición de los primeros ordenadores personales, dedicados comercialmente al usuario particular, allá por la primera mitad de los ochenta, el BASIC resurgió como lenguaje de programación pensado para principiantes, y muchos de estos pequeños ordenadores domésticos lo usaban como único sistema operativo (Sinclair, Spectrum, Amstrad)

139. Con la popularización del PC, salieron varias versiones del BASIC que funcionaban en este tipo de ordenadores (Versiones BASICA, GW-BASIC), pero todas estas versiones del BASIC no hicieron otra cosa que terminar de rematar este lenguaje. Los programadores profesionales no llegaron a utilizarlo, habida cuenta de las desventajas de este lenguaje respecto a otras herramientas (PASCAL, C,

Page 23: Informe de programacion

CLIPPER). El BASIC con estas versiones para PC llegó incluso a perder crédito entre los profesionales de la informática.

140. Las razones para ello eran obvias:141. - No era un lenguaje estructurado.142. - No existían herramientas de compilación fiables.143. - No disponía de herramientas de intercambio de información.144. - No tenía librerías.145. - No se podía acceder al interior de la máquina.146. - Un largo etcétera de desventajas respecto a otros lenguajes de

programación.147. Tal fue ese abandono por parte de los usuarios, que la aparición del Quick-

BASIC de Microsoft, una versión ya potente del BASIC, que corregía casi todos los defectos de las versiones pasó prácticamente inadvertida, a no ser porque las últimas versiones del sistema operativo MS-DOS incluían una versión de Quick-BASIC algo recortada (Q-Basic) como un producto mas dentro de la amplia gama de ficheros ejecutables que acompañan al sistema operativo, y aprovecha de él el editor de textos (Cada vez que se llama al EDIT estamos corriendo el editor del Q-Basic).

148. Esta versión del popular BASIC ya es un lenguaje estructurado, lo que permite crear programas modularmente, mediante subrutinas y módulos, capaz de crear programas ya competitivos con otros lenguajes de alto nivel. Sin embargo llegaba tarde, pues los entornos MS-DOS estaban ya superados por el entorno gráfico Windows.

149. Sin embargo algo había en el BASIC que tentaba a superarse: su gran sencillez de manejo. Si a esto se le añade el entorno gráfico Windows, el aprovechamiento al máximo de las posibilidades de Windows en cuanto a intercambio de información, de sus librerías, de sus drivers y controladores, manejo de bases de datos, etc. el producto resultante puede ser algo que satisfaga todas las necesidades de programación en el entorno Windows. La suma de todas estas cosas es VISUAL - BASIC. Esta herramienta conserva del BASIC de los años 80 únicamente su nombre y su sencillez, y tras su lanzamiento al mercado, la aceptación a nivel profesional hizo borrar por fin el "mal nombre" asociado a la palabra BASIC.

150. Actualmente se está comercializando la versión 5.0 de este producto. Desde su salida al mercado, cada versión supera y mejora la anterior. Dados los buenos resultados a nivel profesional de este producto, y el apoyo prestado por el fabricante para la formación de programadores, Visual-Basic se ha convertido en la primera herramienta de desarrollo de aplicaciones en entorno Windows.

151. Es obligado decir sin embargo, que sigue siendo BASIC. No se pueden comparar sus prestaciones con otros lenguajes cuando deseamos llegar al fondo de la máquina y controlar uno a uno sus registros. No es ese el fin perseguido con VB y si es necesario llegar a esas precisiones será necesario utilizar otro lenguaje que permita bajar el nivel de programación. (Visual-C). o realizar librerías (DLLs) que lo hagan. En la mayor parte de las aplicaciones, las herramientas aportadas por VB son mas que suficiente para lograr un programa fácil de realizar y de altas prestaciones.

152. Características Generales de Visual-Basic

Page 24: Informe de programacion

153. Visual-Basic es una herramienta de diseño de aplicaciones para Windows, en la que estas se desarrollan en una gran parte a partir del diseño de una interface gráfica. En una aplicación Visual - Basic, el programa está formado por una parte de código puro, y otras partes asociadas a los objetos que forman la interface gráfica.

154. Es por tanto un termino medio entre la programación tradicional, formada por una sucesión lineal de código estructurado, y la programación orientada a objetos. Combina ambas tendencias. Ya que no podemos decir que VB pertenezca por completo a uno de esos dos tipos de programación, debemos inventar una palabra que la defina : PROGRAMACION VISUAL.

155. La creación de un programa bajo Visual Basic lleva los siguientes pasos:156. - Creación de un interface de usuario. Este interface será la principal vía de

comunicación hombre máquina, tanto para salida de datos como para entrada. Será necesario partir de una ventana - Formulario - a la que le iremos añadiendo los controles necesarios.

157. - Definición de las propiedades de los controles - Objetos - que hayamos colocado en ese formulario. Estas propiedades determinarán la forma estática de los controles, es decir, como son los controles y para qué sirven.

158. - Generación del código asociado a los eventos que ocurran a estos objetos. A la respuesta a estos eventos (click, doble click, una tecla pulsada, etc.) le llamamos Procedimiento, y deberá generarse de acuerdo a las necesidades del programa.

159. - Generación del código del programa. Un programa puede hacerse solamente con la programación de los distintos procedimientos que acompañan a cada objeto. Sin embargo, VB ofrece la posibilidad de establecer un código de programa separado de estos eventos. Este código puede introducirse en unos bloques llamados Módulos, en otros bloques llamados Funciones, y otros llamados Procedimientos. Estos Procedimientos no responden a un evento acaecido a un objeto, sino que responden a un evento producido durante la ejecución del programa.

160. No es necesario entender de momento lo anterior. Visual Basic introduce un concepto nuevo de programación, y es necesario cambiar hasta el argot del programador. Posiblemente se le habrán acumulado demasiados términos de una sola vez. Es normal. A poco que siga leyendo verá las cosas mas claras cuando se explique una por una.

161. VARIABLES. DEFINICION Y ENTORNO162. Basic, desde siempre, al contrario de otros sistemas de programación, no

exigió la definición previa de una variable. Una variable, como Vd. seguro que conoce, es un nombre que en el programa le asignamos a un dato. Ese dato podrá cambiar. Piense por ejemplo, en un programa consistente en la toma de datos de los alumnos de un centro escolar. Existirán varias variables para poder introducir los datos de los alumnos. Estas variables pueden tener nombre tales como:

163. Nombre164. Apellido1165. Apellido2166. Dirección167. Teléfono168. DNI

Page 25: Informe de programacion

169. La variable Nombre tomará valores distintos según vayamos introduciendo los datos de los distintos alumnos. Es posible, que a lo largo de la ejecución del programa, esta variable Nombre valga:

170. José171. Pedro172. María173. Luis174. Espero que su intuición o conocimiento anterior le lleve a conocer el

concepto de variable. Mas adelante lo verá mas claro.175. Decíamos que Basic no exige la definición previa de las variables. Otras

herramientas exigen que se haga así. Por lo tanto es normal encontrar, en otros sistemas de programación, que un programa comienza de la siguiente forma:

176. Declare Nombre As String Le dice que Nombre es una sucesión de letras177. Declare Apellido1 As String178. Declare Apellido2 As String179. Declare Dirección As String180. Declare Teléfono As String Le dice que Teléfono es una sucesión de letras 181. Declare DNI As Número Le dice que DNI es un número182. Mediante estas declaraciones, el programa sabe de que tipo de dato se trata y

por tanto cómo debe trabajar con él. En otros sistemas de programación distintos de Basic, es necesario realizar esta declaración antes de introducir una variable.

183. Basic permite que no se declaren. Cuando a lo largo del programa le introducimos una variable nueva, asume que es una variable y que el tipo es el adecuado para el valor que le estamos introduciendo en ese momento.

184. Por ejemplo, si Basic encuentra estas instrucciones185. DNI=50000000186. Nombre ="Pedro"187. Teléfono = "1234567"188. entiende que DNI, Nombre y Teléfono son variables, que DNI es un número

(No hemos metido su valor entre comillas), y que Nombre y Teléfono son sucesiones de caracteres alfanuméricos (su valor está entre comillas)

189. Esta particularidad de no necesitar declarar las variables hace que sea sencillo introducir una variable nueva. Sin embargo entraña un gran peligro. Imagínese que en un paso posterior del programa, le mandamos escribir esos tres datos anteriores con la instrucción PRINT

190. Print DNI191. Print Nombre192. Print Telwfono193. Habrá observado en tercer lugar la palabra Telwfono, que por error ha

introducido el programador. Basic interpreta que Telwfono es una variable e irá a leer en memoria el valor que tiene. No tendrá ningún valor. Por lo tanto no escribirá nada y encima no dará ningún aviso de que se ha cometido un error. Nada es gratis en esta vida, y la facilidad para introducir variables se paga con la posibilidad de un error.

194. Basic ha pensado en ese problema, y se puede solucionar con esta que será la primera instrucción BASIC que vamos a estudiar:

195. OPTION EXPLICIT

Page 26: Informe de programacion

196. Obliga a declarar previamente las variables que se vayan a usar. De no haberla declarado antes de usarla, el programa dará una comunicación de error.

197. TIPOS DE VARIABLES198. Las variables pueden ser de los siguientes tipos: (El número indicado en

segundo lugar indica el número de Bytes que ocupa en memoria.)199. Booleana (2) Admite los valores 0 y 1, o True (verdadero) y False (falso)200. Byte (1) Números enteros, en el rango de 0 a 255201. Integer (2) Números enteros en el rango de -32768 a 32767202. Long (4) Números enteros en el rango de -2147483648 a 2147483647203. Single (4) Punto flotante, simple precisión204. Doble (8) Punto flotante, doble precisión.205. Currency (8) Entero, con punto decimal fijo (Típico de monedas)206. String (*) Cadenas alfanuméricas de longitud variable o fija207. Date (8) Fechas208. Objet (4) Referencia a objetos209. Variant (**) Otros tipos de datos210. (*) Una variable tipo String ocupa el mismo número de bytes que caracteres

tenga la cadena.211. (**) Una variable tipo Variant ocupa 16 bytes si se trata de un número y 22

bytes + longitud de la cadena si se trata de un dato tipo cadena de caracteres.212. Existen también variables definidas por el usuario (Ya verá la sentencia

Type). En este tipo de variables se pueden introducir muchos datos de distinto tipo. Los bytes necesarios para almacenar esa variable dependerá de los datos que se hayan definido.

213. Dentro de las variables Objet (variables que se refieren a objetos) existe una gran variedad que a estas alturas del curso no debemos complicarnos con ellas. Pero para adelantar algo, veremos que una variable puede ser del tipo Form - Formulario - , tipo Picture, etc. etc.

214. Cada tipo de variable ocupa unos determinados bytes. Si no se define una variable, VB toma como tipo por defecto para la variable el tipo Variant. Este tipo ocupa mas bytes que, por ejemplo, un integer. Si el tipo de dato que vamos a introducir en una variable es un integer, y no la hemos declarado como tal, VB asumirá para esa variable que es del tipo Variant, lo que le llevará a gastar mas bytes de memoria (16) que los que necesitaría (2) si la hubiésemos declarado previamente. Si esa variable va a estar en el rango de 0 a 255, y no declaramos previamente que la variable va a se del tipo Byte, o la declaramos como integer, p. e., estamos desperdiciando memoria RAM y posiblemente, retardando la ejecución del programa. Lo mismo podemos decir del resto de las variables, y lo importante que es definirlas y definirlas bien.

215. NOTA. Observe en la lista anterior que un dato Booleano ocupa 2 Bytes, mientras que un dato tipo Byte ocupa un byte. En muchas ocasiones declaramos variables tipo Boolean con la intención de que ocupen menos espacio. Paradoja del VB. Si la declaramos como Byte ocupamos menos espacio en memoria. Declarar una variable como Boolean tiene también sus ventajas (escribirá menos código por lo general cuando necesite leer o escribir una variable tipo Boolean), pero tenga presente esta observación respecto a los datos Boolean.

Page 27: Informe de programacion

216. Puede declarar el tipo de la variable mediante un carácter después del nombre de la variable. Esta técnica, obligatoria en Quick-Basic, está en desuso en VB. No es recomendable definir el tipo de esta forma, pues existe un serio peligro de error. De cualquier forma, eso es potestativo del programador y de sus costumbres.

217. Los caracteres que definen cada tipo de variable son:218. % Integer & Long ! Single219. # Double @ Currency $ String220. Ejemplos Prácticos de declaración de variables221. En Visual Basic, cuando declaramos una variable como String (Cadena de

caracteres), no es necesario declarar su longitud. VB aceptará cualquier número de caracteres. Si desea evitar que se puedan introducir más de un determinado número de caracteres, debe declarar su número. Por ejemplo :

222. Dim Var1 as String Var1 puede tener cualquier número de caracteres223. Dim Var2 as String * 15 Var2 puede tener un máximo de 15 caracteres.224. En este segundo caso, si se introduce como Var2 una cadena de caracteres

con mas de 15 caracteres, Var2 tomará solamente los 15 primeros. Visual basic no presenta ningún aviso de que esa variable ha omitido los caracteres que han sobrepasado la cifra de 15. Si desea que el usuario conozca esa circunstancia, debe introducir el código oportuno para producir el aviso.

225. La declaración de variables tipo String con número de caracteres predefinido presenta también inconvenientes a la hora de tratar esa cadena de caracteres con sentencias tales como Mid, Left y Right, o a la hora de añadir una cadena a otra. La experiencia nos indica que NO merece la pena declarar variables tipo String con el número de caracteres prefijado.

226. En una gran parte de los casos una variable que se compone de números debe declararse como una variable de cadena de caracteres (String), y no como numérica. Cuando pensamos por ejemplo en un número de DNI, compuesto por 7 u 8 cifras, un código postal, el número de una calle, el piso de un edificio, parecen invitar a que la variable que los contenga sea una variable de tipo numérico (Byte, Integer, Long, ...). Estas variables, aunque su contenido sean números, siempre se deben declarar como String, ya que se tratan en realidad de cadenas de caracteres, aunque estos sean números. Para aclarar mas estas ideas, piense en el número del DNI con la letra del NIF incluido, o que el lugar del DNI se deba rellenar con el número del permiso de residencia, (lleva letras). Piense en el código postal de una provincia que comienza por 0 ( 08XXX = Barcelona ) . Si la variable que va a contener ese código postal se declara como numérica, el cero de la izquierda lo desprecia, por lo que ese código postal quedaría reducido al 8XXX, número de 4 cifras que el cartero nunca reconocería como un código postal, que necesariamente ha de tener 5 cifras. Para terminar, piense la forma de introducir en una variable numérica el número 32Bis de una calle o el piso S2 de un edificio. O piense en una variable que va a contener un código de un producto. Ese código siempre va a ser un número, por ejemplo de 9 cifras. ¿Ha pensado como trataría el ordenador una variable numérica que contiene el código 000100123 ?. El resultado sería que convertiría ese código en la cifra 100123, y Vd. deberá buscarse la vida para añadir los ceros iniciales a la hora de sacarlo a una impresora, por ejemplo.

Page 28: Informe de programacion

227. En todos los casos anteriores, el número no representa una cantidad numérica, sino un nombre. Lo que ocurre es que ese nombre contiene solamente números.

228. ¿Qué variables debemos declarar entonces como numéricas ? La respuesta es bien sencilla : Aquellas que van a contener datos con lo que vamos a realizar operaciones matemáticas.

229. Las variables booleanas (True/False) pueden en muchos casos sustituirse por una variable del tipo Byte. Si ese datos True / False se va a introducir en una base de datos o en fichero en el disco, puede ser mas prudente poner 0 en vez de False y 1 en vez de True.

230. Una variable byte ocupa muy poco, simplemente 1 byte como su nombre indica. Pero no puede contener números mayores de 255 ni números negativos.

231. Cada vez que declare una variable numérica piense en los valores que puede tener, sobre todo cuando esa variable va a ser el resultado de una operación matemática. Recuerde el escaso margen de una variable tipo Integer ( de -32768 a 32767)

232. Si la aplicación va a tratar moneda, piense en la forma de expresar los números decimales y el número de ellos permitidos, así como el redondeo. La variable correcta para este caso es Currency, pero Currency le añade automáticamente el tipo de moneda de cada país (Pts. Para España) lo que con frecuencia es un engorro. Los datos del tipo de moneda los toma del sistema operativo del ordenador, por lo que no se extrañe si le expresa el número de pesetas en dólares. Cambie el país en su S. O.

233. Ambito de las variables.234. Denominamos ámbito de una variable a las partes del programa donde esa

variable está declarada. Para entenderlo mejor, veamos someramente la forma de un programa desarrollado en VB.

235. Un programa VB tiene uno o varios formularios. Cada formulario tiene varios controles. Tanto el formulario como cada uno de sus controles tienen una parte del programa, justamente la parte relacionada con cada uno de los eventos que pueden suceder bien al formulario o a los controles. A estas partes las habíamos llamado Procedimientos. Podemos tener procedimientos que no estén relacionados con ningún evento ocurrido al formulario o a sus controles. (Los Procedimientos que iremos insertando a lo largo de la aplicación)

236. Aparte de formularios y controles, un programa puede tener Módulos, y en cada uno de los módulos podemos insertar cuantos Procedimientos y Funciones queramos. La estructura de un programa VB puede ser de la siguiente forma:

237. Formulario1 Formulario2 Formulario3 Módulo1 Modulo2238. Declaraciones Declaraciones Declaraciones Declaraciones Declaraciones239. Proc. A1 Proc.B1 Proc.C1 Proc.D1 Proc.E1240. Proc. A2 Proc.B2 Proc.C2 Proc.D2 Proc.E2241. Proc. A3 Proc.B3 Proc.C3 Proc.D3 FunciónE1242. Proc. A4 Proc.B4 Proc.C4 Proc.D4 FunciónE2 243. Proc. A5 Proc.BB1 Proc.CC1 FunciónE3244. Proc. AA1 Proc.BB2 Proc.CC2 FunciónE4245. Proc. AA2 Proc.B33 Proc.CC3 FunciónE5246. Proc. AA3 Proc.CC4 FunciónE6

Page 29: Informe de programacion

247. Si se declara una variable dentro de un procedimiento o Función, esa variable "NO SALE" del Procedimiento o Función donde se declaró. El procedimiento puede estar en un Formulario (Cualquier procedimiento de un control o un procedimiento creado por nosotros) o en un Módulo (En este caso, el procedimiento solo puede ser creado por nosotros)

248. En un Formulario, una variable puede declararse de dos formas : Privada o Pública. Para declarar una variable a nivel de formulario debe hacerse en la sección de declaraciones, que está la ventana de código Objeto = General, Proc. = Declaraciones. Si se declara Privada, esa variable se puede mover por todo el formulario, (es decir, por todos los procedimientos de todos los controles del formulario y por los Procedimientos que pudiésemos insertar en ese formulario), pero no sale de dicho formulario. Si se declara como Pública, esa variable puede moverse por todo el formulario, de la misma forma que lo haría declarada como Privada, y además puede ser usada desde otro Formulario o Módulo, citándola con el nombre del Formulario, seguido del nombre de la variable (Formulario.Variable)

249. En un Módulo una variable puede declararse como Privada, con lo que no saldrá de ese Módulo, o Pública, pudiendo en este caso usarse en todo el programa. Cuando se declara una variable como pública en un Módulo, basta referirse a ella por su nombre, sin citar el nombre del Módulo donde se declaró.

250. En VB es posible declarar varias veces las variables, es decir, pueden declararse a nivel de formulario, en su apartado de declaraciones, y esa variable conservará su valor en todas las partes de ese formulario. Sin embargo, si se declara una variable con el mismo nombre a un nivel inferior, por ejemplo al principio de un procedimiento, esa variable será una variable distinta a la anterior, aunque tenga el mismo nombre, a al declararla en un Procedimiento, solamente será válida en ese Procedimiento. Una vez que hayamos salido de ese procedimiento, la variable con ese nombre volverá a ser la declarada en el Formulario. En realidad, lo que tenemos son dos variables distintas, pero con el mismo nombre, una declarada para todo el formulario excepto para el procedimiento donde se volvió a declarar, y otra para ese procedimiento concreto.

251. NOTA.- No es recomendable declarar una variable a dos niveles. Es mucho mejor utilizar otro nombre para esa variable dentro del procedimiento donde se le declararía por segunda vez. A esta nota cabe exceptuar cuando declaramos variables para una operación tipo contador

252. For I = 1 To N253. Esa variable I es práctico declararla con el mismo nombre en cada

Procedimiento donde se use.254. Tipos de declaración de variables.255. Sentencia DIM Es la forma mas común de declarar una variable como256. Privada. Puede emplearse en un Procedimiento, Función, Formulario o

Módulo. La sintaxis es de la siguiente forma:257. Dim nombrevariable As Integer(o el tipo que sea)258. Declarando una variable con la sentencia DIM, en un formulario, Función,

procedimiento o módulo, el entorno de la variable será el explicado anteriormente para una variable declarada como Privada. Es decir, esa variable no sale del formulario, procedimiento ó módulo donde se declaró. Cada vez que entremos al

Page 30: Informe de programacion

formulario, procedimiento o módulo, esa variable tomará el valor cero (si es numérica) o nulo (si es string).

259. Sentencia PRIVATE Es la forma de declarar una variable como Privada. Puede

260. emplearse solamente en la sección de declaraciones de un Formulario o Módulo. La sintaxis es de la siguiente forma:

261. Private nombrevariable As Tipovariable 262. Declarando una variable mediante la sentencia PRIVATE en un Formulario

o Módulo, esa variable puede usarse en todo ese Formulario o Módulo (En todos sus Procedimientos y Funciones), pero NO fuera del Formulario o Módulo donde se declaró.

263. La sentencia Private no puede usarse en un procedimiento o función.264. Sentencia PUBLIC Es la forma de declarar una variable como Pública.

Puede265. emplearse solamente en la sección de declaraciones de un Formulario o

Módulo. La sintaxis es de la siguiente forma:266. Publicnombrevariable As Tipovariable 267. Declarando una variable de esta forma en la sección de declaraciones de un

Módulo, esa variable puede usarse en cualquier parte del programa citándola simplemente por su nombre.

268. Si se declara de esta forma en la sección de declaraciones de un Formulario, esa variable puede usarse en toda el programa. Para nombrarla, si estamos en el Formulario donde se declaró basta con citarla por su nombre. Si no estamos en ese Formulario, habrá que citarla por el nombre del Formulario, seguido del nombre de la variable, separados por un punto :

269. NombreFormulario.Nombrevariable270. En un Módulo puede usarse también la sentencia Global en vez de Public :271. Sentencia GLOBALDeclara una variable que es válida en todo el programa.

La sintaxis es:272. Global nombrevariable Astipovariable273. La sentencia Global sólo puede usarse en el apartado de declaraciones de un

Módulo.274. Mediante la sentencia Global la variable puede usarse en todo el espacio del

programa.275. Sentencia STATIC276. Como se dijo anteriormente, una variable declarada en un procedimiento

pierde su valor al salir de él. Lo peor es que una vez que el programa vuelva a entrar en ese procedimiento, la variable estará puesta a cero. Afortunadamente, esto último tiene solución. Si declarásemos una variable en un procedimiento o función, como estática, esa variable, aunque no la podremos utilizar fuera de ese procedimiento o función, cuando volvamos a él conservará el valor que tenía cuando lo abandonamos. Esta declaración como estática se realiza mediante la intrucción Static

277. Static nombrevariable Astipovariable278. El nombre de una variable puede ser tan largo como queramos. hasta un

máximo de 40 caracteres. En la versión VB para España se pueden usar incluso la Ñ y vocales acentuadas. Es indiferente usar mayúscula ó minúsculas. No se sorprenda,

Page 31: Informe de programacion

si por ejemplo, la ha declarado con mayúsculas y luego la cita con minúsculas al escribir el código, que automáticamente se cambie a mayúsculas. El nombre de una variable siempre debe comenzar por una letra.

279. No hay problema por utilizar variables largas. Al compilar el programa no se lleva el nombre, es decir, no le va a ocupar mas espacio. Utilice siempre nombres que le definan la variable con algún sentido. Es muy útil a la hora de acordarse como se llaman, y sobre todo, a la hora de rehacer un programa que realizó hace seis meses.

280. Pese a que Visual Basic no obliga a declarar variables, es muy útil hacerlo. De esta forma se tiene control sobre el programa. La experiencia se lo irá demostrando.

281. Resumimos la forma de declarar una variable :282. En un Procedimiento (La variable no puede usarse fuera de esta

Procedimiento)283. Dim Variable As Tipovariable284. En un Procedimiento, como permanente (La variable no puede usarse fuera

de este procedimiento, y dentro de él conserva el valor aunque se salga y se vuelva a entrar)

285. Static Variable As Tipovariable286. En un Formulario (En su sección de declaraciones)287. Como Privada (Solamente se puede usar en ese Formulario)288. Dim Variable As Tipovariable ó289. Private Variable As Tipovariable290. Como Pública (Puede usarse en toda la aplicación)291. Public Variable As Tipovariable292. En un Módulo293. Como Privada (Solamente puede usarse en ese Módulo)294. Dim Variable As Tipovariable ó295. Private Variable As Tipovariable296. Como Pública (Puede usarse en toda la aplicación)297. Public Variable As Tipovariable ó 298. Global Variable As Tipovariable299. Error típico de un programador novel de Visual Basic300. Creo que esta costumbre viene del lenguaje C. Pero no vale en VB. Se trata

de declarar varias variables juntas en una misma línea :301. Dim Variable1, Variable2, Variable3, Variable4 As String302. Esta declaración está MAL hecha. Visual Basic interpretará que Variable1,

Variable2 y Variable3 son del tipo Variant, y solamente Variable4 la supone como tipo String

303. La forma correcta de hacerlo, si queremos declarar esas variables un una sola línea, es la siguiente :

304. Dim Variable1 As String, Variable2 As String, Variable3 As String, Variable4 As String.

305. Lenguaje Basic del Visual Basic.306. No ha sido un juego de palabras. VB emplea unas instrucciones casi iguales

a las que emplea Quick Basic. Sin embargo ha añadido otras nuevas instrucciones,

Page 32: Informe de programacion

inherentes con la programación visual. Vamos a estudiar aquí las instrucciones y definiciones mas sencillas, comunes a QB y VB.

307. Sentencias condicionales.308. Llamamos sentencias condicionales a aquellas que se realizan si se cumple

una determinada condición. Son las sentencias por las que empieza cualquier texto de Basic, y este no va ser menos.

309. La sentencia condicional mas usada es:310. Si se cumple una condición Entonces311. Realiza estas instrucciones312. Si no se cumple313. Realiza estas otras instrucciones314. Fin de la sentencia.315. Así de fácil es programar en Basic. Lo que ocurre es que esta herramienta

habla inglés, y lo descrito anteriormente toma la forma:316. If condición Then317. Instrucciones318. Else319. Otras instrucciones320. End If321. En este ejemplo, la condición era que, o se cumple una condición y ejecuta

unas determinadas instrucciones, o no se cumple, y ejecuta otras condiciones distintas. Puede ocurrir que, caso de no cumplirse la condicione primera, se abra un abanico de dos o tres posibilidades. La sentencia condicional tendría entonces la forma:

322. If condición 1 Then323. Instrucciones324. ElseIf Condición 2325. Otras instrucciones326. ElseIf Condición 3327. Otro juego de instrucciones328. Else329. Instrucciones que debe realizar caso de no cumplir las condiciones 1, 2 y 3.330. End If331. Como decíamos anteriormente, este es el tipo de sentencia condicional mas

usada. Existe otra:332. Select Case333. Su nombre casi nos define lo que es: Selecciona, dependiendo del caso, un

determinado juego de instrucciones:334. Select Case variable ' variable es una variable que puede tomar los valores

(p.e.) de 1 a 4335. Case 1336. Instrucciones a ejecutar en caso de que variable = 1337. Case 2338. Instrucciones a ejecutar en caso de que variable = 2339. Case 3340. Instrucciones a ejecutar en caso de que variable = 3341. Case 4

Page 33: Informe de programacion

342. Instrucciones a ejecutar en caso de que variable = 4343. End Select344. Este procedimiento resulta mucho mas sencillo y rápido que las sentencias If

Then Else345. vistas anteriormente, cuando el margen de elección es mayor que 2.346. Cuando lo que queremos es elegir un valor, no ejecutar instrucciones como

hacíamos anteriormente, disponemos de otras dos funciones: Choose y Switch.347. Switch toma una serie de parámetros, todos por parejas. El primer término

de cada pareja es la expresión a evaluar. El segundo es el valor que tiene que devolver. En realidad Switch es una función (las funciones las veremos muy pronto)

348. A = Switch (B=1, 5, B=2, 7, B=3, 11)349. Esta instrucción obtiene un valor para A que dependerá del valor que tome B

entre los valores posibles (1, 2 ó 3)350. La sentencia Choose es casi igual, cambia solamente la forma. La misma

intrucción anterior puede realizarse con Choose de la siguiente forma:351. A = Choose ( B, 5, 7, 11 )352. En estas sentencias, Switch y Choose, si el valor de B no coincide con

ninguno de los valores que se le habían establecido (1, 2 ó 3 en nuestro caso), la sentencia devuelve el valor Nulo ( Null ). Esto puede producir algún error si no se contempla esa posibilidad.

353. Con estas sentencias condicionales es posible realizar bifurcaciones del programa, cambiar las propiedades de un objeto, obtener resultados de operaciones, ....

354. Sentencias de bucle.355. Es muy común utilizar bucles a lo largo de un programa. Un bucle es una

sucesión repetitiva de instrucciones, que se estarán realizando mientras se cumpla una condición o mientras no se cumpla otra condición. Es tan sencillo como esto:

356. Mientras condición357. Instrucciones358. Fin del bucle359. Existen dos formas de bucle: Una, que realiza un número determinado de

recorridos por el bucle. Es el denominado bucle por contador. Otra, realiza el bucle hasta que se cumpla (o deje de cumplirse) una condición. Es el llamado bucle por condición.

360. Bucle por contador361. Realiza el bucle tantas veces como le indiquemos. Por ejemplo, en este bucle

nos va a presentar las 26 letras mayúsculas del alfabeto inglés362. For N=65 To 90363. Label1.caption = Chr ( N )364. Next N365. Este "programa" nos presentará en una caja (Label) los caracteres cuyo

número ASCII vaya desde el 65 (A) al 90 (Z) Comenzará presentando el correspondiente al número 65, e irá presentando sucesivamente el 66, el 67, etc., hasta llegar al 90, donde se parará.

366. Bucles por condición367. Ejecuta las instrucciones del bucle mientras se cumple una condición

Page 34: Informe de programacion

368. X = 0 369. Do While X < 1000370. X = X + 1371. Loop372. El programa toma una variable ( X ) que previamente tuvimos la curiosidad

de ponerla a cero, e incrementa su valor una unidad. Analiza si el valor de X es menor que 1000, y si es cierto, vuelve a realizar el bucle. Así hasta que X ya no sea menor que 1000. Al dejar de cumplirse que X sea menor que 1000, sale del bucle. Acabamos de realizar un temporizador, y también de exponer las sentencias condicionales y los bucles, inicio de cualquier curso de Basic. Como final de lección, se propone un problema. Con el primer bucle, donde visualizábamos los caracteres A a la Z, posiblemente no nos diese tiempo de ver cada una de las letras que iban apareciendo en la pantalla, en la etiqueta Label1, dado que cambiaría con mucha velocidad, y solamente veríamos la Z, que es donde se detuvo el programa. Podemos poner un temporizador cada vez que presente una letra, y así nos dará tiempo a verla. Con los dos bucles vistos anteriormente ya podemos hacerlo.

373. Si lo que queremos es que el programa se ejecute mientras no se cumpla una determinada condición, la sentencia será:

374. X = 0 375. Do Until X > 1000376. X = X + 1377. Loop378. Observe que la diferencia entre una y otra es la condición, While para

indicar Mientras se cumpla que ... y Until para indicar Mientras no se cumpla que ....

379. Para terminar bien el programa anterior utilizaremos la condición de While (Mientras se cumpla la condición)

380. For N=65 To 90381. Label1.caption = Chr ( N )382. Label1.RefreshN' Refresca la etiqueta383. X = 0 384. Do While X < 1000385. X = X + 1386. Loop387. Next N388. Este es nuestro primer programa en BASIC. En VISUAL BASIC es idéntico,

pero nos falta la interface gráfica. Para realizarla basta con abrir el VB y sobre el formulario que aparece al abrirlo, introducir una etiqueta, (Label) que llevará el nombre por defecto de Label1. Solo nos queda pensar donde introducimos el código anterior. Podemos introducir un botón de comando (Command Button) que saldrá con el nombre por defecto de Command1. Haga doble click sobre el botón. Aparecerá el procedimiento Click. Este procedimiento es el que se realiza cuando hacemos click sobre ese botón. Escriba en ese procedimiento este código.

389. Private Sub Command1_Click() ' Esta línea sale automáticamente390. For N=65 To 90391. Label1.caption = Chr ( N )392. Label1.RefreshN' Refresca la etiqueta

Page 35: Informe de programacion

393. X = 0 394. Do While X < 1000' Bucle de temporización395. X = X + 1396. Loop397. Next N' Termina el bucle de temporización398. End Sub ' Esta línea sale automáticamente399. Hemos puesto nuestra primera piedra en Visual Basic. Este ejemplo es muy

sencillo. Visual Basic es tan sencillo como este ejemplo.400. BASIC DE VISUAL BASIC (2)401. ___________________________402. Funciones de cadenas403. Se denomina CADENA a una sucesión de caracteres. Una cadena puede

tener uno o varios caracteres alfanuméricos. Una cadena es también una sucesión de números.

404. Ejemplo de cadenas:405. Curso de Visual Basic406. abcdefghijklmnopqrstuvwxyz1234567890407. 123456789408. Hagamos una distinción entre una cadena que contenga números y un

número. Un número tiene un valor, pero también tiene una presentación escrita. El valor es algo que estará en el ordenador como una sucesión de bits. Dependiendo de como lo hayamos declarado, tendrá mas o menos bits. Pero esa información no es un número legible por el usuario. Lo que sí es legible por el usuario es la representación en numeración decimal (u octal, o hexadecimal, o incluso en binario) de ese número. Esa representación del número en un determinado sistema de numeración es una cadena.

409. Así, el número nueve, que en la memoria del ordenador será una sucesión de bits, el ordenador puede presentárnoslo como:

410. 9 En numeración decimal411. 9 En numeración hexadecimal412. 11 En numeración octal413. 1001 En numeración binaria414. Esas formas de presentarnos el número son CADENAS de caracteres. El

valor del número dentro del ordenador es un NUMERO.415. Para presentar un número en la pantalla, el ordenador debe convertirlo

previamente a una cadena.416. Cuando introducimos un valor numérico por teclado o pantalla, el ordenador

para hacer operaciones con él, debe transformarlo a un número.417. Estas consideraciones nos llevan a las dos primeras funciones con cadenas:418. Str (número) Convierte un número a una cadena en numeración decimal.419. Val (cadena numérica) Obtiene el valor (el número) correspondiente a esa

cadena.420. Ejemplos421. Variablenumerica = Val (TextBox1.Text)422. Este ejemplo convierte la cadena de caracteres (numéricos) que hubiese en la

caja de texto TextBox1 en un número, y asocia este número a la variable Variablenumerica.

Page 36: Informe de programacion

423. Si el contenido de la caja de textos no fuesen caracteres numérico (abcd, por ejemplo), Variablenumerica tomaría el valor 0.

424. Label1.Caption = Str (Variablenumerica)425. Este ejemplo pondría en la etiqueta Label1 los caracteres correspondientes al

valor que tuviese la variable Variablenumerica .426. Nota para recordar: Siempre habrá que convertir un número a una

cadena cuando queramos presentarlo en la pantalla. Siempre habrá que convertir a número la cadena de caracteres numéricos que hayamos introducido por teclado o por pantalla, cuando queramos operar con ese número. Un Label, cuando tiene que presentar un único número, no le pedirá que se lo convierta a cadena, pues VB hace automáticamente esa conversión. Sin embargo, cuando tiene que presentar un número, y además un texto en el mismo Label, VB no realizará automáticamente ese cambio, por lo que le dará un error. Le recomiendo que convierta los números a variables de cadena siempre que los quiera presentar en un Label o TextBox.

427. Existe una función mas amplia que Str. Se trata de Cstr. Esta función no solamente transforma un número a una cadena, como hace Str, sino que convierte cualquier tipo de variable a una variable tipo String (cadena).

428. Esta función transforma, por ejemplo, una variable tipo Booleana en una variable de cadena, devolviendo la cadena "Verdadero" si el valor de la variable booleana es True, y "Falso" si es False.

429. Puede también transformar a una cadena de caracteres el valor de un CheckBox o de un OptionButton. En estos casos devuelve 0 y 1 para el CheckBox (Desactivado / Activado) y Verdadero ó Falso para el OptionButton (Activado / Desactivado)

430. label1.Caption = CStr(booleana) Label1.Caption = Verdadero si booleana es true

431. Label1.Caption = Falso si booleana es False432. Label2 = CStr(Check1.Value) Label2.Caption = 1 si Check1 está activado433. Label2.Caption = 0 si Check1 está desactivado434. Label3 = CStr(Option1.Value) Label3.Caption = Verdadero si Check1 está

activado435. Label3.Caption = Falso si Check1 está desactivado436. Si se aplica Cstr a una variable tipo Fecha/Hora devuelve la fecha / Hora en

formato corto.437. Mas funciones de cadena:438. Left (cadena, n)439. Extrae los n primeros caracteres de una cadena, comenzando por la

izquierda.440. Si cadena = Curso de Visual Basic (Para todos los ejemplos)441. Resultado = Left (cadena, 10) ----> Resultado = Curso de V442. Right (cadena, n) Extrae lo n últimos caracteres de la cadena443. Resultado = Right (cadena, 10) ----> Resultado = sual Basic444. Mid (cadena, m, n) Extrae n caracteres de la cadena, siendo el primer

carácter extraído el que ocupa el lugar m.445. (Vea Instrucción Mid mas abajo)446. Resultado = Mid (cadena, 3, 10) ----> Resultado = rso de Vis

Page 37: Informe de programacion

447. LCase (cadena) Devuelve otra cadena igual, pero con todos los448. caracteres en minúsculas. (LCase = Lower Case)449. Resultado = Lcase (cadena) ----> Resultado = curso de visual basic450. UCase (cadena) Devuelve otra cadena igual, pero con todos los451. caracteres en mayúsculas. (UCase = Upper Case)452. Resultado = UCase (cadena) ----> Resultado = CURSO DE VISUAL

BASIC453. Len (cadena) Devuelve la longitud de la cadena454. Resultado = Len (cadena) ----> Resultado = 21455. LenB (Cadena) Devuelve el número de Bytes empleados para almacenar la456. cadena. Sorpréndase, es el doble que Len (Cadena)457. String (n, carácter) Devuelve una cadena de n caracteres como el indicado458. Resultado = String (8, "a") ----> Resultado = aaaaaaaa459. Resultado = String (8, Chr(65)) ----> Resultado = AAAAAAAA460. Resultado = String (8, 65) ----> Resultado = AAAAAAAA461. Space (n) Devuelve una cadena formada por n espacios.462. Resultado = "A" + Space (6)+ "B" ----> Resultado = A B463. LTrim Elimina los posibles espacios que tenga una cadena por su izquierda.464. Rtrim Elimina los posibles espacios que tenga una cadena por su derecha.465. Trim Elimina los espacios que tenga una cadena, tanto por su izquierda

como por su derecha. (No elimina los espacios466. centrales de la cadena)467. Estas tres funciones se emplean para quitar los posibles espacios que pueden

resultar de una entrada de datos. Tienen especial importancia cuando se toman los datos de un archivo o base de datos, donde fueron introducidos por otro programa.

468. No se pone ningún ejemplo de estas funciones, pues sería difícil verlo impreso.

469. InStr (cadena, cadena1) Busca la cadena1 dentro de cadena y devuelve el número de orden dentro de cadena donde se encuentra la primera letra de cadena1

470. Resultado = InStr (cadena, "sua") ----> Resultado = 12471. StrConvConvierte una cadena de caracteres en otra, según las instrucciones472. que le sigan. Puede sustituir a UCase o LCase si la instrucción es473. UpperCase o LowerCase respectivamente, o poner la primera letra de todas

las palabras de la cadena en mayúsculas, si la instrucción es ProperCase.474. Resultado = StrConv (cadena, UpperCase) ----> Resultado = CURSO DE

VISUAL BASIC475. Resultado = StrConv (cadena, LowerCase) ----> Resultado = curso de visual

basic476. Resultado = StrConv (cadena, ProperCase) ----> Resultado = Curso De

Visual Basic477. Instrucción Mid478. Mid puede usarse también para cambiar el contenido de una cadena.

Observe la sutileza entre Mid como Función de cadena y Mid como Instrucción.479. La Instrucción Mid reemplaza un número especificado de caracteres en una

variable de cadena con caracteres de otra cadena.480. Sintaxis Mid(cadena1, inicio[, longitud]) = cadena2481. Resultado Mid (cadena, 7,2)="Sobre" ---- > Resultado = Curso sobre Visual

Page 38: Informe de programacion

482. Basic483. FUNCIONES CON NUMEROS484. _________________________485. Visual Basic puede operar con números tal como lo haría cualquier persona.

Conoce las 4 reglas, y puede utilizar paréntesis de la misma forma que los escribimos sobre el papel.

486. Los operadores que utiliza para las operaciones básicas son:487. + Suma488. - Resta489. * Multiplicación490. / División491. \ División sin decimales 492. Mod Resto de una división493. ^ Eleva a un exponente494. Ejemplos495. Resultado = 12 + 15 ----> Resultado = 27496. Resultado = 15 - 12 ----> Resultado = 3497. Resultado = 15 * 12 ----> Resultado = 180498. Resultado = 15 / 12 ----> Resultado = 1.25499. Resultado = 15 \ 12 ----> Resultado = 1500. Resultado = 15 Mod 12 ----> resultado = 3501. Resultado = 12 ^ 2 ----> Resultado = 144502. resultado = ( ( 4 * 3 ) / 2 ) ^ 2 ----> Resultado = 36503. Estos operadores se denominan Operadores aritméticos.504. Existen otras operaciones que se pueden realizar con números:

comparaciones. Los operadores que realizan comparaciones se denominan Operadores relacionales. El resultado de las operaciones realizadas con estos operadores solamente admiten dos resultados: True (Cierto) o False (Falso) Estos operadores son:

505. = Igual que506. <> No igual que507. < Mayor que508. <= Mayor o igual que509. > Menor que510. => Igual o menor que511. Estos operadores se suelen utilizar en estructuras de programa donde se tome

una decisión.512. El operador = puede usarse también para comparar cadenas o fechas.513. Operadores Lógicos514. Estos operadores sólo tienen sentido cuando hablemos de variables

Booleanas, es decir, aquellas que solamente pueden tomar los valores cero y uno.515. Operador Función Devuelve True si Devuelve False si516. And Función AND A=True y B=True Cualquier otro caso517. OrFunción OR A=True o B=True A=False y B=False518. Xor Función XOR A=True y B=False A=True y B=True519. A=False y B=True A=False y B=False520. EqvF. Equivalente A=True y B=True A=True y B=False

Page 39: Informe de programacion

521. A=False y B=False A=False y B=True522. ImpImplicación A=True y B=True A=True y B=False523. A=False y B=True524. A=False y B=False525. Not Negación A=False A=True526. LikeIgualdad A=True A=False527. Otras Funciones con números528. CInt Parte entera Devuelve la parte entera de un número con decimales529. AbsValor Absoluto Devuelve el valor absoluto de un número530. SgnSigno Devuelve el signo de un número531. Sqr Raíz cuadrada Devuelve la raíz cuadrada de un número532. Exp Exponenciación Devuelve el número elevado al exponente indicado533. Log Logaritmo Devuelve el logaritmo natural de ese número534. Trigonométricas535. Sin Seno Devuelve el valor del seno de un ángulo (Expresado536. en radianes)537. Cos Coseno Devuelve el coseno de un ángulo (En radianes)538. Tan Tangente Devuelve la tangente de un ángulo539. Atn Arco Tang. Devuelve un arco cuya tangente sea el número540. (Angulo en radianes)541. Una función curiosa542. TimerTiempo acumulado Devuelve el tiempo (en segundos) que ha pasado

desde las 12 de la noche.543. Generación de números aleatorios544. Randomize (Numero) Inicia el generador aleatorio tomando como dato de

partida el Numero. Devuelve el resultado en una variable llamada Rnd.545. NOTA MUY IMPORTANTE.- Los números aleatorios generados de esta

forma son siempre iguales, eso sí, dependiendo del número que se le introduzca como parámetro. Esta generación de números no produce números aleatorios pues como se dijo, dependen del numero que se meta como parámetro, y si este se repite, se repite la sucesión de números que nos crea el generador aleatorio.

546. La forma de obtener números realmente aleatorios es introducir como parámetro un número que sea variable con el tiempo. Ese número no puede ser otro que el número timer visto antes. Y siempre con la precaución de que medie mas de un segundo entre dos instrucciones Randomize. La función toma entonces la forma:

547. Randomize Timer548. La función Randomize devuelve una variable Rnd con un número

comprendido entre 0 y 1 (Nunca será 0 ni 1) Leyendo el valor de la variable sucesivas veces, se puede obtener una sucesión de números aleatorios. No es necesario ejecutar la instrucción Randomize Timer cada vez que se quiera obtener un dato de la variable Rnd.

549. Un ejemplo. Generador de números para la Lotería Primitiva550. Supongamos que tenemos un formulario con una etiqueta de nombre Label1,

un botón de comando de nombre Command1. Cuando hagamos click sobre el botón de comando deberá generar un número comprendido entre el 1 y el 49. En el procedimiento click de Command1 pondremos el siguiente código:

551. Private Sub Command1.click

Page 40: Informe de programacion

552. Randomize Timer553. A = Rnd554. A = Rnd * 100555. A = CInt(A)556. Do While A > 49557. A = A - 49558. Loop559. Do While A < 1560. A = A + 49561. Loop562. Label1.caption = A563. End Sub564. Realice este pequeño programa, con la instrucción Randomize Timer y sin

ella.565. Funciones con fechas.566. Las fechas son cadenas especiales. Visual Basic sabe obtener y tratar la

información relativa a la fecha y la hora. Dispone para ello de una declaración de variable: Date. Una variable declarada como date puede contener una fecha, una fecha y una hora o una hora solamente.

567. Date Devuelve la fecha de hoy. Esta fecha la toma del reloj del ordenador.568. Time Devuelve la hora actual.569. Now Devuelve la fecha y hora actual.570. WeekDay Devuelve el día de la semana (En número, 1=Domingo,

2=Lunes,...)571. Day Obtiene el día, a partir de una fecha 572. Month Obtiene el mes a partir de una fecha.573. Year Obtiene el año a partir de una fecha. 574. Hour Obtiene la hora a partir de una hora 575. Minute Obtiene el minuto a partir de una hora. 576. Second Obtiene el segundo a partir de una hora. 577. DateAddAñade un intervalo de tiempo a una fecha578. DateDiff Obtiene el intervalo de tiempo entre dos fechas579. DatePart Devuelve una parte de una fecha (semana, trimestre, etc.)580. DateSerial Compone una fecha a partir de parámetros relativos581. TimeSerial Compone una hora a partir de parámetros relativos.582. DateValue Devuelve una fecha a partir de un dato que se le parezca y VB

pueda583. obtener de él una fecha válida584. Mediante estas instrucciones podemos obtener el dato necesario de una fecha

u hora. Por ejemplo, para obtener el día de hoy solamente:585. Día = Day (Now)Día será un número586. El día de la semana lo obtendríamos587. Diasemana = WeekDay (Now) Diasemana será un número588. DateValue, una instrucción que le sacará mucho provecho589. Fecha = DateValue (120796) 590. Fecha = DateValue (12 07 96) Fecha =12/07/96591. Función FORMAT

Page 41: Informe de programacion

592. Esta función permite presentar cadenas de numéricas o fechas de una determinada forma. Permite establecer el Formato de esa cadena.

593. Si recurre a la ayuda de VB acerca de esta función se va a enterar muy poco de lo que puede dar de sí. La sintaxis que presenta es :

594. Format(expresión[, formato[, primerdíadesemana[, primerasemanadelaño]]])595. Lo mejor que puede hacer con esta definición de la sintaxis de Format es

olvidarla. No le aclara mucho lo que se puede hacer con Format. La función Format se usa para poner una fecha en un determinado formato. Con la expresión :

596. FechadeHoy = Format (Now, "yyyy-mm-dd")597. la variable FechadeHoy tendrá el valor 1998-05-21, que se refiere al día 21

de mayo de 1998, según el formato recomendado por la norma ISO-8601 para la presentación de fechas. Si hubiésemos puesto la expresión FechadeHoy = Format (Now, "dd/mm/yy") , la variable FechadeHoy contendría el valor 21/05/98 referido al día citado.

598. Las posibilidades de Format llegan también al campo de las cadenas numéricas. Por ejemplo la cifra 123456 se transformará en las siguientes expresiones, según como empleemos la función Format

599. Variable = Format(123456, "Currency") Variable = 123.456 Pts600. Variable = Format(123456, "Standard") Variable = 123.456,00601. Veamos ahora con un poco mas de conocimiento la sintaxis de Format602. Variable = Format (expresión[, formato[, firstdayofweek[,

firstweekofyear]]])603. Donde604. expresión es una cadena o fecha válida605. formato es uno de los formatos predefinidos (Standard, Currency, etc. Vea

mas abajo)606. firstdayofweek. Especifica el primer día de la semana. Puede tomar uno de

estos valores o constantes :607. Constante Valor Descripción608. vbUseSystem 0 El especificado en el sistema operativo.609. VbSunday 1 Domingo (valor por defecto)610. vbMonday 2 Lunes611. vbTuesday 3 Martes612. vbWednesday 4 Miércoles613. vbThursday 5 Jueves614. vbFriday 6 Viernes615. vbSaturday 7 Sábado616. firstweekofyear Especifica cual es la primera semana del año. Puede tomar

uno de los siguientes valores o constantes :617. Constante Valor Descripción618. vbUseSystem 0 Usa el valor del sistema operativo619. vbFirstJan1 1 La primera semana es la que contiene al día 1 de Enero(Valor620. por defecto621. vbFirstFourDays 2 La primera semana es la que contiene al menos, 4 días de

ese622. año (Rec. ISO - 8601)

Page 42: Informe de programacion

623. vbFirstFullWeek 3 La primera semana es la que tiene todos sus días en ese año

624. No se complique la vida con el tema del primer día de la semana ni la primera semana del año. No lo usará con frecuencia. Centrémonos mas en el parámetro Formato. Puede tomar muchos valores. Veamos los principales. Primero para números

625. Observe que usamos la expresión Variable =Format (1234567,"Formato") para todos los ejemplos de números.

626. Para poner los números separados por millares :627. Variable = Format(1234567, "##,###,###") Variable = 1.234.567628. (Cada carácter # indica que ahí va un número. El separador debe ser una

coma, no un punto, aunque esto depende del idioma que esté usando)629. Puede poner una de estas expresiones, eso si, siempre entre comillas dobles :630. General Number Muestra el número tal como lo tecleó631. Currency En formato de la moneda de su sistema operativo632. Fixed Sin separador de millar y dos decimales (1234567,00)633. Standard Con separador de millares y dos decimales (1.234.567,00)634. Percent Multiplica el número por cien y lo presenta cono635. porcentaje(123456700,00%)636. Scientific Usa notación científica (1,23E+06)637. .638. Para fechas (Observe que usamos el ejemplo Format(Now, "Formato") y

Now = 21/07/98639. a las 22:16:00 y pico)640. General Date 21/07/98 22:16:00641. Long Date martes 21 de julio de 1998642. Medium Date 21-jul-98643. Short Date 21/07/98644. yyyy-mm-dd 1998-05-21645. yy-mm-dd 98-07-21646. Long Time 22:19:53647. Medium Time 10:20 PM648. Short Time 22:20649. hh :mm :ss 22 :21 :29650. hh :mm 22 :21651. Format dispone de mas opciones. Sería muy largo explicarlas aquí. Para mas

información, en la WEB de Microsoft puede encontrar mas formatos posibles.652. MATRICES653. __________654. Cuando utilizamos varias variables que tienen un significado similar para

nosotros, pero que son distintas (Por ejemplo, el nombre de los alumnos de una clase) podemos utilizar una matriz. Esta matriz está formada por tantos elementos como alumnos tenga la clase. El nombre asociado a cada uno de los elementos de la matriz puede ser:

655. Alumno (n) Donde n es el número por orden de lista de ese alumno.656. Las matrices normalmente comienzan a numerar por el número 0. Este

comienzo puede no ser el mas apropiado para la variable que estamos planteando,

Page 43: Informe de programacion

pues ningún alumno tiene el número de orden 0. Para hacer que una matriz comience a numerar por el 1 se debe definir mediante la instrucción:

657. Option Base 1658. que debe colocarse al comienzo del módulo o formulario donde declaremos

la matriz.659. Para declarar la matriz se hace como con todas las variables, especificando

entre paréntesis el número de elementos que componen la matriz:660. Dim Alumno (25) as String661. Hemos declarado que la variable alumno es una cadena, y que hay 25

elementos en esa matriz.662. Una matriz también se puede declarar de la siguiente forma :663. Dim Alumno(1 To 25) as String664. Donde le decimos que la variable Alumno tiene 25 elementos, que el

primero tiene el índice 1 y el último tiene el índice 25.665. Pero imaginemos que queremos meter en la misma matriz el nombre, primer

apellido y segundo apellido del alumno. Necesitaremos declarar una matriz de 25 por 3. Como todos los elementos serán cadenas de caracteres, podemos declararla de la siguiente forma:

666. Dim Alumno (1 To 25, 1 To 3) As String667. De esta forma, el primer apellido del alumno que ocupa el puesto número 15

de la clase, será el elemento:668. Alumno (15, 2)669. Podemos definir matrices de dimensión superior a dos. Podemos llegar a un

máximo de 60 dimensiones. Una matriz de 5 dimensiones se declararía:670. Dim Variable ( 1 To N, 1 To M, 1 To P, 1 To Q, 1 To R)671. entendiendo que hay N, M, P, Q y R elementos en cada una de las

dimensiones respectivamente.672. Una variable ya declarada como una matriz puede redimensionarse a lo largo

del programa mediante la instrucción ReDim673. ReDim Alumno (1To 25)674. Mediante esta instrucción, estamos ReDimensionando una matriz ya

declarada. No se puede redimensionar una matriz inexistente.675. Mediante la declaración 1 To 25 le estamos diciendo que el primer elemento

de la matriz es el 1, independientemente de lo que hayamos puesto en OPTION BASE. Si se redimensiona simplemente con el número de elementos :

676. ReDim (25)677. le estamos diciendo que tiene 25 elementos, pero que el primero sea el 0 ó el

1 depende de haber puesto OPTION BASE 0 u OPTION BASE 1.678. Una matriz puede redimensionarse cuantas veces se quiera a lo largo de la

aplicación, pero esa redimensión no puede afectar al número de dimensiones de la matriz. Si redimensionamos la matriz perderá la información existente. Para evitar perder la información presente en la matriz, debe utilizar la sentencia ReDim Preserve.

679. Si usa la palabra clave Preserve en matrices de dimensión superior a 1, va a encontrarse con comportamientos no esperados. Como podrá ver en la Ayuda de VB, usando ReDim Preserve sólo puede cambiar el tamaño de la última dimensión

Page 44: Informe de programacion

de matriz y no puede modificar en ningún momento el número de dimensiones. NO es cierto del todo. SÍ lo podrá hacer una sola vez.

680. Respecto a cambiar el número de dimensiones, si ha declarado la matriz con unas dimensiones determinadas, ya no podrá cambiar las dimensiones ni con ReDim ni con ReDim Preserve. Le saldrá un error que dice que las dimensiones de la matriz ya han sido declaradas.

681. Pero si ha declarado la matriz sin dimensiones :682. Dim MiMatriz()683. puede cambiar las dimensiones Dim MiMatriz (1 To 5, 1 To 9)684. y volver a cambiarlas Dim MiMatriz (1 To 8, 1 To 15, 1 To 6)685. Observe que no solamente la hemos cambiado dos veces de dimensiones (la

primera a 2 y la segunda a 3), sino que también hemos cambiado el número de elementos en cada dimensión.

686. Si hubiésemos utilizado ReDim Preserve solamente podríamos haber usado la primera de las dos líneas anteriores :

687. ReDim Preserve MiMatriz (1 To 5, 1 To 9)688. pero ya no podríamos volver a cambiar el número de dimensiones con la

segunda línea. Nos daría un error.689. Con ReDim podemos cambiar el número de elementos de cada dimensión

cuantas veces queramos. Por ejemplo, podemos redimensionar MiMatriz de las siguiente forma :

690. ReDim MiMatriz (1 To 5, 1 To 9)691. ReDim MiMatriz (1 To 15, 1 To 20)692. ReDim MiMatriz (1 To 25, 1 To 30)693. . . . . . . . . . . . . . . . . . . . . . . . . . . .694. Si hubiésemos empleado ReDim Preserve, podríamos cambiar los elementos

de todas las dimensiones de la matriz una vez :695. ReDim Preserve (1 To 5, 1 To 9)696. a partir de ahora, solamente podemos cambiar los elementos de la última

dimensión :697. ReDim Preserve (1 To 5, 1 To 20)698. ReDim Preserve (1 To 5, 1 To 30)699. es decir, no podremos hacer esto :700. ReDim Preserve (1 To 10, 1 To 30) donde se señala en negrita el error.701. Esto no causa ningún error en una matriz de una dimensión, ya que si la

matriz tiene sólo una dimensión, puede cambiar el tamaño de esa dimensión porque es la única y la última.

702. Cuando a lo largo de la aplicación se va redimensionando una matriz, podemos llegar la circunstancia de que, en un momento determinado, no sepamos las dimensiones de esa matriz.

703. Para conocer el índice máximo y mínimo de una matriz se usan las funciones UBound y LBound.

704. UBound devuelve el mayor subíndice disponible para la dimensión indicada de una matriz.

705. Sintaxis UBound(nombredelamatriz[, dimensión])706. LBound devuelve el mayor subíndice disponible para la dimensión indicada

de una matriz.

Page 45: Informe de programacion

707. Sintaxis LBound(nombredelamatriz[, dimensión])708. Ejemplo Tengamos una matriz llamada Mimatriz, de tres dimensiones. En

un momento de la aplicación se ejecutó la siguiente instrucción válida :709. ReDim Mimatriz (1 To 100, 0 To 3, 5 To 20)710. En otro momento queremos tener el control de los índices de esa matriz, y

queremos averiguar el índice menor y mayor de cada una de sus dimensiones :711. (IID1= Indice Inferior Dimensión 1, ISD 1 = Indice Superior Dimensión 1,

etc. )712. IID 1= LBound (Mimatriz, 1) IID1 = 1713. ISD1 = UBound (Mimatriz, 1) ISD1 = 100714. IID 2= LBound (Mimatriz, 2) IID1 = 0715. ISD2 = UBound (Mimatriz, 2) ISD1 = 3716. IID 1= LBound (Mimatriz, 3) IID1 = 5717. ISD1 = UBound (Mimatriz, 3) ISD1 = 20718. VISUAL BASIC719. Tras esta pequeña introdución al lenguaje Basic ya estamos en disposición

de encender el ordenador y comenzar a trabajar con Visual-Basic. Se supone que su PC tiene instalado el programa Visual basic, bien en su versión de 16 bits si dispone de Windows 3.xx o la de 32 bits si dispone ce Win95 ó Windows NT.

720. Entre en el programa VB. Le aparecerá en pantalla algo similar a esto : (Para VB Vers. 4)

721.

Page 46: Informe de programacion

722. Este es el comienzo del programa . Observe que en esta pantalla existen varias cosas. En la parte superior , la barra de título del programa Visual Basic, con el texto :

723. Proyect1 - Microsoft Visual Basic (Diseño)724. Por debajo de esta barra de Título del VB, encontramos la barra de menú

de VB, con las leyendas :725. Archivo Edición Ver Insertar Ejecutar Herramientas Complementos Ayuda726. Por debajo de esta barra de menú tenemos la barra de herramientas, donde

podrá ver varios iconos, que cada uno representa un determinada operación que Vd. puede realizar. Estas operaciones está todas en la línea de menú, y puede acceder a ellas abriendo los menús desplegables que existen en cada una de las palabrea Archivo Edición Ver ...... de esta línea de menú. El hecho de colocar las operaciones mas usuales en un icono en la barra de herramientas se hace para mayor comodidad del usuario.

727. A la izquierda de la pantalla tiene una caja rectangular con tres columnas de iconos. Esa caja es la Caja de Herramientas (No la confunda con la barra de herramientas de la parte superior)

728. Esta caja de herramientas es, salvando las distancias, lo mismo que una caja de herramientas real que pueda tener un mecánico para realizar su trabajo. En ella están los iconos que representan a los controles con los que Vd. va a desarrollar su aplicación VB. No están todos los que pueden estar, al igual que en una caja de herramientas de un mecánico no están todas las herramientas que puede usar. Están solamente las mas usuales. Si necesita alguna mas, puede cogerla de otra parte (barra de Menú, Herramientas, Controles personalizados) y agregarlos a esa caja de herramientas, al igual que lo haría un mecánico con una herramienta especial, que la metería en su caja sólo cuando va a realizar un trabajo determinado para el que la necesite.

729. Posiblemente esta caja de herramientas no le aparezca tal y como la ve en estos apuntes. Eso depende si Ud. tiene la versión personal o la profesional, o si usa la versión de 16 ó 32 bits. Esa caja de herramientas puede personalizarla a su gusto. Para ello, deberá cargar un proyecto ya existente en los discos de distribución de Visual Basic, llamado AUTO32LD.VBP (versión 32 bits) ó AUTO16LD.VBP (Versión 16 bits) que se encontrará en el directorio donde haya cargado el programa Visual Basic. Este proyecto no tiene otra función que determinar las herramientas con las que quiere abrir el VB. Para introducir herramientas nuevas en la caja de herramientas, basta con desplegar el menú Herramientas de la barra de menú, e ir a Controles personalizados. Haciendo click en esta línea de controles personalizados, podemos seleccionar nuevos controles para añadir a la caja de herramientas, marcando la casilla que está a la izquierda del nombre del control que quiere introducir. Una vez seleccionados todos los nuevos controles, haga click en ACEPTAR, y podrá observar que esos nuevos controles ya se le han añadido a la caja de herramientas. Para que esos nuevos controles le aparezcan de entrada cuando inicia una sesión de VB, debe salir de Visual basic guardando los cambios. Vuelva a entrar y observará que ya le aparecen esos nuevos controles en la caja. No es prudente meter muchos controles en la caja. Ponga solamente los que necesite normalmente en sus aplicaciones. Ocupará menos memoria y tardará menos tiempo en cargar el programa VB. Además, cuando realice una aplicación y la distribuya

Page 47: Informe de programacion

una vez compilada, Visual Basic entregará en los disquetes de distribución las DLL’s u OCX’s correspondientes a todos los controles personalizados que Vd. tenga en la caja de herramientas, los necesite el programa o no los necesite. Esto le va a suponer que está cargando subprogramas inútiles en el ordenador destino de su aplicación. A la hora de compilar el programa (Crear archivo .EXE) quite todos los controles personalizados que no necesite su aplicación. (Sólo los controles personalizados. Los controles comunes - CommandButton, Label, TextBox, etc.-, no se pueden eliminar de la caja de herramientas)

730. Para quitar controles de su caja de herramientas, debe proceder de forma análoga, cargando el programa AUTOxxLD.VBP, abriendo menú de herramientas, Controles personalizados, quitando la marca al cuadro situado en la parte izquierda del control a eliminar, y guardando el proyecto al salir.

731. En el centro, y ocupando casi toda la pantalla, tenemos el Formulario. Este Formulario es la interface gráfica de su aplicación, sobre el que podrá añadir los controles que necesite. Lo veremos mas adelante con todo detalle.

732. Observa dos ventanas, una denominada Ventana de Propiedades, donde puede ver las propiedades del formulario, Form1, y otra, denominada Ventana de Proyecto. Existe otra ventana, que no está en la figura anterior, la Ventana de Depuración. Por cada formulario y cada control que introduzca en el proyecto, le aparecerá otra ventana, denominada ventana de código.

733. No se extrañe de que esta presentación gráfica del Visual Basic coincida con otros sistemas de desarrollo (Delphi, p.e.). La lógica de desarrollo de una aplicación en Windows ha llevado a varios fabricantes de software a utilizar un entorno gráfico similar (diríamos idéntico). A Visual basic le queda el orgullo de ser el primero en utilizarlo.

734. Con lo descrito anteriormente ya tenemos, al menos, fijado el argot con el que expresarnos para comenzar a estudiar el VISUAL BASIC. Veamos con un poco mas detalle la Ventana de Código.

735.

Page 48: Informe de programacion

736. Esta figura le muestra un Formulario con su ventana de código. Cada objeto gráfico de VB tiene su propia ventana de código. Así, si en este formulario hubiésemos introducido un Label y dos CommandButton, todos ellos tendrían su propia ventana de código. La ventana de código la podemos ver haciendo doble click sobre cualquier objeto de nuestro proyecto. En este caso hemos hecho doble click sobre el único objeto que teníamos : el formulario.

737. Observe las dos cajas de la parte superior, uno con la inscripción Objeto : que en el momento que le sacamos la foto tenía Form, y el otro con la inscripción Proc : (procedimiento), que en el momento de la foto tenía Load. A estas cajas les denominamos Lista de Objetos y Lista de Procedimientos respectivamente.

738. Haciendo click sobre la flecha de cada lista, se despliega un menú, en la lista de objetos se desplegará una lista con los nombres de cada objeto existente en ese momento dentro del formulario. Haciendo click sobre uno de los nombres, nos presentará la ventana de código de ese objeto. Todos los objetos gráficos (controles) existentes dentro de un formulario y el propio formulario aparecerán en la misma lista de objetos.

739. Haciendo click sobre la flecha de la lista de procedimientos, se despliega la lista con todos los procedimientos posibles para ese objeto. Siempre saldrá uno. Si tenemos escrito código en uno de los procedimientos, saldrá por defecto ese procedimiento para el cual hemos escrito el código. Si no hay código en ninguno de los procedimientos, saldrá el que tenga por defecto cada objeto.

740. Solamente nos queda por decir, para cerrar este capítulo, que es un procedimiento.

741. Para ello vamos a explicar lo que es un evento. Un Evento es algo que le puede ocurrir a un objeto. En una internase gráfica, lo que le puede ocurrir a un objeto es que se le haga click, doble click, que se pase el cursor del ratón por encima, etc. Este es el Evento. El Procedimiento es la respuesta por parte de ese objeto, al evento que le está sucediendo.

742. Esa respuesta, esa forma de Proceder del objeto al evento que le está sucediendo, debemos programarla según nuestras necesidades, es decir, debemos escribir el código que necesite nuestra aplicación como respuesta al evento que acaba de ocurrir. Posiblemente, no queramos ninguna respuesta a muchos de los eventos que pueden acaecer a un objeto. Cada objeto tiene muchos eventos y solamente queremos aprovechar los que nos interesan. Para que un evento no produzca ningún efecto, basta con dejar sin código el procedimiento correspondiente a ese evento. En los eventos que queramos que realice alguna operación, le escribiremos en su procedimiento el código necesario para que esa operación se realice. Sin darnos cuenta, hemos comenzado a escribir el código de la aplicación.

743. Observará que el primer elemento del menú desplegable de la lista de objetos se denomina General. Este no es en realidad ningún objeto, sino un apartado existente en cada formulario, que, al desplegar su lista de procedimientos tiene la sección de declaraciones, donde debemos declarar las variables que queremos que afecten a todo el formulario y sus controles, y tendrá además, los nombres de todos los procedimientos que introduzcamos (véase un poco mas adelante). En este menú desplegable de la lista de procedimientos del General verá con frecuencia cosas que Vd. no puso allí. Cosas tales como Command1_click, y en

Page 49: Informe de programacion

la ventana un determinado código. Esto ocurre cuando se borra algún control que tenía escrito código en alguno de sus procedimientos. Visual Basic sabe lo mucho que cuesta escribir el código asociado a un control. Si borramos un control de nuestro formulario accidentalmente, después de haber introducido todo el código asociado a él, Visual Basic nos sorprende con que ese código no lo tira inmediatamente, sino que lo reserva como un procedimiento en ese apartado General del formulario. Si en realidad queríamos borrar el control y todo su código, debemos quitarlo de ese apartado General de nuestro formulario, pues en realidad, si no lo queremos, no hará otra cosa que estorbar. Para quitarlo basta con borrar todo el código que aparece en la ventana de código cuando hacemos click sobre el nombre del control eliminado. Deberemos borrar todo el código, incluida la cabecera donde figura el nombre del control eliminado, y la parte final, que siempre termina con EndSub.

744. El primer estorbo lo observará si crea otro control con el mismo nombre, cosa fácil ya que VB da un nombre por defecto a cada control (Command1, Command2....). El código asociado al control eliminado pasará automáticamente al nuevo control con el mismo nombre.

745. Una aplicación puede tener todo su código escrito en los sucesivos procedimientos del formulario y de los controles que tenga ese formulario.

746. Puede ocurrir que un determinado evento no esté entre los posibles eventos de los controles de nuestra aplicación. Piense por ejemplo, el evento de que la variable A sea igual a la variable B. No existe en ninguno de los controles ese procedimiento. No se preocupe, puede crear un procedimiento que se ejecute cuando su programa lo decida. Podemos añadir cuantos procedimientos queramos. Estos procedimientos se añaden al formulario, y deberán definirse por un nombre que Vd. debe elegir. Para que se ejecuten las instrucciones (código) incluido en ese procedimiento, basta simplemente con nombrarlo por ese nombre.

747. Para insertar un procedimiento debe ir a la barra de menú, hacer click sobre Insertar, y en el menú que le desplegará, volver a hacer click sobre Procedimiento. VB le presentará un cuadro donde le pedirá el nombre, si quiere que sea un procedimiento, una función o una propiedad. A lo largo del curso irá viendo que es cada cosa.

748. Escribiendo el código en los sucesivos procedimientos, bien en los propios de cada objeto, bien en los procedimientos que vayamos creando, es posible completar la aplicación. Pero en una aplicación larga esta forma de escribir el código no sería la mas adecuada. Es mas, posiblemente sería demasiado engorroso escribirla de esta forma, y muy probablemente deberíamos escribir el mismo código para varios procedimientos, lo que alargaría inútilmente el programa y el tiempo de desarrollo.

749. Para disponer de un sitio donde escribir parte (o la mayor parte) de su programa, puede introducir uno o varios módulos. Expliquemos lo que es un módulo.

750. Un Módulo es una parte del programa donde solamente puede escribir código. Es igual que un formulario, sin interface gráfica. Un profesor de Visual Basic lo expresaba diciendo que un Módulo es un Formulario sin cara. En un módulo pueden existir procedimientos al igual que en los formularios, pero como un módulo no tiene interface gráfica, esos procedimientos debe introducirlos el

Page 50: Informe de programacion

programador tal y como explicamos un poco mas atrás. El módulo tiene su propia ventana de código, al igual que un formulario, con un objeto único, el apartado General. Aquí también tenemos la sección de declaraciones, al igual que los formularios. En esta sección de declaraciones se comporta de manera similar a la de los formularios, pero permite algo que no nos permite la sección de declaraciones de un formulario : Declarar variables que se pueden utilizar en todo el programa. Esto ya lo ha visto mas atrás, con las sentencia de declaración Global y Public.

751. Los módulos se emplean para la declaración de variables globales, y para escribir el código de la aplicación que sea común a varios formularios. Esto nos evita tener que repetir código inútilmente. Ese código común se escribirá en un procedimiento que previamente habremos insertado en este módulo, y lo citaremos por su nombre desde cualquier parte del programa.

752. ¿Cual es el nombre de un procedimiento existente dentro de un módulo ? Depende. Si estamos ejecutando código escrito en otro procedimiento dentro del mismo módulo, es decir, si estamos dentro de ese mismo módulo, basta con citarlo por su nombre : p.e., si en el MóduloA tenemos un procedimiento llamado Procedimiento1, y queremos llamarle desde una línea de código dentro de ese mismo módulo, basta con referirse a él con :

753. Procedimiento1754. Si la línea de código donde nos vamos a referir a él está fuera de MóduloA,

deberemos referirnos a ese procedimiento con :755. MóduloA.Procedimiento1756. Lo mismo podemos decir para cualquier procedimiento insertado en un

formulario. Desde dentro del formulario basta con referirse a él citándolo por su nombre. Desde fuera de ese formulario deberemos citarle como :

757. Formulariox.Procedimientoy758. donde damos por hecho que Formulariox es el nombre del formulario que lo

contiene, y Procedimientoy es el nombre del procedimiento.759. Fíjese en el punto usado como separador entre el nombre del formulario y el

nombre del procedimiento. VB usa como separador un punto. Usa el separador para separar el nombre de un control y una de sus propiedades (Label1.Caption), para separar el nombre del formulario del nombre de uno de sus controles (Formulario1.label1.caption) Se irá familiarizando con la terminología VB según vayamos avanzando en el curso.

760. Funciones761. Al igual que introducimos Procedimientos, podemos introducir Funciones en

nuestra aplicación. Una Función es un Procedimiento al que le pasamos uno o varios parámetros. (O Ninguno) Verá los Procedimientos y funciones mas adelante (Cap. 15). Al igual que los Procedimientos, pueden ser públicas (se verán en toda la aplicación) o privadas (se verán solamente en el formulario donde estén.

762. Main763. Merece la pena pararse un poco para estudiar el Procedimiento Main. Para

verlo con mas detalle, comentaremos como comienza a trabajar una aplicación realizada en Visual Basic.

764. Imaginemos una aplicación que tiene 3 Formularios. En cada uno de ellos tiene código. Logicamente la aplicación tendrá que presentar uno de ellos en primer lugar. Deberemos decirle a Visual Basic cual es el formulario inicial, y será ese por

Page 51: Informe de programacion

el que empiece. En ese formulario dispondremos el código necesario para que la aplicación se ejecute en el orden deseado.

765. Si hacemos click en la Barra de Menú de Visual Basic, en Herramientas | Opciones obtendremos el siguiente cuadro de diálogo :

766.

767. Verá que tiene 4 pestañas, y actualmente tiene abierta la pestaña correspondiente a Proyecto, y tiene desplegada una lista donde nos pide el Formulario Inicial. En esa lista figura también la expresión Sub Main. Si ponemos como formulario inicial uno de los formularios, la aplicación comenzará por ese formulario. Si en uno de los Módulos existentes en el proyecto, ponemos un procedimiento llamado Main, podemos comenzar la ejecución de la aplicación justamente por ese procedimiento. En ese procedimiento pondremos el código necesario para que, posteriormente, se muestre uno de los formularios. Esto es muy practico cuando queremos hacer una función previa a mostrar cualquier formulario (abrir una base de datos, por ejemplo). Para comenzar la aplicación por Main se elige esa opción en la lista Formulario Inicial.

768. ¡ Recuerde que Main debe estar en un Módulo !769. El cuadro de diálogo anterior sirve además para otras cosas. Entre ellas

poner el nombre del proyecto (nombre que no aparecerá por ninguna parte, solo en los datos internos de la aplicación) y su descripción.

770. En otra pestaña podemos configurar varias prestaciones del entorno de trabajo :

771. Guardar la aplicación antes de ejecutar. Esta prestación nos va a evitar muchos disgustos. Es muy práctico guardar la aplicación antes de ejecutarla, pues de esta forma evitamos que, si nuestra aplicación tiene un error tal que hagamos colgarse a Windows, siempre tendremos la aplicación metida en el disco duro. Pero

Page 52: Informe de programacion

también es una pequeña pesadez tener que esperar a que se guarde cada vez que la ejecutamos.

772. Si tenemos la activada la casilla Declaración de variables requerida nos pondrá automáticamente Option Explicit en el encabezamiento de todas las secciones de declaraciones de la aplicación.

773. Podemos elegir también las ventanas que queremos que estén siempre visibles, y que verifique automáticamente la sintaxis de una instrucción en el momento de escribirla.

774.

775.

Page 53: Informe de programacion

776. La pestaña de Editor nos permite fundamentalmente 2 cosas :777. Ver solamente el código correspondiente al procedimiento que estamos

escribiendo ó Ver el código del Módulo (o Formulario) completo. En este último caso es un poco mas difícil de manejar la ventana de código, sobre todo si el programador no está muy habituado a ello. Le presenta procedimiento tras procedimiento, separados por una línea. Para seleccionar una u otra opción hay que seleccionar o deseleccionar la casilla Ver módulo completo.

778. Cambiar el color de la letra y del fondo del código, según el tipo que sea (código, comentario, error devuelto, etc.). Los alumnos mas aventajados y con ganas de marear al profesor y, lo que es peor, a sus compañeros, conocen la forma de poner como invisible una parte del texto del código. Si observa comportamientos raros en el texto donde escribe el código, revise el cuadro de Colores de Código.

Como cualquier objeto Visual Basic, un formulario tiene propiedades y procedimientos:

PROPIEDADES.

Name Nombre

Define al objeto durante la ejecución del programa. Se introduce en tiempo de diseño y no se puede variar durante la ejecución. Nombre por defecto: Form1 (Form2 y sucesivos) Este nombre por defecto debe cambiarse, (debería cambiarse por norma en el momento de introducir el formulario), ya que de no hacerlo corremos el riesgo de borrar el código existente de otro formulario del mismo nombre en el momento de guardar la aplicación.

Caption Título

Es el texto que aparecerá en la barra de Título cada vez que aparezca en pantalla este formulario. No tiene otra función dentro del programa. El programa no accede a este formulario por el título, sino por el nombre. Puede cambiarse en tiempo de ejecución.

NOTA.- No confundir Nombre (Name) con Título (Caption)

Control BoxControl "menos" del Formulario Valor por defecto : True

Propiedad booleana que admite los valores de true (verdadero) o False (Falso). Si esta propiedad es True, aparecerá en la esquina superior izquierda el "menos" para desplegar el menú de control de este formulario. Si esta propiedad se pone como False, no existirá dicho "menos" y por tanto no se puede desplegar dicho menú.

MinButton

MaxButton Valor por defecto: True

Page 54: Informe de programacion

Botones (flechas) de minimizar y maximizar este formulario. Son igualmente propiedades booleanas, que admiten el valor True o False. Si están en true, aparecerá la flecha correspondiente. Si están en False, no aparecerá dicha flecha. Deben configurarse de una u otra forma, dependiendo si se quiere minimizar / maximizar este formulario durante la ejecución.

Nota. En los formularios MDI child, es necesario poner a true las propiedades ControlBox, MinButton y MaxButton para poder maximizar el formulario hijo. De no ponerlas a true, sí se pretende maximizar el formulario hijo, (Propiedad WindowState=2) el formulario no aparece.

BorderStyle Tipo de borde

Define el tipo de borde que tendrá el formulario durante la ejecución. No se puede cambiar en tiempo de ejecución,

Admite los siguientes valores:

0 - None El formulario no tiene borde alrededor

1 - Fixed Single

El formulario tendrá un borde fino, y no podrá cambiarse su tamaño durante el tiempo de ejecución. Con este valor, el formulario puede tener un menú de control, barra de título y botones de maximizar y minimizar. Solo podrá cambiarse de tamaño utilizando estos botones.

2-Sizable

El formulario tendrá borde grueso, y se podrá cambiar su tamaño en tiempo de ejecución mediante los botones de maximizar y minimizar, y mediante el arrastre de uno de los bordes con el ratón.

3 - Fixed Dialog

El formulario tendrá borde grueso, y no se podrá redimensionar durante la ejecución. No puede tener los botones de maximizar ni minimizar.

4 - Fixed ToolWindow

En las versiones de 16 bits de Windows y Windows NT 3.51 y anteriores se comporta como Fixed Single. No puede cambiar de tamaño. En Windows 95 muestra el botón Cerrar, y el texto de la barra de titulo aparece con un tamaño de fuente reducido. El formulario no aparece en la barra de tareas de W95.

5 - Sizable ToolWindow

Page 55: Informe de programacion

En las versiones de 16 bits se comporta como Sizable. En W95 muestra el botón Cerrar y el texto de la barra de titulo aparece con un tamaño de fuente reducido. El formulario no aparece en la barra de tareas de W95.

Valor por defecto: 2 . Sizable

Nota: Al cambiar a determinados valores, las propiedades MaxButton y MinButton se ponen a False. Pueden cambiarse a True posteriormente.

AppearanceApariencia Valor por defecto: 3D

Admite los valores 0 (=Flat, plano) y 1 (=3D) Si tiene el valor 1 (3D), el formulario aparecerá con cierto efecto tridimensional, y los controles que le introduzcamos a este formulario aparecerán como esculpidos dentro de él. Con valor 0 (Flat) en esta propiedad, el formulario aparecerá durante la ejecución como una superficie plana. El color de fondo se ve afectado al cambiar esta propiedad. Si se cambia a 3D, el fondo (Backcolor) toma el color definido en Windows en el Panel de Control. Si se cambia a Flat, toma el color blanco

Autoredraw Valor por defecto: False

Propiedad booleana. Esta propiedad, estando en True, permite actualizar el contenido del formulario y de sus controles incluso cuando no están visibles. Imaginemos que en este formulario existe un texto, una etiqueta (Label) o caja de texto (Text Box) cuyo texto se haya cambiado, bien por programa, bien por una entrada, mientras este formulario no estaba visible. Lo mismo podemos decir de las propiedades de cualquier otro control. Si esta propiedad Autoredraw está en False, al hacer visible este formulario, aparecerá igual que cuando se ocultó. Si esta propiedad está en True, aparecerá actualizado.

Backcolor Color del fondo

Establece el color del fondo del formulario. Puede cambiarse en tiempo de ejecución.

Valor por defecto: El establecido en el Panel de Control de Windows.

ClipControls Valor por defecto: False

Propiedad Booleana. Establece si un evento Paint vuelve a dibujar el objeto entero (True) o si solamente dibujan las partes que han sufrido cambios (False)

DrawMode

Establece un valor que determina el aspecto de la salida de un método gráfico o el aspecto de un control Shape o Line. Verá mas adelante los efectos de esta propiedad.

DrawStile Valor por defecto : 0

Page 56: Informe de programacion

Establece el estilo de línea de la salida de métodos gráficos:

Valores: 0 - Línea continua

1 - Rayas

2 - Puntos

3 - Raya-Punto

4 - Raya - Punto - Punto

5 - Transparente

6 - Continuo interior.

DrawWidth Valor por defecto: 1

Establece el ancho de una línea dibujada. El valor debe expresarse en pixeles.

Enabled Activado Valor por defecto: True

Propiedad booleana. Si está en True, el formulario está activado y se puede interactuar con él. Si está en False, se desactiva el formulario, impidiendo de esta forma, que se pueda trabajar con él.

ForeColor Valor por defecto: Negro

Establece el color del primer plano del formulario. Es el color que tendrán las letras si escribimos en él, o los dibujos, si lo que hacemos es dibujar. En tiempo de diseño, determina el color de la rejilla,.

FillStyleTipo de relleno Valor por defecto: 2

Establece el modo de rellenar controles Shape, o figuras (círculos o cuadrados) creados con los métodos gráficos Circle y Line.

Valores: 0 - Continuo

1 - Transparente

2 - Línea Horizontal

3 - Línea Vertical

4 - Diagonal hacia arriba

Page 57: Informe de programacion

5 - Diagonal hacia abajo

6 - Cruzado

7 - Diagonal cruzada

FillColorColor de relleno

Especifica el color del relleno contemplado en FillStyle.

FontTipo de letra Valor por defecto: El determinado en la personalización.

Especifica el tipo y tamaño de la letra que se usará en el formulario. Al seleccionar esta propiedad en la ventana de propiedades, aparece un cuadro de dialogo donde se eligen ambos parámetros.

Cuando introduzca nuevos controles en el Formulario, la propiedad Font de estos controles tomará el valor que tenga esta propiedad en el Formulario. Puede servirle este pequeño truco para utilizar en todos los controles una determinada fuente sin tener que teclearla para cada control.

FontTranparentTexto Transparente Valor por defecto: True

Establece si el texto o gráfico de fondo del formulario se muestra (True) o no se muestra entre los caracteres de texto escritos en el propio formulario.

FontSize Tamaño de letra

Establece el tamaño de la letra. Esta propiedad, que puede variarse en tiempo de ejecución, varía solamente el tamaño, y no el tipo de letra. El tamaño debe expresarse en puntos. Máximo, 2160 puntos.

FontBold, FontItalic, FontStrikethru, FontUnderline

Permiten, en tiempo de ejecución, cambiar un texto a negrita, cursiva, tachado y subrayado. Son propiedades booleanas True / False

HeightAltura Valor por defecto: No existe

Define la altura del formulario. El valor de esta propiedad no se introduce normalmente como un dato numérico, sino que toma el valor automáticamente, dependiendo de las dimensiones del formulario durante el tiempo de diseño. Puede cambiarse durante el tiempo de ejecución.

HelpContextID Valor por defecto: 0

Page 58: Informe de programacion

Establece un número de contexto asociado para este formulario. Este número se aplica para determinar la ayuda interactiva asociada a este formulario. Vea mas adelante, el tema Ayuda de Windows.

Puede tomar los siguientes valores : 0 - No se especifica número de contexto

>0 Un entero que especifique un contexto válido.

IconIcono

Esta propiedad define el icono que va a representar a este formulario cuando esté minimizado. Si el formulario es el formulario padre o formulario de inicio de una aplicación, este icono es el que toma el Asistente de Instalación para colocarlo como icono de apertura del programa en el grupo de programas Windows correspondiente. Como valor de esta propiedad se le puede asignar directamente el icono o el nombre de un archivo (con su path correspondiente) que lo contiene, haciéndolo directamente sobre la caja de propiedades.

Valor por defecto: el icono que se le haya programado en la personalización.

KeyPreview Valor por defecto: False

Propiedad Booleana. Cuando un formulario tiene dentro de sí varios controles, uno de ellos es el que está activo. En estas condiciones, si se pulsa una tecla, esa pulsación la recibe en primer lugar el control que esté activo, y si éste no la procesa, pasa esa pulsación al formulario. Para hacer que esa pulsación pase directamente al formulario, debe ponerse esta propiedad en True.

LeftBorde Izquierdo Valor por defecto: No existe

Indica la posición del borde izquierdo del formulario. Normalmente no se introduce como valor numérico, sino que lo toma automáticamente de la posición que tenga el formulario en el tiempo de diseño. Puede cambiarse en tiempo de ejecución, para mover el formulario.

LinkMode Valor por defecto: 0

Permite que una aplicación destino inicie una conversación DDE con el formulario (origen de datos). Puede tomar los siguiente valores:

0 - No hay interacción DDE

1 - Source. Indica que este Formulario es origen de una comunicación DDE. El dato que se va a traspasar en esa comunicación DDE estará en un TextBox, en un Label o en un PictureBox de este Formulario.

LinkTopic

Page 59: Informe de programacion

Establece el tema al que este formulario va a responder a una conversación DDE, cuando funciona como origen. Es por este tema por el que se debe llamar a este formulario cuando actúa de origen en una conversación DDE

MDIChild Valor por defecto: False

Establece que este formulario es un formulario Hijo dentro de un formulario MDI. No se puede cambiar en tiempo de ejecución. Es una propiedad booleana

True = es formulario hijo False =No lo es

MouseIcon Valor por defecto: ninguno

Establece un icono personalizado para el puntero del ratón cuando esté encima de este Formulario. Este icono puede ser un bit-map de los existentes en el directorio Icons de Visual Basic o cualquiera que tengamos. Si se pone 99 como valor de la propiedad MousePointer (siguiente), cada vez que el puntero del ratón pase por este Formulario, cambiará su forma y adoptará la del icono elegido.

MousePointer Valor por defecto: flecha

Determina la forma del puntero del ratón cuando se coloca encima del formulario. Puede elegirse uno de los punteros preestablecidos (15 en total) o el personalizado visto en la propiedad anterior. Para elegir ese icono personalizado, debemos poner en esta propiedad el valor 99.

Picture Gráfico Valor por defecto: No existe

Mediante esta propiedad podemos poner un gráfico como fondo del formulario. El gráfico puede ser un bit-map o un fichero .ICO

ScaleHeight, ScaleWidth, ScaleMode,

Indican la unidad de medida de dimensión de altura y anchura del Formulario. ScaleMode indica en qué unidades de medida se van a medir esas dimensiones. Acepta Twips (1), Point(2), Pixel (3), Character (4), Pulgadas (Inch) (5), Milímetros (6), Centímetros (7). Si colocamos la propiedad ScaleMode en cualquiera de estos valores, las propiedades ScaleHeight y ScaleWidth nos vendrán dadas automáticamente dependiendo del ancho del Formulario, y no se extrañe si encuentra para estas propiedades valores tan peregrinos como 4815 y 7423. Al haber elegido la unidad de medida, los valores de ancho (ScaleWidth) y alto (ScaleHeight) serán los que tengan que ser, medidos en la unidad que hemos elegido. Podemos elegir una cifra para el ancho y el alto del Formulario de forma que podamos controlar mejor las distintas posiciones que van a ocupar en él los controles, los textos o los dibujos. Podemos poner, por ejemplo, que el Formulario mida 400 de ancho (ScaleWidth = 400) y 300 de alto (ScaleHeight = 300) forzándole estas propiedades, bien en tiempo de diseño en la caja de propiedades, o en tiempo de ejecución mediante código.

Page 60: Informe de programacion

Entonces sabemos que el formulario, independientemente de las dimensiones físicas que tenga sobre la pantalla, medirá 400 de ancho y 300 de alto, y si en estas condiciones queremos colocar un control o un dibujo justo en el medio del Formulario, sabemos que tenemos que colocarle en las coordenadas 200, 150. ¿Que unidad de medida estaremos utilizando entonces en el Formulario ? Unas definidas por el usuario (distintas para el ancho y el alto) que serán las necesarias para que el Formulario mida de ancho lo que le hayamos puesto en la propiedad ScaleWidth y de alto lo que le hayamos puesto en la propiedad ScaleHeight. Observe que la propiedad ScaleMode se ha cambiado automáticamente a User (0) al introducir las dimensiones de ancho y alto que nosotros queremos.

Estas unidades de medida afectarán a los controles que metamos en este Formulario. Se medirán en su ancho y alto con la unidad de medida definida para el ancho y alto del Formulario. Lógicamente también afectará a las propiedades Left y Top de los controles, pero estas propiedades se verán afectadas además por las propiedades ScaleLeft y ScaleTop del Formulario que se verán a continuación.

ScaleLeft, ScaleTop

Estas propiedades, medidas en la unidad de medida elegida para el ancho y alto mediante las propiedades ScaleMode, ScaleWidth y ScaleHeight anteriores, expresan las coordenadas iniciales de la parte izquierda y de la parte superior respectivamente del Formulario. Estas propiedades no afectan a la posición del Formulario en la pantalla (Si está maximizado seguirá ocupando toda la pantalla, si está en "Normal" ocupará el mismo sitio que se dio en tiempo de diseño). Supongamos que se le asigna a un Formulario, las propiedades ScaleWidth = 400, y ScaleHeight = 300. Si colocamos un control justamente en el centro del Formulario tendrá sus propiedades Top =150 y Left=200. Si ponemos ahora las propiedades del Formulario ScaleLeft a 30 y ScaleTop a 10, ese control, para seguir en el centro del Formulario deberá tener sus propiedades Top a 160 (150 + 10) y Left a 230 (200 + 30).

Recuerde que las medidas de un formulario crecen, desde la esquina superior izquierda, según avanzamos hacia abajo y hacia la derecha.

Como aclaración de las relaciones entre distintas unidades de medida, puede ver en la siguiente table la correspondencia entre cada una de ellas y la unidad imaginaria Twip.

1 Point=20 Twips ; 1Pixel=15 Twips : 1 Charecter=240 Twips ; 1 Inch (pulgada) =1440 Twips 1mm=56,52 Twips 1 cm=566 Twips

Tag Valor por defecto: No existe

Esta propiedad no la usa directamente Visual-Basic. Sirve para asociar al formulario información adicional para fines externos a la programación. Pero también le puede servir para almacenar en ella una variable para que la use un código ajeno al formulario. El autor de estos apuntes tiene por costumbre utilizar la propiedad Tag del formulario inicial para guardar el parámetro que se le pasa a algunos programas para acceder a ellos con unos determinados privilegios. Resumiendo, está ahí para lo que el programador quiere.

Page 61: Informe de programacion

TopPosición del borde superior Valor por defecto: No existe

Esta propiedad establece la posición del borde superior del formulario. Normalmente no se introduce como valor numérico sino que lo toma automáticamente de la posición que tenga el Formulario durante el tiempo de diseño Este valor puede cambiarse durante la ejecución para, conjuntamente con Left, variar la posición del Formulario. Los valores de Top y Left definen la esquina superior izquierda del Formulario.

Visible Valor por defecto: True

Propiedad Booleana. Asignándole el valor True la pantalla es visible, y asignándole el valor False, no se ve. Este valor puede cambiarse durante el tiempo de ejecución para ocultar y hacer visible el formulario.

WidthAncho Valor por defecto: No existe

Define la anchura del formulario. Normalmente no se introduce como valor numérico sino que lo toma automáticamente del tamaño que tenga el formulario durante el tiempo de diseño. Juntamente con Height define el tamaño del formulario. Puede cambiarse durante el tiempo de ejecución.

WindowState

Establece el estado en el que aparecerá el formulario cuando se activa y presenta en pantalla. Admite tres opciones:

0 - Normal El formulario recupera la posición y tamaño que tenía en el tiempo de diseño.

1 - Minimizado El formulario aparece minimizado, representado por su icono.

2 - Maximizado El formulario aparece maximizado, ocupando toda la pantalla.

PROCEDIMIENTOS

ActivateActivación ClickClick

DblClickDoble click DeactivateDesactivación

DragDropArrastrar y soltar DragOverArrastrar por encima

GotFocusObtener el foco KeyDown Mantener pulsada una tecla

KeyPressPulsar una tecla KeyUpSoltar una tecla

LinkErrorError de enlace LinkExecuteEjecución de un enlace de datos

Page 62: Informe de programacion

LinkOpenRomper el enlace LoadCargar el formulario

LostFocusPerder el foco MouseDownPulsar una tecla del ratón

MouseMoveMover el ratón (Detecta la posición del ratón sobre el formulario)

MouseUpSoltar una tecla del ratón PaintPintar

QueryUnloadConfirmación de descarga ResizeCambio de tamaño

UnloadDescargar el formulario

Un Formulario sirve, fundamentalmente, de contenedor de controles. Es la ventana de Windows de nuestra aplicación. Una aplicación puede tener varios Formularios y dentro de cada uno de ellos, los controles necesarios para cada paso o estado de la aplicación.

Un Formulario puede servir también como soporte de textos o dibujos.

CONTROLES

Una vez introducido un Formulario, se pueden colocar los objetos (controles) que forman parte de la aplicación. Estos controles se irán viendo en próximos capítulos.

Los controles, lo mismo que el Formulario, tienen Propiedades y Procedimientos.

Las Propiedades definen las características del Control. Los Procedimientos definen la forma de actuar (la forma de proceder) de un control frente a un evento.

Tanto las propiedades como los procedimientos deben ser definidos por el programador. Las propiedades dejan un pequeño margen de actuación, los procedimientos son en su totalidad, definidos por el programador. Estos procedimientos forman parte del programa. Podría incluso hacerse una aplicación que no tuviese mas código que el introducido en los procedimientos.

Para colocar un control en un Formulario, basta con "tomarlo" de la caja de herramientas existente en la parte izquierda de la pantalla de VB y llevarlo al Formulario. Si no existiese el control deseado en la caja de herramientas, deberemos ir a "cogerlo" a Controles personalizados que está en el menú desplegable Herramientas de la barra de Menú de VB. Se elige el nuevo control, marcando la caja de opción a la izquierda de su nombre, y haciendo click en ACEPTAR. Este control ya pasa a la caja de herramientas.

COMMAND BUTTONBOTON DE COMANDO

_______________________________________

Page 63: Informe de programacion

El Command Button es un objeto que sirve para introducir datos a través de la pantalla. El Botón de Comando tiene la siguiente forma:

El botón de comando puede usarse para la entrada de datos con el ratón, o para validar cualquier operación. El tamaño puede cambiarse a voluntad, pero la forma siempre es rectangular. En la figura anterior vemos dos botones de comando, uno de ellos (el Command2) marcado con unos puntos en su contorno. Estos puntos nos permiten variar su tamaño en tiempo de diseño. También puede cambiarse su tamaño y posición en tiempo de ejecución.

PROPIEDADES

NameNombre

Es el nombre que define a este objeto durante la ejecución del programa. No se puede cambiar en tiempo de ejecución. El nombre por defecto es Command1, Command2, etc. Estos nombres por defecto deberían cambiarse por otros que nos indiquen algo respecto a este control, aunque en este caso no es tan imprescindible como para los formularios.

CaptionTítulo

Es el texto que aparece en el botón. Puede cambiarse en tiempo de ejecución. No tiene otra función dentro del programa.

NOTA.- No confundir Nombre (Name) con Título (Caption)

Appearance Apariencia

Determina la forma del botón. Admite los valores de Flat (Plano) y 3D. No se aprecia en gran medida la diferencia.

BackcolorColor de fondo

Es el color de un pequeño cuadrado que aparece rodeando el título, NO el color del botón, que es invariable. Puede cambiarse en tiempo de ejecución.

Cancel

Establece un valor que indica si un botón de comando es el botón Cancelar de un formulario. Es una propiedad booleana, y admite los valores True o False. Puede utilizar la propiedad Cancel para dar al usuario la opción de cancelar los cambios que no se han hecho

Page 64: Informe de programacion

efectivos y devolver el formulario a su estado anterior. En un formulario sólo puede haber un botón de comando con la propiedad Cancel = True.

Default

Establece un valor que determina el control CommandButton que es el botón de comando predeterminado de un formulario. Sólo un botón de comando de un formulario puede ser el botón de comando predeterminado. Cuando Default se define a True para un botón de comando, se define automáticamente a False para el resto de los botones de comando del formulario. Cuando la propiedad Default del botón de comando está establecida a True y su formulario primario está activo, el usuario puede elegir el botón de comando (invocando su evento Click) presionando ENTRAR. Cualquier otro control que tuviera el enfoque no recibe evento de teclado (KeyDown, KeyPress o KeyUp) de la tecla ENTRAR a menos que el usuario haya movido el enfoque a otro botón de comando del mismo formulario. En este caso, al presionar ENTRAR se elige el botón de comando que tiene el enfoque en lugar del botón de comando predeterminado.

DragIcon

Establece el icono que se presenta como puntero en una operación de arrastrar y colocar.

DragMode

Establece un valor que determina si se usa el modo de arrastre manual o automático en una operación de arrastrar y colocar. Los valores posibles de número son:

0 Manual (Predeterminado)

1 Automático

Enabled Habilitado

Propiedad Booleana que habilita o deshabilita el botón. Cuando está deshabilitado (Enabled = False), el botón no tiene efecto, y su apariencia varía, presentando un tono pálido tanto en su cuerpo como en su título. Puede variarse en tiempo de ejecución.

Font Fuente

Es el tipo de letra para el título. Puede cambiarse en tiempo de ejecución.

Height Altura

Establece la altura del botón. Normalmente esta propiedad no se introduce numéricamente, sino que la toma automáticamente de las dimensiones que se le den al botón en tiempo de diseño. Puede cambiarse, cambiando el valor a esta propiedad, en tiempo de ejecución.

Page 65: Informe de programacion

HelpContextID

Establece un número de contexto asociado para este control. Este número se aplica para determinar la ayuda interactiva.

Puede tener los siguientes valores:

0 = No se especifica número de contexto

>0 Un entero que especifica un contexto válido.

Index Indice

En el caso de que se tengan varios botones que realicen una función similar (Las teclas numéricas de una calculadora, p.e.) puede hacerse un array con estos botones de comando. Todos tendrán el mismo nombre, y se diferencian por un índice. Esta propiedad Index toma el número de ese índice.

Left

Posición de su parte izquierda. Indica la posición del botón, concretamente de la parte izquierda del mismo. Normalmente esta propiedad no se introduce numéricamente, sino que la toma automáticamente de la posición que se le de al botón en tiempo de diseño. Puede cambiarse, cambiando el valor a esta propiedad, en tiempo de ejecución.

MouseIconIcono para el puntero del ratón

Determina el icono que presenta al puntero del ratón cuando pasa por encima del botón, cuando se especifica en la propiedad MousePointer que el puntero del ratón es el definido por el usuario. (Custom)

MousePointer Puntero ratón

Determina la forma del puntero del ratón cuando éste pasa por encima del botón. Puede elegirse uno de los punteros preestablecidos (15) o incluso uno diseñado especialmente. Para especificar que el puntero es uno diseñado especialmente, hay que poner a esta propiedad el valor 99 (Custom), y en este caso aparecerá el icono determinado por la propiedad MouseIcon

TabIndex Nº de orden para tabulador

Cuando disponemos de varios controles en un mismo formulario, solamente uno de ellos tiene el foco. Esta expresión de tener el foco significa que ese control está remarcado y en esa condición, si pulsamos la tecla ENTER haría el mismo efecto que hacer click con el ratón en ese control. Esto es necesario, ya que existen ordenadores que no disponen de ratón (típico de algunos portátiles). En estos casos, para elegir uno u otro control debemos

Page 66: Informe de programacion

pulsar repetidas veces la tecla TABulador. El foco irá cambiando de uno a otro control (pueden ser controles de distinto tipo) cada vez que pulsemos la tecla TABulador. Esta propiedad TabIndex marca el orden que seguirá el foco a través de cada control.

TabStopSale del control de la tecla TAB

Propiedad booleana. Cuando esta propiedad está a False, el botón no tomará el foco cuando se pulse la tecla del Tabulador. Sin embargo sigue manteniendo el índice de la propiedad TabIndex descrita anteriormente. Puede cambiarse en tiempo de ejecución. Esto nos permite descartar algún botón de tomar el foco, cuando por facilidad para el usuario, sea conveniente en determinados puntos del programa.

Tag

Esta propiedad no la usa directamente Visual-Basic. Sirve para asociar a este control alguna información adicional para fines externos a la programación. Similar a la del formulario.

Top

Indica la coordenada de la parte superior del control. Puede variarse durante el tiempo de ejecución. Esta propiedad, juntamente con Left definen la esquina superior izquierda del botón de comando. Normalmente esta propiedad no se introduce numéricamente, sino que la toma automáticamente de la posición que se le den al botón en tiempo de diseño. Puede cambiarse, cambiando el valor a esta propiedad, en tiempo de ejecución.

VisibleVisible

Propiedad Booleana. Si es true, el botón se ve, si es False el botón no se ve. Puede cambiarse en tiempo de ejecución. De hecho, es un recurso muy usado para dejar visibles en un formulario, solamente los objetos (controles) necesarios.

WhatThisHelpID (Propiedad, Windows 95)

Devuelve o establece un número de contexto asociado a un objeto. Se utiliza para dotar a las aplicaciones de Ayuda interactiva con el menú emergente ¿Qué es esto? de la Ayuda de Windows 95.

Width Ancho

Define el ancho del botón. Con Height determina la dimensión del botón.

PROCEDIMIENTOS DEL BOTON DE COMANDO

Click DragDrop DragOver GotFocus

KeyDown KeyPress KeyUp LostFocus

Page 67: Informe de programacion

MouseDown MouseMove MouseUp

¡ El botón de Comando no tiene el procedimiento DbClick !

LABEL ETIQUETA

____________________

Una etiqueta es un control que nos permite presentar un texto. La etiqueta debe usarse en aquellos casos en los que exista una información estática o dinámica que no deba ser cambiada por el operador.

Puede adoptar estas formas: con borde tridimensional, borde plano o sin borde, y el texto justificado a la izquierda, a la derecha o centrado.

Se ha incluido la trama para poder observar los límites de la etiqueta sin borde.

PROPIEDADES

AlignmentJustificación

Establece si el texto se justifica a la izquierda, a la derecha, o se centra sobre la etiqueta.

Appearance Apariencia Plana o tridimensional.

AutosizeTamaño

Propiedad booleana. Si se pone a True, el tamaño de la etiqueta se ajusta al texto que contiene.

BackcolorColor de fondo

Es el color de fondo de la etiqueta. Puede cambiarse en tiempo de ejecución.

Page 68: Informe de programacion

BackStyle Tipo de fondo

Opaco o transparente. Cuando se selecciona transparente, se ve solamente el texto de la etiqueta. Cuando se selecciona opaco, este texto se vé sobre un fondo gris.

BorderStyleTipo de borde

Sin borde o con borde. En caso de haber elegido en la propiedad Appearance el modo tridimensional, y eligiendo con borde en esta propiedad, el aspecto adopta una forma como incrustada en el formulario.

CaptionTítulo

Es el texto de la etiqueta. Puede cambiarse en tiempo de ejecución, lo que permite usar la etiqueta como dispositivo de presentación de textos. No se puede cambiar por el procedimiento de arrastrar con el ratón, por lo que es el control adecuado cuando se quiere presentar un texto que no se pueda cambiar por el operador.

DataField DataSource

Establecen la base de datos y el campo donde está el texto Datos que se llevará a la propiedad Caption. Estas propiedades permiten presentar los datos de una Base de Datos mediante un procedimiento muy sencillo, con la ayuda de un control Data (Se verá mas adelante)

DragIcon

Establece el icono que se presenta como puntero en una operación de arrastrar y colocar.

DragMode

Establece un valor que determina si se usa el modo de arrastre manual o automático en una operación de arrastrar y colocar. Los valores posibles de número son:

0 Manual (Predeterminado)

1 Automático

Enabled Habilitado

Propiedad Booleana que habilita o deshabilita la etiqueta Cuando está deshabilitado (Enabled = False), no tienen efecto los eventos que se produzcan sobre ella, y su apariencia varía, presentando un tono pálido tanto en su cuerpo como en su título. Puede variarse en tiempo de ejecución.

Font Fuente

Page 69: Informe de programacion

Es el tipo de letra para el título. Puede cambiarse en tiempo de ejecución.

ForeColor

Es el color de la letra de la etiqueta. Puede cambiarse en tiempo de ejecución.

Height Altura

Establece la altura de la etiqueta. Normalmente esta propiedad no se introduce numéricamente, sino que la toma automáticamente de las dimensiones que se le den a la etiqueta en tiempo de diseño.

Index Indice

En el caso de que se tengan varios etiquetas que realicen una función similar puede hacerse un array con etiquetas. Todas tendrán el mismo nombre, y se diferencian por un índice. Esta propiedad Index toma el número de ese índice.

Left Posición de su parte izquierda

Indica la posición de la etiqueta, concretamente de su parte izquierda. Normalmente esta propiedad no se introduce numéricamente, sino que la toma automáticamente de la posición que ocupaba en tiempo de diseño. Puede cambiarse, cambiando el valor a esta propiedad, en tiempo de ejecución.

LinkItem LinkMode LinkTimeout LinkTopic

Estas propiedades establecen la forma en que debe llevarse a cabo una conexión DDE con otra aplicación. Se verán con mas detalle al estudiar los enlaces DDE

MouseIconIcono del puntero del ratón

MousePointer Puntero ratón

Para estas propiedades es aplicable todo lo dicho para las mismas en el Botón de Comando

NameNombre

Es el nombre de la etiqueta con el que se le conocerá a lo largo del programa

TabIndex Nº de orden

Al igual que para los botones de comando, la etiqueta tiene propiedad TabIndex. Sin embargo, una etiqueta NUNCA tomará el foco. Vea la propiedad UseMneumonic mas adelante.

Page 70: Informe de programacion

Tag

Esta propiedad no la usa directamente Visual-Basic. Sirve para asociar a este control alguna información adicional para fines externos a la programación.

Top

Indica la coordenada de la parte superior del control. Puede variarse durante el tiempo de ejecución. Esta propiedad, juntamente con Left definen la esquina superior izquierda del botón de comando. Normalmente esta propiedad no se introduce numéricamente, sino que la toma automáticamente de la posición que se le den a la etiqueta en tiempo de diseño. Puede cambiarse, cambiando el valor a esta propiedad, en tiempo de ejecución.

UseMneumonic

Devuelve o establece un valor que indica si al incluir el signo (&) en el texto de la propiedad Caption del control Label se define una tecla de acceso. Es una propiedad Booleana.

Los valores que puede tomar son True o False.

True (Predeterminado) Los caracteres (&) que aparezcan en el texto de la propiedad Caption definen al carácter siguiente como tecla de acceso. El signo (&) no aparece en la interfaz del control Label.

False Los caracteres (&) que aparezcan en el texto de la propiedad Caption aparecen como tales en la interfaz del control Label.

En tiempo de ejecución, al presionar ALT+ la tecla de acceso definida en la propiedad Caption del control Label, el enfoque se desplaza al control siguiente al control Label en el orden de tabulación.

VisibleVisible

Propiedad Booleana. Si es true, la etiqueta se ve, si es False no se ve. Puede cambiarse en tiempo de ejecución.

WhatThisHelpID (Propiedad, Windows 95)

Devuelve o establece un número de contexto asociado a un objeto. Se utiliza para dotar a las aplicaciones de Ayuda interactiva con el menú emergente ¿Qué es esto? de la Ayuda de Windows 95.

Width Ancho

Define el ancho de la etiqueta. Con Height determina la dimensión de la misma.

Page 71: Informe de programacion

WordWrap

Devuelve o establece un valor que indica si un control Label con el valor True en su propiedad AutoSize se expande vertical u horizontalmente para adaptarse al texto especificado en su propiedad Caption. Es una propiedad Booleana.

Esta propiedad puede cambiarse en tiempo de ejecución

True El control Label se expande o contrae horizontal y verticalmente para adaptarse al texto y al tamaño de la fuente. Contempla para la expansión horizontal la colocación de los espacios del texto.

False (Predeterminado) El texto no se ajusta a la siguiente línea; el control Label se expande o contrae horizontalmente para adaptarse a la longitud del texto y verticalmente para adaptarse al tamaño de la fuente y al número de líneas.

Nota Si se establece False en AutoSize, el texto siempre se ajustará a la línea siguiente, independientemente del tamaño del control Label y del valor de la propiedad WordWrap. Esto puede ocultar parte del texto, ya que el control Label no se expande en ninguna dirección.

PROCEDIMIENTOS DEL LABEL

Click Change DbClick DragDrop

DragOver LinkClose LinkError LinkNotify

TEXT BOXCAJAS DE TEXTO

_____________________________

Las cajas de texto son los controles en los que Visual Basic presenta o introduce textos. Es por tanto un control bidireccional. Normalmente se usan para introdución de textos, o para la presentación de aquellos que el operador pueda cambiar. Para cambiar o escribir un texto en una caja de texto, basta con conseguir que esa caja de texto tenga el foco y teclear el texto en el teclado. Esto se puede lograr, bien haciendo click con el ratón en esa caja de texto, bien con la tecla TAB, bien por programa.

La caja de texto no se debe usar nunca para presentar textos que el operador de la aplicación no deba cambiar. Úsese para ello la etiqueta, control no bidireccional, que además tiene la ventaja de ocupar menos memoria de programa.

Las cajas de texto pueden tener una o varias líneas, según esté la propiedad Multiline. La capacidad máxima de una caja de textos es de 64 Kbytes.

Page 72: Informe de programacion

La forma de una caja de texto es la siguiente, dependiendo de las propiedades BorderStyle y Appearance:

PROPIEDADES

AlignmentJustificación

Establece si el texto se justifica a la izquierda, a la derecha, o se centra sobre la etiqueta. Esta propiedad solamente tiene efecto cuando la propiedad Multiline está a True, ignorándose en caso contrario. Es decir, permite colocar el texto justificado a la derecha cuando ese texto puede ser de varias líneas. Para una única línea, se justifica siempre a la izquierda.

Esta propiedad no puede cambiarse en tiempo de ejecución, pero sí puede leerse en que condición está.

Appearance Apariencia

Plana o tridimensional.

BackcolorColor de fondo

Es el color de fondo de la caja de texto. Puede cambiarse en tiempo de ejecución.

BorderStyleTipo de borde

Sin borde o con borde. En caso de haber elegido en la propiedad Appearance el modo tridimensional, y eligiendo con borde en esta propiedad, el aspecto adopta una forma como incrustada en el formulario.

DataField

DataSourceFuente de Datos

Establecen la base de datos y el campo donde está el texto que se llevará a la propiedad Text. Estas propiedades permiten presentar de una forma muy sencilla datos de una Base de Datos. Se verán cuando se estudie el control Data y el motor de bases de datos

Page 73: Informe de programacion

DragIcon

Establece el icono que se presenta como puntero en una operación de arrastrar y colocar.

DragMode

Establece un valor que determina si se usa el modo de arrastre manual o automático en una operación de arrastrar y colocar. Los valores posibles de número son:

0 Manual (Predeterminado)

1 Automático

Enabled Habilitado

Propiedad Booleana que habilita o deshabilita la etiqueta Cuando está deshabilitado (Enabled = False), no tienen efecto los eventos que se produzcan sobre el TextBox. No se puede escribir el él ni pasarle el foco, pero sí se le puede cambiar el texto mediante el programa. Puede ser una buena alternativa para impedir que el usuario pueda cambiar un determinado texto. Esta propiedad puede variarse en tiempo de ejecución.

Font Fuente

Es el tipo de letra que se utilizará en el TextBox. Puede cambiarse en tiempo de ejecución.

ForeColorColor de la letra

Determina el color de las letras del texto.

Height Altura

Establece la altura de la caja de texto. Normalmente esta propiedad no se introduce numéricamente, sino que la toma automáticamente de las dimensiones que se le den a la caja en tiempo de diseño.

HelpContextID

Establece un número de contexto asociado para este control. Este número se aplica para determinar la ayuda interactiva.

Puede tener los siguientes valores:

0 = No se especifica número de contexto

>0 Un entero que especifica un contexto válido.

Page 74: Informe de programacion

Index Indice

En el caso de que se tengan varias cajas de texto que realicen una función similar puede hacerse un array con ellas. Todas tendrán el mismo nombre, y se diferencian por un índice. Esta propiedad Index toma el número de ese índice.

Left Posición de su parte izquierda.

Indica la posición de la caja de texto, concretamente de su parte izquierda. Normalmente esta propiedad no se introduce numéricamente, sino que la toma automáticamente de la posición que ocupaba en tiempo de diseño. Puede cambiarse, cambiando el valor a esta propiedad, en tiempo de ejecución.

LinkItem LinkMode LinkTimeout LinkTopic

Estas propiedades establecen la forma en que debe llevarse a cabo una conexión DDE con otra aplicación. Se verán con mas detalle al estudiar los enlaces DDE

Locked

Establece si el texto se puede editar, es decir, cambiar. Cuando se pone esta propiedad a True, el texto existente en la caja puede resaltarse con el ratón, e incluso copiarlo al portapapeles, pero no puede variarse tecleando un nuevo texto. Se puede cambiar por programa, cambiando la propiedad Text.

Si está en False, puede cambiarse el texto mediante teclado.

MaxLenght

Indica, si se establece, la longitud máxima del texto.

MouseIconPuntero del ratón personalizado

MousePointer Puntero ratón

Determina la forma del puntero del ratón cuando éste pasa por encima de la caja de texto. Puede elegirse uno de los punteros preestablecidos en esta propiedad, (15 en total) e incluso un puntero personalizado en la propiedad MouseIcon. Para que aparezca este puntero personalizado, MousePointer debe ponerse al valor 99. Lo típico para esta propiedad es el I-Beam (barra vertical)

NameNombre

Es el nombre de la caja de texto con el que se le conocerá a lo largo del programa

PasswordChar

Page 75: Informe de programacion

En ocasiones, es conveniente que no se pueda leer lo que se escribe en la caja de texto, caso por ejemplo de la entrada de un password o palabra de paso. Esta propiedad nos permite indicar un carácter que sustituye a cualquier carácter que tenga la caja de texto. (Típicos el * o ?). El texto que tenga en la propiedad Text no cambia por el hecho de presentar en pantalla un carácter distinto. Esta propiedad puede cambiarse en tiempo de ejecución. Para quitar el PasswordChar basta con forzarlo al carácter nulo : Text1.PasswordChar = ""

Esta propiedad se ignora cuando la propiedad Multiline está a True.

ScrollBars

Cuando la propiedad Multiline de la caja de texto está a True, se pueden colocar barras de desplazamiento del texto hacia arriba y abajo, o hacia los lados. Esto nos permite tener una caja de texto de tamaño reducido y poder leer en ella un texto mayor que la propia caja. Esta propiedad puede tomar los siguiente valores :

0 - No salen barras

1 - Barras de desplazamiento horizontal

2 - Barras de desplazamiento vertical

3 - Ambas barras.

TabIndex Nº de orden para obtener el foco

Al igual que para los botones de comando, esta propiedad para tabulador marca el orden en el que le llegará el foco al pulsar la tecla TAB

Tag

Esta propiedad no la usa directamente Visual Basic. Sirve para asociar a este control alguna información adicional para fines externos a la programación.

Top

Indica la coordenada de la parte superior del control. Puede variarse durante el tiempo de ejecución. Esta propiedad, juntamente con Left definen la esquina superior izquierda de la caja de texto. Normalmente esta propiedad no se introduce numéricamente, sino que la toma automáticamente de la posición que se le de en tiempo de diseño. Puede cambiarse, cambiando el valor a esta propiedad, en tiempo de ejecución.

VisibleVisible

Propiedad Booleana. Si es true, la caja de texto se ve, si es False no se ve. Puede cambiarse en tiempo de ejecución.

Page 76: Informe de programacion

WhatThisHelpID (Propiedad, Windows 95)

Devuelve o establece un número de contexto asociado a un objeto. Se utiliza para dotar a las aplicaciones de Ayuda interactiva con el menú emergente ¿Qué es esto? de la Ayuda de Windows 95.

Width Ancho

Define el ancho de la caja de texto. Con Height determina la dimensión de la misma.

PROCEDIMIENTOS DE LA CAJA DE TEXTO

Click Change DblClick DragDrop DragOver GotFocus

KeyDown KeyPress KeyUp LinkClose

FRAME RECUADRO

Se obtiene directamente de la caja de herramientas

Tiene la siguiente forma :

Un control Frame proporciona un agrupamiento identificable para controles. También puede utilizar un Frame para subdividir un formulario funcionalmente por ejemplo, para separar grupos de controles OptionButton.

Para agrupar controles, en primer lugar trace el control Frame y, a continuación, meta los controles dentro de Frame. De este modo podrá mover al mismo tiempo el Frame y los controles que contiene. Si traza un control fuera del Frame y, a continuación, intenta moverlo dentro de éste, el control se colocará sobre el Frame, pero no pertenecerá a el. Es decir, si es un OptionButton este se comportará como si estuviese fuera del Frame, aunque físicamente esté dentro de el.

Page 77: Informe de programacion

Cuando un control Frame tiene dentro otros controles, y hacemos invisible al Frame, mediante su propiedad Visible = False, los controles interiores al Frame quedan también invisibles.

PROPIEDADES

Las señaladas con (*) no presentan novedades respecto a las ya comentadas para los controles precedentes.

Appearance (*)

Backcolor (*)

CaptionEs el título que aparece en el borde del Frame.

ClipControls

Si esta propiedad está a True, los métodos gráficos en eventos Paint vuelven a dibujar el objeto entero. Antes del evento Paint se crea una zona de recorte alrededor de los controles no gráficos del formulario. Si esta propiedad está a False dibujarán solamente las áreas últimamente expuestas. En tiempo de ejecución, esta propiedad es de sólo lectura.

DragIcon(*)

DragMode(*)

Enabled

Cuando esta propiedad está a False, tanto los procedimientos asociados al propio control Frame como todos los controles dentro del Frame estarán inhabilitados. Si esta propiedad está a True, todos ellos están habilitados.

Font

En esta propiedad, el tipo de letra afecta solamente al título del Frame, no a los controles internos a el.

ForeColor

Color de las letras del título del Frame.

Height(*)

HelpContextID(*)

Index(*)

Page 78: Informe de programacion

Left(*)

MouseIcon(*)

MousePointer(*)

Name(*)

TabIndex(*)

Tag(*)

Top(*)

Visible

Cuando un Frame está con la propiedad Visible = False, tanto el propio Frame como todos los controles interiores a el serán invisibles.

WhatsThisHelpID(*)

Width(*)

PROCEDIMIENTOS DEL FRAME

Click DblClick DragDrop DragOver MouseDown

MouseMove MouseUp

CHECK BUTTON Y OPTION BUTTON (BOTONES DE ELECCION Y OPCION)

Se obtienen directamente de la caja de herramientas.

Dada la similitud de ambos controles, se comentan conjuntamente.

El control CheckBox, o casilla de verificación, permite elegir una opción (activada/desactivada, True/False) que el usuario puede establecer o anular haciendo click. Una X en una casilla de verificación indica que está seleccionada, activada, o con valor True. Cada casilla de verificación es independiente de las demás que puedan existir en el

Page 79: Informe de programacion

formulario, pudiendo tomar cada una de ellas el valor True o False, a voluntad del operador.

Un control OptionButton muestra una opción que se puede activar o desactivar, pero con dependencia del estado de otros controles OptionButton que existan en el formulario.

Generalmente, los controles OptionButton se utilizan en un grupo de opciones para mostrar opciones de las cuales el usuario sólo puede seleccionar una. Los controles OptionButton se agrupan dibujándolos dentro de un contenedor como un control Frame, un control PictureBox o un formulario. Para agrupar controles OptionButton en un Frame o PictureBox, dibuje en primer lugar el Frame o PictureBox y, a continuación, dibuje dentro los controles OptionButton. Todos los controles OptionButton que están dentro del mismo contenedor actúan como un solo grupo, e independientes de los controles OptionButton de otros grupos distintos.

Aunque puede parecer que los controles OptionButton y CheckBox funcionan de forma similar, hay una diferencia importante: Cuando un usuario selecciona un OptionButton, los otros controles del mismo grupo OptionButton dejan de estas disponibles automáticamente. Por contraste, se puede seleccionar cualquier número de controles CheckBox.

En el ejemplo de la figura, existen tres grupos de OptionButton, uno en un PictureBox, que actúa, al tiempo que como cuadro de imagen, como contenedor de controles OptionButton. Otro grupo está en el interior de un control Frame, y el otro grupo está en el formulario. Los tres grupos son independientes entre sí, pero interiormente al grupo solamente puede seleccionarse uno de los OptionButton que lo componen.

En el formulario también existen tres CheckBox, que como puede verse, se pueden seleccionar los que se desee, sin ningún tipo de exclusión entre ellos.

PROPIEDADES

Page 80: Informe de programacion

Las señaladas con (*) son comunes a ambos controles y no presentan novedades respecto a las ya comentadas para los controles precedentes.

AlignmentComún a ambos controles.

Admite los siguientes valores :

0 - Left Justify

1 - Right Justify

Cuando se elige el valor 0, justificado a la izquierda, el título del control aparece a la derecha del botón, pegado a la figura del botón. Cuando se elige el valor 1, justificado a la derecha, el título (Caption) aparece a la izquierda del botón, comenzando en la parte izquierda del cuerpo total del control, es decir, no tiene porqué aparecer con su parte derecha pegado al botón, caso que el cuerpo total del control se haya hecho mas largo que la palabra del título.

Appearance (*)

Backcolor (*)

Caption(*).

DataField DataSource Propiedades del CheckBox solamente.

Establecen la base de datos y el campo donde están los datos (True / False) que se llevarán a la propiedad Value . Al igual que en los controles Label y TextBox esta propiedad nos permite visualizar datos de una base de datos de una forma muy sencilla. En este caso, el CheckBox solamente permite presentar (logicamente) datos de tipo Booleano.

DragIcon(*)

DragMode(*)

Enabled(*)

Font(*)

ForeColor(*)

HeightComún a ambos controles.

La altura del control solamente afecta a la colocación del Titulo (Puede ponerse un título largo en varias líneas), no al tamaño del botón, que es invariable.

Page 81: Informe de programacion

HelpContextID(*)

Index(*)

Left(*)

MouseIcon(*)

MousePointer(*)

Name(*)

TabIndex(*)

TabStop (*)

Tag(*)

Top(*)

Value Común a ambos controles

El valor de esta propiedad indica si el control está seleccionado (Value = 1) o no seleccionado (Value = 0 ó Value = False). Esta propiedad puede cambiarse en tiempo de ejecución. Mediante esta propiedad, podemos tanto forzar el valor como leerlo.

Atención. Presenta una diferencia entre uno y otro control respecto a la forma de expresarse respecto a su valor cuando está seleccionado. Para forzar que el control NO esté seleccionado, o para leer el Value cuando no está seleccionado, podemos utilizar tanto Value = 0 como Value = False. Sin embargo, cuando lo que se quiere es poner la propiedad a True hay una diferencia entre ambos controles.

Para el OptionButton podemos utilizar indistintamente las siguiente formas :

Option1.Value = True Option1.Value = 1

Con cualquiera de ellas seleccionaremos ese control por programa.

Para el CheckBox solamente se podrá usar para este propósito la instrucción :

Check1.value = 1

El poner como Value el valor True nos dará en este control un error.

Para la lectura del Value, existe una diferencia entre el valor devuelto por el CheckBox y el devuelto por el OptionButton.

Page 82: Informe de programacion

Para leer el dato existente en un CheckBox es necesario utilizar la forma :

variable = Check1.Value donde variable tomará el valor 1 (no True)

Para el control OptionButton emplearemos una instrucción igual :

variable = Option1.Value donde variable tomará el valor True (no 1)

Visible(*)

WhatsThisHelpID(*)

Width(*)

PROCEDIMIENTOS

Click DblClick (Solo OptionButton) DragDrop DragOver GotFocus

KeyDown KeyPress KeyUp LostFocus

LIST BOX Y COMBO BOX

Estos dos controles, debido a su similitud, se estudian conjuntamente.

Se obtienen directamente de la caja de herramientas :

Un control ListBox muestra una lista de elementos en la que el usuario puede seleccionar uno o más. Si el número de elementos supera el número que puede mostrarse, se agregará automáticamente una barra de desplazamiento al control ListBox.

Un control ComboBox combina las características de un control TextBox y un control ListBox. Los usuarios pueden introducir información en la parte del cuadro de texto y seleccionar un elemento en la parte de cuadro de lista del control. En resumen, un ComboBox es la combinación de un ListBox, que se comporta como si de un ListBox se tratase, y de un TextBox, con comportamiento análogo a un TextBox sencillo, con la particularidad aquí de que el texto se le puede introducir por teclado, o elegir uno de los que figuran en la parte ListBox del Combo.

Estos controles toman la siguiente forma :

Page 83: Informe de programacion

Puede verse en la figura un ejemplo de presentación de un ListBox (izquierda), un ComboBox con la lista desplegada (Centro) y un ComboBox con la lista sin desplegar (Combo2 a la derecha).

La lista tiene varios elementos. Cada línea de esta lísta es un elemento de la lista. Como el número de elementos de la lista tiene mas elementos de los que le podían caber, generó automáticamente la barra de desplazamiento vertical.

El ComboBox está normalmente sin desplegar. Se despliega cuando se hace click con el ratón en la flecha que tiene en su parte derecha (véase fig. Anterior). Al desplegarse, muestra la lista con todos sus elementos. Haciendo click con el ratón en cualquiera de sus elementos, el elemento elegido pasa a la parte TextBox del Combo y la lista vuelve a replegar.

El ListBox (y por tanto el ComboBox) tiene unas propiedades y métodos particulares que solamente se pueden aplicar durante el tiempo de ejecución :

ListCount - Indica el número de elementos que tiene la lista

ListIndex - Indica el número de orden del elemento seleccionado dentro de la lista.

AddItem - Añade un elemento a la lista.

RemoveItem - Elimina un elemento de la lista.

Text - Obtiene el elemento seleccionado.

List (n) - Obtiene el elemento cuyo orden dentro de la lista es n.

ListCount valdrá 0 si la lista no tiene ningún elemento, y n si tiene n elementos.

Para seleccionar un elemento de la lista, basta con hacer click con el ratón sobre él. Ese elemento se resaltará con fondo en azul. Una vez seleccionado un elemento, la propiedad ListIndex tomará el valor del número de orden que ocupa ese elemento en la lista, comenzando por el 0 para el elemento que ocupa el primer lugar. Si no se selecciona ningún elemento, el valor de la propiedad ListIndex será -1. El primer elemento de la lista

Page 84: Informe de programacion

es ListIndex 0, y el valor de la propiedad ListCount siempre es uno más que el valor mayor de ListIndex.

En el ComboBox la propiedad Text contiene el texto que contenga la parte TextBox del Combo, bien haya sido introducida desde teclado o mediante la recuperación de un elemento la parte ListBox del mismo.

Ejemplos

Supongamos que tenemos un ListBox llamado List1, y un ComboBox llamado Combo1. Se enumeran distintas formas de obtener información de ellos.

Variable = List1.Listcount

Variable contendrá un número con el número total de elementos de la lista List1.

Variable = List1.ListIndex

Variable contendrá un número con el número de orden del elemento de la lista seleccionado en ese momento.

List1.AddItem "ELEMENTO NUEVO"

Añade un elemento a List1. En este caso, el elemento añadido es la palabra ELEMENTO NUEVO.

Variable = "VISUALBASIC"

List1.AddItem Variable

Añade un elemento a List1. En este caso, el elemento añadido es la palabra VISUALBASIC.

Variable = List1.Text

Variable contendrá el elemento que estaba seleccionado en List1. (Variable será una cadena de caracteres)

Variable = List1.List (n)

Variable contendrá el elemento que ocupa el número de orden n dentro de la lista.

Variable = List1.List (List1.ListIndex)

Variable contendrá el elemento que estaba seleccionado en List1. Se ha utilizado la propiedad List para obtener el elemento, y en vez de introducir un número para definir el

Page 85: Informe de programacion

elemento que se desea, se introdujo el valor ListIndex de List1, que es concretamente, el número de orden del elemento seleccionado en ese momento. Observe que poner List1.List (List1.ListIndex) es idéntico a poner List1.Text.

List1.RemoveItem (n)

Elimina el elemento n de List1.

List1.RemoveItem (List1.ListIndex)

Elimina el elemento que estaba seleccionado en ese momento.

List1.listIndex = n

Selecciona el elemento n de List1 (Se resalta en azul el elemento n)

PROPIEDADES DE ListBox y de ComboBox

Las señaladas con (*) son comunes a ambos controles y no presentan novedades respecto a las ya comentadas para los controles precedentes.

Appearance (*)

Backcolor (*)

ColumnsPropiedad de ListBox solamente.

Determina si los elementos se presentan en una sola columna o en varias columnas, y la forma de presentar los elementos en el ListBox. Si esta propiedad se pone a 0 la lista tendrá solamente una columna, y presentará los elementos uno debajo de otro. Cuando los elementos sean mas que los que se pueden presentar en la lista, aparecen automáticamente unas barras de desplazamiento vertical.

Si la propiedad se pone a un número distinto a 0, el ListBox es de tipo multicolumna, presentará en cada columna los elementos que le quepan dependiendo de su dimensión vertical, y tendrá tantas columnas como sea necesario para albergar el número de elementos que tenga. Presentará en su cuadro tantas columnas como se le indique en el valor de esta propiedad, y si no puede presentar todos los elementos en las columnas que muestra, le aparecerán barras de desplazamiento horizontales para poder movernos por todas las columnas que tenga.

Recuerde : El número que se le asigna a la propiedad Columns no indica el número de columnas que tendrá el ListBox sino el número de columnas que presenta.

Esta propiedad puede asignarse en diseño, mediante la caja de propiedades, o en tiempo de ejecución mediante una instrucción como esta :

Page 86: Informe de programacion

Nombrelista.Columns = número

.

Esta propiedad no puede definirse a 0 o cambiada desde 0 en tiempo de ejecuciones decir, no se puede convertir en tiempo de ejecución un ListBox de múltiples columnas en un ListBox de columna única o un ListBox de columna única en un ListBox de múltiples columnas. Sin embargo, sí es posible cambiar durante la ejecución el número de columnas de un ListBox de múltiples columnas.

DataField DataSource .

Establecen la base de datos y el campo donde están los datos que se llevarán al TextBox o ComboBox para presentar datos procedentes de una Base de Datos.

DragIcon(*)

DragMode(*)

Enabled(*)

Font(*)

ForeColor(*)

Height(*)

HelpContextID(*)

Index(*)

IntegralHeight No aplicable a ListBox o ComboBox

ItemDataPropiedad muy importante.

Devuelve o establece un número específico para cada elemento de un control ComboBox o ListBox.

Sintaxis

objeto.ItemData(índice) [= número]

La sintaxis de la propiedad ItemData tiene las siguientes partes:

objeto Nombre del ListBox o ComboBox.

Page 87: Informe de programacion

índice El número de un elemento concreto del objeto.

número El número que se asocia con el elemento especificado.

Comentarios

La propiedad ItemData es una matriz de valores enteros largos cuyo número de elementos es el valor de la propiedad ListCount del control. Los números asociados con cada elemento se pueden usar para cualquier fin. Por ejemplo, se puede usar en la confección de una lista de teléfonos, el número de identificación de un empleado, etc. Cuando se rellena el ListBox, también se rellena los elementos correspondientes de la matriz ItemData con los números correspondientes.

La propiedad ItemData se usa a menudo como índice de una matriz de estructuras de datos asociados con los elementos de un control ListBox.

Nota Cuando se inserta un elemento en una lista con el método AddItem, el elemento también se inserta automáticamente en la matriz ItemData. Sin embargo, el valor no se reinicializa a cero; retiene el valor que estaba en esa posición antes agregar el elemento a la lista. Cuando se usa la propiedad ItemData, asegúrese de establecer su valor al agregar nuevos elementos a la lista.

Left(*)

List Es el contenido de la lista.

Si la lista de elementos es corta e invariable, pueden introducirse los elementos en el cuadro de propiedades durante el diseño.

MouseIcon(*)

MousePointer(*)

Name(*)

Sorted

Establece o devuelve un valor que indica si los elementos de un ListBox o ComboBox se colocan automáticamente en orden alfabético. Los valores que puede adoptar son True o False.

TrueLos elementos de la lista se ordenan alfabéticamente (sin distinguir entre mayúsculas y minúsculas).

False(Predeterminado) Los elementos de la lista no se ordenan alfabéticamente.

Page 88: Informe de programacion

Cuando esta propiedad tiene el valor True, Visual Basic se encarga de casi todo el procesamiento de cadenas necesario para mantener el orden alfabético, incluyendo el cambio de los números de índice cuando se agregan o eliminan elementos.

Nota El uso del método AddItem para agregar un elemento en una posición específica de la lista puede romper el orden alfabético, y los elementos agregados con posterioridad pueden no ordenarse correctamente.

TabIndex(*)

TabStop (*)

Tag(*)

Top(*)

Visible(*)

WhatsThisHelpID(*)

Width(*)

PROCEDIMIENTOS

Click Change (Solo ComboBox) DblClick DragDrop DragOver

DropDown (Solo ComboBox) GotFocus KeyDown KeyPress

KeyUp LostFocus MouseDown (Solo ListBox) MouseMove (Solo ListBox)

MouseUp (Solo ListBox)

NOTA MUY IMPORTANTE

El procedimiento Change del ComboBox solamente se efectúa cuando el cambio se produce mediante la entrada de un texto DESDE EL TECLADO, no por un cambio en la parte Text de este control, producido al llevar un elemento desde la parte List a la parte Text.

CONTROLES HScrollBar y VScrollBar

Son dos controles similares, para introducir un dato cuasi-analógico en una aplicación. Se toman directamente de la caja de herramientas, y tienen un aspecto parecido al de un control de volumen de un equipo de música. El HScrollBar está en posición horizontal, y el VScrollBar en posición vertical.

Page 89: Informe de programacion

Mediante estos controles se pueden introducir datos variando la posición del cursor.

PROPIEDADES de HScrollBar y VScrollBar

Las señaladas con (*) son comunes a ambos controles y no presentan novedades respecto a las ya comentadas para los controles precedentes.

DragIcon(*)

DragMode(*)

Enabled(*)

Height (*)

HelpContextID(*)

Index(*)

LargeChange

Esta propiedad establece la variación de la propiedad Value cada vez que se hace click en el interior de la barra de desplazamiento, en la parte por donde pasa el cursor.

Left(*)

Max

Esta propiedad establece el valor máximo para la propiedad Value, es decir, el valor de esta propiedad cuando el cursor está en su parte máxima. (Recuerde que el cursor está en el máximo, cuando está mas a la derecha, caso del HScrollBar, o cuando está en la parte mas baja, caso del HScrollBar.

Min

Page 90: Informe de programacion

Esta propiedad establece el valor mínimo para la propiedad Value, es decir, el valor de esta propiedad cuando el cursor está en su parte mínima. (Recuerde que el cursor está en el mínimo, cuando está mas a la izquierda, caso del HScrollBar, o cuando está en la parte mas alta, caso del HScrollBar.

MouseIcon(*)

MousePointer(*)

Name(*)

SmallChange

Esta propiedad establece la variación de la propiedad Value cada vez que se hace click en las flechas superior o inferior de la barra de desplazamiento.

TabIndex(*)

TabStop (*)

Tag(*)

Top(*)

Value

Esta propiedad lee o establece el valor dado por la posición del cursor. Este valor tiene un mínimo, establecido por Min y un máximo, establecido por Max. Esta propiedad es la que se debe leer para conocer la posición del cursor.

Visible(*)

WhatsThisHelpID(*)

Width(*)

PROCEDIMIENTOS DE HScrollBar y VScrollBar

Change DragDrop DragOver GotFocus KeyDown KeyPress

KeyUp LostFocus Scroll

Comentario El Procedimiento Change se produce cuando, tras mover el cursor, se suelta el botón del ratón. Esto produce el efecto de que el cambio que se tenga que producir con el movimiento del cursor no se realiza de una manera continua. El procedimiento Scroll se realiza en el instante que se está moviendo el cursor. Por lo tanto, es este procedimiento el

Page 91: Informe de programacion

que se debe usar para conseguir el efecto de un cambio continuo mientras se está moviendo el cursor.

TIMER TEMPORIZADOR

Este objeto permite establecer temporizaciones. Presenta una novedad respecto a los controles estudiados hasta ahora. El control Timer solamente se ve durante el tiempo de diseño. En tiempo de ejecución, el control permanece invisible.

La temporización producida por el Timer es independiente de la velocidad de trabajo del ordenador. (Casi independiente. El timer no es un reloj exacto, pero se le parece)

Se toma directamente de la caja de herramientas, y tiene el aspecto siguiente :

PROPIEDADES

Enabled (*)

Index (*)

Interval

El valor de esta propiedad nos dará el intervalo de tiempo (en milisegundos) en que se producirá un evento Timer y consecuentemente, realizará el procedimiento asociado a este evento. Si el valor de la propiedad Interval está a 0 (Predeterminado), no se produce el evento Timer. (El control Timer está deshabilitado cuando se pone la propiedad Interval = 0)

Left (*)

Name (*)

Tag (*)

Top (*)

PROCEDIMIENTOS

Timer

Se produce cada vez que se cumple un intervalo completo.

Page 92: Informe de programacion

SHAPE

Se toma directamente de la caja de herramientas :

Shape es un control gráfico que se muestra como un rectángulo, un cuadrado, una elipse, un círculo, un rectángulo redondeado o un cuadrado redondeado.

Utilice controles Shape en tiempo de diseño en lugar o además de invocar los métodos Circle y Line en tiempo de ejecución. Puede dibujar un control Shape en un contenedor, pero no puede actuar como contenedor. (Esto quiere decir que un control Shape nunca le servirá, por ejemplo, para albergar varios OptionButton y pretender que sean independientes de otros controles OptionButton que se encuentren fuera del control Shape.

Este control no tiene Procedimientos. En realidad, solamente sirve para mostrar un determinado gráfico, envolver gráficamente a otros controles, pero no tiene ninguna aplicación en cuanto a programa. Es un "adorno" para sus aplicaciones.

PROPIEDADES

Backcolor (*)

BackStyle

Esta propiedad establece si Shape permite ver a su través (Transparent) o n lo permite (Opaque)

BorderColor

Establece el color del borde.

BorderStyle

Establece el tipo de borde. Puede ser : Transparent, (No se ve el borde), Solid, (Borde de línea continua),Dash, (línea a rayas), Dot, (línea a puntos), Dash-Dot, (línea de raya - punto), dash-Dot-Dot, (línea de raya - punto - punto), InsideSolid, (raya continua)

El efecto de establecer la propiedad BorderStyle depende del valor de la propiedad BorderWidth. Si BorderWidth no es 1 y BorderStyle no es 0 o 6, BorderStyle se establece como 1.

Page 93: Informe de programacion

BorderWidth

Establece el ancho de la línea.

DrawMode (*)

FillColor (*)

FillStyle(*)

Height (*)

Index (*)

Left (*)

Name (*)

Shape

Establece la forma del control. Puede ser : Rectangular, cuadrado, redondo, ovalado, cuadrado con esquinas redondeadas y rectangular con esquinas redondeadas.

Tag (*)

Top (*)

Visible (*)

Width (*)

PROCEDIMIENTOS No tiene.

.LINE

Se toma directamente de la caja de herramientas

Line, al igual que Shape, es un control gráfico que solamente sirve para poner una línea en un formulario. Del mismo modo, no tiene procedimientos, por lo que no sirve para aportar código al programa. Solo sirve para aportar una característica gráfica, es un adorno.

Page 94: Informe de programacion

PROPIEDADES

BorderColor

Establece el color de la línea.

BorderStyle

Establece el tipo de línea : Puede ser : Transparent, (No se ve la línea), Solid, (Línea continua),Dash, (línea a rayas), Dot, (línea a puntos), Dash-Dot, (línea de raya - punto), dash-Dot-Dot, (línea de raya - punto - punto), InsideSolid, (raya continua)

BorderWidth

Establece el ancho de la línea.

DrawMode (*)

Index (*)

Left (*)

Name (*)

Tag (*)

Visible (*)

X1, X2 Establece las coordenadas x del inicio y final.

Y1, Y2 Establece las coordenadas y del inicio y final

PROCEDIMIENTOS No tiene.

CONTROL GAUGE

Este control presenta una información numérica de forma gráfica, bien como un display lineal (típico por ejemplo en ecualizadores de audio ), o como una aguja. No está normalmente en la caja de herramientas, por lo que hay que traerla desde los Controles Personalizados (Menú desplegable de Herramientas). Se denomina MicroHelp Gauge Control. El archivo que lo contiene se denomina GAUGE16.OCX, (Ver. 16 bits) GAUGE32.OCX (Ver. 32 bits)

Page 95: Informe de programacion

Mediante este control, podemos presentar una magnitud numérica de una forma cuasi-analógica. Podríamos decir que es un control similar al HScrollBar, que en vez de meter información a la aplicación, la presenta.

Este control puede servir, por ejemplo, para presentar el tanto por ciento de ejecución de una tarea, como elemento tranquilizante. Puede presentar el nivel de un depósito de agua, etc.

Presenta las dos formas siguientes :

En la figura puede verse un Gauge de aguja, uno de barra horizontal y otro de barra vertical. Para mejorar la presentación, el Gauge permite poner un gráfico como fondo, cambiar el color de la barra, color de fondo, etc.

El control Gauge crea medidores definidos por el usuario, que puede elegir entre los estilos lineales (relleno) o de aguja.

Nota para la distribución Cuando cree y distribuya aplicaciones con controles Gauge, tendrá que instalar el archivo apropiado en el subdirectorio SYSTEM de Windows del cliente. El Kit para instalación que incluye Visual Basic, le proporciona herramientas para escribir los programas que instalan las aplicaciones correctamente.

PROPIEDADES

Autosize, Backcolor, DragIcon, DragMode, Enabled, ForeColor, Height, HelpContextID,

Index, InnerBottom, InnerLeft, InnerRight, InnerTop, Left, Max, Min, MouseIcon, MousePointer, Name, NeedleWidth, Picture, Style, TabIndex, Tabstop, Tag, Top, Value, Visible, WhatsThisHelpID, Width.

Son destacables por nuevas o particulares, las siguientes propiedades :

ForeColor Color de la barra

Page 96: Informe de programacion

InnerBottom Distancia entre la parte baja del control y el comienzo de la barra o aguja.

InnerLeft, InnerRight, InnerTop. Idéntico al anterior, respecto a otros lados.

Max Valor de la propiedad Value a fondo de escala

Min Valor de la propiedad Value para indicación cero.

NeedleWidth Ancho de la aguja

Style Tipo de marcador. Puede tomar los siguientes valores :

0 = de barra, horizontal.

1 = de barra, vertical.

2 = de aguja, de 180 grados

3 = de aguja, de 360 grados.

Value

Valor numérico a presentar. Debe ser igual o menor que la propiedad Max, e igual o mayor que la propiedad Min.

Controles (Continuación) El CommonDialog

El CommonDialog es un control del que se libran muy pocas aplicaciones. Dada la importancia de este control, se le dedica un capitulo único en esta Guía del Estudiante.

CUADRO DE DIALOGO CommonDialog

Normalmente se encuentra en la caja de herramientas

Este control no se presenta en tiempo de diseño mas que con un simple icono :

Page 97: Informe de programacion

El cuadro de diálogo, CommonDialog se utiliza para varias funciones :

Abrir Ficheros

Guardar Ficheros

Elegir colores

Seleccionar Impresora

Seleccionar Fuentes Mostrar el fichero de Ayuda

En realidad el cuadro de diálogo permite conocer datos con los cuales, y mediante el código adecuado, abriremos o guardaremos ficheros, elegiremos colores o seleccionaremos fuentes. Es decir, el CommonDialog NO realiza mas funciones que mostrar ficheros existentes, fuentes disponibles, colores, para que, mediante código, abramos esos ficheros o usemos una determinada fuente.

Dependiendo de la aplicación para la que vaya a usarse se deberá activar de distintas formas. Si el cuadro de diálogo se va a usar para seleccionar la impresora y para otras aplicaciones, es recomendable usar uno exclusivamente para seleccionar la impresora.

Esta última recomendación se debe a que, para el control de la impresora, el CommonDialog SI realiza las funciones de selección de impresora predeterminada. Esta diferencia operativa hace que si usamos el mismo CommonDialog para seleccionar impresora y abrir ficheros, por ejemplo, se "cuelgue" el CommonDialog.

El control CommonDialog es un control personalizado (Microsoft CommonDialog Control COMDLG16.OCX / COMDLG32.OCX), y como casi todos los controles personalizados presenta un asistente de propiedades propio. Puede accederse a las propiedades mediante el cuadro de propiedades típico de otros controles, o mediante el asistente, pulsando el botón derecho del ratón con el puntero colocado encima del icono del cuadro de diálogo.

Analizando las propiedades, vemos que tiene gran cantidad de ellas. Esto es porque agrupa todas las propiedades correspondientes a la cinco funciones que puede desarrollar. Se detalla a continuación la forma de usar el CommonDialog para cada aplicación.

Se entiende que el nombre - Name - que se ha puesto para el cuadro de diálogo en todos los ejemplos es CD1)

FUENTES

Para mostrar el cuadro de diálogo correspondiente a Tipos de Letra ( Fonts ), debe ejecutarse la instrucción:

Page 98: Informe de programacion

CD1.ShowFont

y haber puesto, en la propiedad Flags del cuadro de diálogo, el valor de 1, 2 ó 3, correspondiente respectivamente a los tipos de letra de la pantalla, de la impresora o ambos. (Véase la propiedad Flags mas adelante) Si no pone uno de estos valores, le dirá que no tiene fuentes instaladas.

El cuadro de diálogo que se presenta es el siguiente:

Los valores que se pueden obtener de este cuadro de dialogo son:

CD1.FontName Indica el nombre de la fuente

CD1.FontSize Indica el tamaño de la fuente

CD1.Color Indica el color de la fuente (Abrir con Flags=256+1, 2 ó 3)

CD1.FontBold = (True / False) Si es True, se ha elegido "Negrita"

CD1.FontItalic = (True / False) Si es True, se ha elegido "Cursiva"

CD1.FontStrikethru = (True / False) Si es True, se ha elegido "Tachada "

CD1.FontUnderline = (True / False) Si es True, se ha elegido "Subrayada"

Si se elige una versión Negrita Cursiva serían True las opciones FontBold y FontItalic

El objeto Font no puede aplicarse al CommonDialog. Es decir, no podemos poner :

Page 99: Informe de programacion

Variable = CD1.Font.Size sino Variable = CD1.Fontsize

En el ejemplo que acompaña a este capítulo, puede ver como se introducen las características de una determinada fuente elegida en un cuadro de texto.

COLOR

Para mostrar el cuadro de diálogo correspondiente al color, se deberá ejecutar la instrucción:

CD1.ShowColor

El cuadro de diálogo presentado tiene esta forma:

(La parte derecha del cuadro puede no salir. Depende del valor de la propiedad Flags. Se saca haciendo click en Definir colores personalizados, si está activado. También depende de la propiedad Flags)

El número correspondiente al color elegido se puede conocer analizando la propiedad color de cuadro de diálogo. En nuestro ejemplo, lo obtendríamos con

Variablecolor = CD1.Color

donde Variablecolor contendrá un número correspondiente al color elegido.

Nota acerca del número del color.

Page 100: Informe de programacion

Para establecer un color por medio de código, se pondrá un valor de color a la propiedad correspondiente de ese objeto. El valor del color puede establecerse de tres formas que se comentan a continuación.

Colores en Visual Basic.

Visual Basic acepta para especificar un color, tres procedimientos: Mediante el número de color, mediante la sentencia RGB ( rojo, verde, azul ) o mediante la función QBColor.

Por número

El número que representa el color en VB está formado por la suma de la componente roja, la componente verde y la componente azul. Podríamos verlo muy bien en numeración Hexadecimal:

Color = Hex XX YY ZZ

Donde ZZ es un número Hexadecimal que representa la cantidad del color rojo. El mínimo estaría en 0 (H00) y el máximo en 255 (HFF)

YY representaría la cantidad de color verde y XX la de color azul, ambos con los mismos límites explicados para el rojo.

Por ejemplo: el rojo puro sería: Hex(0000FF) = 255

el verde puro sería: Hex(00FF00) = 652280

el azul puro sería: Hex(FF0000) = 16711680

Una mezcla de un poco de rojo (HB1), otro poco de verde (H56) y otro poco de azul (H1F) daría el siguiente número:

Hex(1F56B1) = 2053809

El número de color puede estar comprendido entre 0 (correspondiente al negro) y el 16777215 (correspondiente al blanco. Observe que esa cantidad, 16.777.215 (FFFFFF en hexadecimal) corresponde a los famosos 16 millones de colores de las tarjetas gráficas.

Si queremos poner el color de fondo a un control Label, usaremos la propiedad Backcolor. Si el Label se llama Label1, pondríamos la instrucción

Label1.Backcolor = 12345678

Por la sentencia RGB

Page 101: Informe de programacion

Se puede expresar el color, poniendo simplemente RGB (rojo, verde, azul), donde rojo es un número entre 0 y 255 que indica la cantidad de color rojo que se aporta al color, verde un número comprendido entre 0 y 255 indicando la cantidad de verde, y lo mismo para azul.

Esta es la forma mas sencilla de poner la propiedad color, y con la que mejor controlaremos el mismo.

Si queremos poner al Label anterior un color mediante la sentencia RGB, ejecutaríamos la sentencia :

Label1.Backcolor = RGB (128, 30, 100)

Mediante la Función QBColor

Esta función se ha puesto en Visual Basic para compatibilidad con los colores que se usan en Quick-Basic y Qbasic. Mediante esta función se obtienen solamente 16 colores.

Sintaxis Objeto.QBColor(color)

El argumento color es un número entero entre 0 a 15, según la siguiente lista:

Número Color Número Color

0 Negro 8 Gris

1 Azul 9 Azul claro

2 Verde 10 Verde claro

3 Aguamarina 11 Aguamarina claro

4 Rojo 12 Rojo claro

5 Fucsia 13 Fucsia claro

6 Amarillo 14 Amarillo claro

7 Blanco 15 Blanco brillante

Para el mismo Label anterior, usaríamos la sentencia :

Label1.Backcolor = QBColor (12)

Fin de la nota acerca del número del color

Page 102: Informe de programacion

IMPRESORAS

Nota: Si utiliza un CommonDialog para impresoras y otras aplicaciones, puede tener problemas. Utilice un CommonDialog exclusivamente para impresoras.

Para presentar el cuadro de elección de impresora, ejecute la instrucción:

CD2.ShowPrinter

(A este cuadro de dialogo le hemos llamado CD2 para evitar los problemas referidos en la nota).

Aparecerá el siguiente cuadro de diálogo:

La impresora elegida puede conocerla llamando a la propiedad DeviceName de un objeto que aún no hemos visto: el objeto Printer. Este objeto es el encargado de pasar al Administrador de Impresión todos los trabajos de impresión que generen las aplicaciones Visual Basic:

Nombredelaimpresora = Printer.DeviceName

Para que la impresora quede como impresora por defecto de Windows, debe tener a True la propiedad PrinterDefault del cuadro de diálogo.

En este cuadro puede observarse, que además de los botones de ACEPTAR y CANCELAR, existe otro, INSTALAR. Haciendo click en este, podemos cambiar la impresora por cualquier otra que tenga instalada.

ABRIR Y GUARDAR ARCHIVOS

Posiblemente las opciones mas usadas del cuadro de diálogo. Para presentar el cuadro de diálogo correspondiente a Abrir Archivo, debe ejecutar la instrucción:

Page 103: Informe de programacion

CD1.ShowOpen

Si lo que necesita es abrir el cuadro de diálogo para guardar un fichero, debe ejecutar la instrucción :

CD1.ShowSave

pero antes deberá introducir el filtro o filtros de archivos que necesite. Ojo, ¡ ANTES !

Un filtro sirve para que en el cuadro de diálogo se presenten solamente los ficheros de nuestro interés. Se pueden seleccionar por el nombre, la extensión o las dos cosas. La sintaxis para introducir un filtro es la siguiente:

CD1.Filter = "Descripción del fichero|nombre.extensión"

donde "nombre" puede ser un nombre o usar caracteres comodín. Lo mismo para "extensión"

Por ejemplo, para buscar archivos ejecutables, con cualquier nombre y extensión .EXE

CD1.Filter = "Ficheros ejecutables |*.exe"

Observe el carácter separador entre la descripción de los ficheros (Ficheros ejecutables) y el parámetro de busca (*.EXE). No ponga ningún espacio entre el separador y los caracteres de busca. El separador es el carácter ASCII 124.

Puede buscar varios tipos de ficheros, separando los caracteres de busca por medio del carácter punto y coma (;)

CD1.Filter = "Ficheros ejecutables |*.EXE;*.COM;*.BAT"

Puede también introducir dos filtros, separados por el separador | (En una línea solamente).

CD1.Filter="Ficheros de un tipo |*.EXE |Ficheros de otro |*.COM |Otros ficheros |*.BAT"

Por ejemplo : CD1.Filter = "Ficheros Word |*.DOC|Ficheros Write |*.WRI"

¡ No se pueden poner dos líneas con filtros, se quedaría solamente con la última !

En este caso, cuando se presente el cuadro de diálogo, solamente presentará uno de los filtros, y deberá seleccionar manualmente el otro en un cuadro situado en la parte inferior izquierda del cuadro de diálogo. Para predeterminar cuál de los dos filtros saldrá sin tener que seleccionarlo, deberá ejecutar esta instrucción, ANTES de invocar el cuadro de diálogo

CD1.FilterIndex = 2

Page 104: Informe de programacion

En este caso, aparecerá por defecto el filtro escrito en segundo lugar. El orden de los filtros comienza por 1.

El cuadro de diálogo deberá presentar un directorio. Este directorio con el que, por defecto, aparece el cuadro de diálogo, se puede introducir mediante la propiedad InitDir, que deberá contener el nombre del directorio y su path. Si no se especifica, comenzará por el directorio actual.

Para conocer el nombre del fichero elegido, se emplea la propiedad FileName :

Nombrefichero= CD1.filename

El nombre del fichero, Nombrefichero en la sentencia anterior, viene con su path, es decir, nombre y dirección completa, por lo que puede emplearse directamente la salida del CommonDialog para abrir un fichero.

El cuadro de diálogo de abrir o cerrar tiene esta forma :

El cuadro de guardar es similar. Observe que en este caso hemos desplegado la segunda opción de filtro de ficheros :

Page 105: Informe de programacion

Como ve ambos cuadros son prácticamente iguales. Solamente se difieren en que uno pone Abrir y el otro Guardar como en su barra de título. También en que el cuadro Guardar como presenta los nombres de los ficheros con un tono apagado. Funcionalmente difieren. Por ejemplo, si quiere guardar un fichero con un nombre ya existente, y dependiendo de la propiedad Flags que verá mas adelante, le aparecerá la siguiente advertencia :

Si desea otra leyenda en la barra de título, puede cambiarla usando el asistente de propiedades, que lo obtendrá colocando el cursor del ratón sobre el icono del CommonDialog y pulsando el botón derecho. Haga click sobre Propiedades en el popmenú que se presenta. Aparecerá esto :

Page 106: Informe de programacion

PRESENTAR AYUDAS

Mediante el CommonDialog se puede presentar un fichero de ayuda. (Ficheros del tipo .HLP de Windows)

Pese a que se pueden presentar estos ficheros basándonos en el CommonDialog, es preferible usar directamente el programa WinHelp.Exe, que puede ejecutarlo mediante la función Shell :

VariableID = Shell ("WinHelp.Exe FicheroAyuda.hlp",1)

Para mostrar el fichero de ayuda debe poner el nombre (y Path) del fichero de ayuda en la propiedad HelpFile del CommonDialog

CD1.HelpFile = "C:\MiCarpeta\MiFicheroAyuda.HLP"

Puede mostrar el índice, o una página concreta de ese fichero. Para ello debe jugar con la propiedad HelpCommand, que le va a indicar al CommonDialog qué ayuda debe mostrar.

CD1.HelpCommand =Valor

Las opciones para valor son:

1 &H1 cdlContext

Muestra la Ayuda de un contexto determinado. Cuando se usa esta valor, también se debe especificar un contexto con la propiedad HelpContext.

2 &H2 cdlQuit

Page 107: Informe de programacion

Notifica a la aplicación Ayuda que el archivo de Ayuda especificado ya no se está utilizando.

3 &H3 cdlContents

Muestra el tema de contenido de ayuda, definido con la opción Contents de la sección [OPTION] del archivo .HPJ.

3 &H3 cdlIndex

Muestra el índice del archivo de Ayuda especificado. Las aplicaciones sólo deben utilizar este valor para un archivo de Ayuda con índice único.

4 &H4 cdlHelpOnHelp

Muestra la Ayuda para utilizar la propia aplicación Ayuda.

5 &H5 cdlSetContents

Determina el tema de contenido a mostrar cuando el usuario presiona la tecla F1.

5 &H5 cdlSetIndex

Establece el contexto especificado en la propiedad HelpContext como índice actual para el archivo especificado en la propiedad HelpFile. Este índice seguirá siendo el actual hasta que el usuario acceda a un archivo de Ayuda distinto. Utilice este valor sólo para los archivos de Ayuda con más de un índice.

8 &H8 cdlContextPopup

Muestra en una ventana emergente un tema de Ayuda determinado, identificado por un número de contexto definido en la sección [MAP] del archivo .HPJ.

9 &H9 cdlForceFile

Asegura que WinHelp muestre el archivo de Ayuda correcto. Si se muestra el archivo correcto, no sucede nada. Si se muestra un archivo incorrecto, WinHelp abrirá el correcto.

257 &H101 cdlKey

Muestra la Ayuda sobre una palabra reservada determinada. Al usar esta opción, deberá especificar también una palabra reservada con la propiedad HelpKey.

258 &H102 cdlCommand

Ejecuta una macro de Ayuda.

Page 108: Informe de programacion

261 &H105 cdlPartialKey

Muestra el tema de la lista de palabras claves que coincide con la palabra pasada en el parámetro dwData, si sólo se encuentra uno. Si se encuentra más de uno, aparecerá el cuadro de diálogo Buscar mostrando los temas encontrados en el cuadro de lista Ir a. Si no se encuentra ninguno, se mostrará el cuadro de diálogo Buscar. Para que aparezca el cuadro de diálogo Buscar sin pasar una palabra reservada, utilice un puntero largo a una cadena vacía.

Si queremos que se muestre el índice de la ayuda, pondríamos esta propiedad de la forma :

CD1.HelpCommand = cdlHelpIndex

Para mostrar la página que se ha puesto en el fichero de ayuda como Contexto 2 (En Sección [MAP] del fichero .HPJ (Vea Creación de Ficheros de Ayuda),

CD1.HelpCommand = cdlHelpContext

CD1.HelpContext = 2

Para mostrar la Ayuda de la Ayuda de Windows :

CD1.HelpCommand = cdlHelpHelpOnHelp

Una vez establecidas estas propiedades, mostraremos la ayuda con el Método ShowHelp

CD1.ShowHelp

Repitiéndole que no se debe usar el CommonDialog para mostrar ayudas, pero para cumplir el objetivo de plasmar en este texto la mayor información acerca de cada control, se enumeran a continuación el resto de propiedades que afectan a la presentación de ayuda :

HelpFile

HelpContext

HelpKey

PROPIEDADES DEL CommonDialog

La Propiedad Action

La propiedad Action se incluye en la versión 4 de VB solamente por motivos de compatibilidad con anteriores versiones. Realiza las mismas funciones que ShowFont, ShowColor, ShowPrinter, ShowOpen y ShowSave. No debe usarse esta propiedad, sino los equivalentes citados, en previsión de que pueda ser eliminada en futuras versiones.

Page 109: Informe de programacion

La sintaxis de Action es : Nombre.Action [= valor]

Valor Descripción

0 Ninguna acción.

1 Muestra el cuadro de diálogo Abrir.

2 Muestra el cuadro de diálogo Guardar como.

3 Muestra el cuadro de diálogo Color.

4 Muestra el cuadro de diálogo Fuente.

5 Muestra el cuadro de diálogo Impresora.

6 Ejecuta WINHELP.EXE.

NO utilice la propiedad Action. Utilice en su lugar ShowFont, ShowPrinter, ShowSave, ShowOpen , ShowColor y ShowHelp

CancelError

Devuelve o establece un valor que indica si se genera un error cuando el usuario elige el botón Cancelar.

Sintaxis : objeto.CancelError = (True / False)

True Se genera un error.

False (Predeterminado) No se genera ningún error.

Cuando se establece True en esta propiedad, se producirá el error número 32755 (cdlCancel) cada vez que el usuario elija el botón Cancelar.

Debe poner esta propiedad a true cuando quiera detectar que se ha pulsado el botón CANCELAR. Luego, debe detectar con la rutina de detección de errores adecuada, si el error producido ha sido el 32755. De ser así, es que han pulsado ese botón, y Vd. procederá en consecuencia.

Color

Esta propiedad es de lectura / escritura

De escritura :Establece el color predeterminado con que aparecerá el CD para elegir

Page 110: Informe de programacion

color. Puede introducirse como RGB o numéricamente, como se explicó mas atrás. Para que aparezca este color predeterminado, debe poner la propiedad Flags a 1.

De lectura : Entrega el color elegido, bien en el cuadro de elección de color, bien en el

cuadro de elección de fuente.

Copies

Establece el valor predeterminado para número de copias que aparecerá en el CD cuando se abra para elegir impresora.

DefaultExt

Devuelve o establece la extensión de archivo predeterminada para el cuadro de diálogo.

Sintaxis objeto.DefaultExt [= cadena]

Puede utilizar esta propiedad para especificar una extensión de archivo predeterminada, como por ejemplo .TXT o .DOC.

Importante para el CommonDialog de Guardar: Cuando se guarde un archivo sin extensión, se le agregará automáticamente la especificada en esta propiedad.

DialogTitle

Devuelve o establece la cadena mostrada en la barra de título del cuadro de diálogo.

Sintaxis Nombre.DialogTitle [= título]

Esta propiedad puede introducirse en la ventana de propiedades, o por programa. Puede utilizar esa propiedad para mostrar el nombre del cuadro de diálogo en la barra de título.

Nota El control CommonDialog ignora el valor de la propiedad DialogTitle cuando muestra los cuadros de diálogo Color o Fuente.

El título predeterminado para un cuadro de diálogo Abrir es Abrir, y para un cuadro de diálogo Guardar como es Guardar como.

FileName

Devuelve o establece la ruta y el nombre de archivo de un archivo seleccionado. La lectura de esta propiedad devuelve el nombre del archivo seleccionado actualmente en la lista. Si no hay ningún archivo seleccionado, FileName devuelve una cadena vacía.

Filter

Page 111: Informe de programacion

(Explicada mas atrás)

Devuelve o establece los filtros que aparecen en el cuadro de lista Tipo de un cuadro de diálogo.

Sintaxis CD1.Filter [= descripción1 |filtro1 |descripción2 |filtro2...]

Utilice el símbolo de canalización ( | , (ASCII 124) ) para separar los valores de descripción y de filtro. No incluya espacios antes ni después del símbolo de canalización, pues aparecerían en los valores de descripción y valor.

Al especificar más de un filtro en un cuadro de diálogo, utilice la propiedad FilterIndex para especificar el filtro predeterminado.

Nota para los que no tiene teclado de 102 teclas. Para obtener el carácter ASCII 124, pulse la tecla ALT y, sin dejar de pulsarla, teclee 124 en el teclado numérico.

FilterIndex

Devuelve o establece un filtro predeterminado para un cuadro de diálogo Abrir o Guardar Como.

Sintaxis CD1.FilterIndex [= número]

Esta propiedad indica el filtro predeterminado cuando se han especificado varios filtros para un cuadro de diálogo Abrir o Guardar. El índice del primer filtro definido es 1.

FlagsPropiedad que tiene distintos significados para cada tipo de cuadro de diálogo.

Tiene la misma sintaxis para todos los cuadros.

Sintaxis CD1.Flags [= valor]

El parámetro valor establece distintas alternativas, dependiendo de cada cuadro.

Para el cuadro de diálogo Color

Las opciones para valor son:

1 &H1& cdlRGBInit

Establece como valor de color inicial para el cuadro de diálogo el indicado en su propiedad Color.

2 &H2& cdlFullOpen

Page 112: Informe de programacion

Hace que el cuadro de diálogo se muestre completo al crearlo, incluyendo la sección que permite al usuario crear colores personalizados. Sin esta opción, el usuario debe elegir el botón de comando Definir colores personalizados para mostrar tal sección.

4 &H4& cdlPreventFullOpen

Desactiva el botón de comando Definir colores personalizados, evitando que el usuario defina colores.

8 &H8& cdlShowHelp

Hace que el cuadro de diálogo muestre un botón Ayuda.

Se pueden poner varias de estas condiciones, poniendo como valor Flags la suma de los valores de cada una de las condiciones a poner.

Para los cuadros Abrir y Guardar

Las opciones para valor son:

1 &H1& cdlReadOnly

Hace que la casilla de verificación Sólo lectura aparezca marcada inicialmente al crear el cuadro de diálogo. Este indicador también señala el estado de la casilla Sólo lectura cuando el cuadro de diálogo está cerrado.

2 &H2& cdlOverwritePrompt

Hace que el cuadro de diálogo Guardar como genere un cuadro de mensaje si el archivo seleccionado ya existe. El usuario deberá confirmar que desea sobrescribir el archivo.

4 &H4& cdlHideReadOnly

Oculta la casilla de verificación Sólo lectura.

8 &H8& cdlNoChangeDir

Hace que el cuadro de diálogo restablezca como directorio actual el que lo era en el momento de abrirse.

16 &H10& cdlShowHelp

Hace que el cuadro de diálogo muestre el botón Ayuda.

256 &H100& cdlNoValidate

Page 113: Informe de programacion

Especifica que el cuadro de diálogo común permita caracteres no válidos en el nombre de archivo devuelto. Funciona tanto con el cuadro de Abrir como con el de Cerrar. Tenga cuidado a la hora de crear un archivo con nombre no válido !

512 &H200& cdlAllowMultiselect

Especifica que el cuadro de lista Nombre de archivo admita selecciones múltiples. El usuario puede seleccionar más de un archivo en tiempo de ejecución presionando la tecla MAYÚS y utilizando las teclas FLECHA ARRIBA y FLECHA ABAJO para seleccionar los archivos deseados. Al hacerlo, la propiedad FileName devolverá una cadena con los nombres de todos los archivos seleccionados. Los nombres están delimitados en la cadena con espacios.

1024 &H400& cdlExtensionDifferent

Indica que la extensión del nombre de archivo devuelto es distinta de la especificada en la propiedad DefaultExt. Este indicador no estará activado si la propiedad DefaultExt es Null, si las extensiones coinciden, o si el archivo no tiene extensión. El valor de este indicador puede comprobarse al cerrar el cuadro de diálogo.

2048 &H800& cdlPathMustExist

Especifica que el usuario sólo pueda introducir una ruta de acceso válida. Si se establece este indicador y el usuario introduce una ruta no válida, aparecerá un mensaje de advertencia.

4096 &H1000& cdlFileMustExist

Especifica, para el cuadro de Abrir, que el usuario sólo pueda escribir en el cuadro de texto Nombre de archivo nombres de archivos existentes. Si este indicador está activado y el usuario introduce un nombre de archivo no válido, aparecerá una advertencia. Este indicador activa automáticamente cdlPathMustExist.

8192 &H2000& cdlCreatePrompt

Especifica, para el cuadro de diálogo de abrir, que si no existe el fichero consulte al usuario antes de crear un archivo que no existe actualmente. Esta advertencia dice : Este Archivo no existe ¿desea crearlo ? y aparecen los botones de ACEPTAR y CANCELAR. Si el usuario pulsa aceptar el CommonDialog se cierra normalmente, si se le pulsa CANCELAR desaparece esta advertencia y el CommonDialog espera a que se le escriba o seleccione otro fichero. Este indicador establece automáticamente los indicadores cdlPathMustExist y cdlFileMustExist.

16384 &H4000& cdlShareAware

Especifica que se ignoren los errores al compartir archivos.

Page 114: Informe de programacion

32768 &H8000& cdlNoReadOnlyReturn

Especifica que el archivo devuelto no tenga el atributo de Sólo lectura ni esté en un directorio protegido contra escritura. Presenta un aviso (tanto en el cuadro de abrir como en el cerrar) que impide elegir un fichero de estas características.

Se pueden poner varias de estas condiciones, poniendo como valor Flags la suma de los valores de cada una de las condiciones a poner.

Para el cuadro Mostrar Fuentes:

Las opciones para valor son:

1 &H1& cdlScreenFonts

Hace que el cuadro de diálogo muestre solamente las fuentes de pantalla que admite el sistema.

2 &H2& cdlPrinterFonts

Hace que el cuadro de diálogo muestre solamente las fuentes que admite la impresora, especificadas por la propiedad hDC.

3 &H3& cdlBoth

Hace que el cuadro de diálogo muestre las fuentes de impresora y de pantalla disponibles. La propiedad hDC identifica el contexto de dispositivo asociado a la impresora

4 &H4& cdlShowHelp

Hace que el cuadro de diálogo muestre un botón Ayuda.

256 &H100& cdlEffects

Especifica que el cuadro de diálogo permita efectos de tachado, subrayado y color.

1024 &H400& cdlANSIOnly

Especifica que el cuadro de diálogo sólo permita seleccionar las fuentes que utilizan el juego de caracteres de Windows. Si se establece este indicador, el usuario no podrá seleccionar una fuente que sólo contenga símbolos.

2048 &H800& cdlNoVectorFonts

Especifica que el cuadro de diálogo no permita seleccionar fuentes vectoriales.

Page 115: Informe de programacion

4096 &H1000& cdlNoSimulations

Especifica que el cuadro de diálogo no permita simulaciones de fuente de interfaz de dispositivo gráfico (GDI).

8192 &H2000& cdlLimitSize

Especifica que el cuadro de diálogo seleccione sólo los tamaños de fuente comprendidos en el rango especificado por las propiedades Min y Max.

16384 &H4000& cdlFixedPitchOnly

Especifica que el cuadro de diálogo seleccione sólo fuentes de espaciado fijo.

32768 &H8000& cdlWYSIWYG

Especifica que el cuadro de diálogo permita seleccionar solamente fuentes disponibles al la vez en la pantalla y en la impresora. Si se establece este indicador, también deben establecerse cdlBoth (sume 3 a este número) y cdlScalableOnly (sume 131072 a este número)

65536 &H10000& cdlForceFontExist

Especifica que aparezca un cuadro de mensaje cuando el usuario intente seleccionar una fuente o un estilo que no existan.

131072 &H20000& cdlScalableOnly

Especifica que el cuadro de diálogo permita seleccionar solamente fuentes escalables.

262144 &H40000& cdlTTOnly

Especifica que el cuadro de diálogo permita seleccionar solamente fuentes TrueType.

Nota Antes de mostrar el cuadro de diálogo Fuentes, debe establecer cdlScreenFonts,

cdlPrinterFonts o cdlBoth en la propiedad Flags. En caso contrario, se producirá el error No hay fuentes. (O dicho de otra forma, Flags=1, 2 ó 3)

Se pueden poner varias de estas condiciones, poniendo como valor Flags la suma de los valores de cada una de las condiciones a poner.

Para el Cuadro de Diálogo Imprimir

(Observará seguramente que lo que se describe a continuación no se cumple siempre. Depende de las impresoras que tenga Vd. instaladas)

Page 116: Informe de programacion

Las opciones para valor son:

0 &H0& cdlAllPages

Devuelve o establece el estado del botón de opción Todas las páginas.

1 &H1& cdlSelection

Devuelve o establece el estado del botón de opción Selección. Si no se especifica cdlPageNums ni cdlSelection, el botón de opción Todas estará seleccionado.

2 &H2& cdlPageNums

Devuelve o establece el estado del botón de opción Páginas.

4 &H4& cdlNoSelection

Desactiva el botón de opción Selección.

8 &H8& cdlNoPageNums

Desactiva el botón de opción Páginas y el control de edición asociado.

16 &H10& cdlCollate

Devuelve o establece el estado de la casilla de verificación Intercalar.

32 &H20& cdlPrintToFile

Devuelve o establece el estado de la casilla de verificación Imprimir a un archivo.

64 &H40& cdlPrintSetup

Hace que el sistema muestre el cuadro de diálogo Configurar impresora en lugar de Imprimir. Use este Flag cuando lo que desea es cambiar la impresora predeterminada.

128 &H80& cdlNoWarning

Evita que aparezca una advertencia cuando no hay una impresora predeterminada.

256 &H100& cdlReturnDC

Devuelve un contexto de dispositivo para la impresora seleccionada en el cuadro de diálogo. El contexto se devuelve en la propiedad hDC del cuadro de diálogo.

512 &H200& cdlReturnIC

Page 117: Informe de programacion

Devuelve un contexto de información para la impresora seleccionada en el cuadro de diálogo. Un contexto de información proporciona un método rápido de obtener información sobre el dispositivo sin crear un contexto de dispositivo. El contexto de información se devuelve en la propiedad hDC del cuadro de diálogo.

2048 &H800& cdlShowHelp

Hace que el cuadro de diálogo muestre el botón Ayuda

262144 &H40000& cdlUseDevModeCopies

Si un controlador de impresora no admite copias múltiples, al establecer este indicador se desactiva el control de edición de número de copias. Si el controlador sí admite múltiples copias, al establecer este indicador el cuadro de diálogo almacenará el número de copias solicitado en la propiedad Copies.

524288 &H80000& cdlDisablePrintToFile

Desactiva la casilla de verificación Imprimir a un archivo.

1048576 &H100000& cdlHidePrintToFile

Oculta la casilla de verificación Imprimir a un archivo.

Propiedades que afectan al tipo de letra.

Las seis propiedades siguientes nos dan las características especiales de la fuente elegida (negrita, cursiva, etc.). Una vez seleccionado el tipo de letra, el valor de estas propiedades contiene la opción elegida para la letra (si FontBold=True es que hemos elegido negrita, etc.)

FontBold

Propiedad Booleana que establece o devuelve que el tipo de letra usado es Negrita.

Sintaxis Variable = CD1.FontBold

Los valores de Variable son:

True Se ha elegido negrita False (Predeterminado) No se ha elegido negrita.

FontItalic

Propiedad Booleana que establece o devuelve que el tipo de letra usado es Cursiva.

Sintaxis Variable = CD1. FontItalic

Page 118: Informe de programacion

Los valores de Variable son:

True si se ha elegido cursiva, False (Predeterminado) en caso contrario.

FontStrikethru

Propiedad Booleana que establece o devuelve que el tipo de letra usado es Tachada.

Sintaxis Variable = CD1. FontStrikethru

Los valores de Variable son:

True si se ha elegido tachado, False (Predeterminado) en caso contrario.

FontUnderline

Propiedad Booleana que establece o devuelve que el tipo de letra usado es Subrayado.

Sintaxis Variable = CD1.FontUnderline

Los valores de Variable son:

True, si se ha elegido subrayado, False (Predeterminado) en caso contrario

FontName

Devuelve el nombre de la fuente elegida. Es una variable tipo String

Sintaxis Variable = CD1.FontName

(Variable toma el valor del nombre de la fuente. Por ejemplo, Variable = "Arial"

En general, deberá modificar FontName antes de establecer los atributos de tamaño y estilo con las propiedades FontSize, FontBold, FontItalic, FontStrikethru y FontUnderline.

Nota En tiempo de ejecución puede obtener información sobre las fuentes disponibles a través de las propiedades FontCount y Fonts. Lo verá mas adelante

FontSize

Devuelve de la fuente elegida. Debe ser una variable tipo Integer o Long

Sintaxis Variable = CD1.FontSize

donde Variable será una expresión numérica que especifica el tamaño de fuente a utilizar, en puntos.

Page 119: Informe de programacion

Nota Las fuentes disponibles en Visual Basic varían dependiendo de la configuración del sistema y de los dispositivos de presentación e impresión. En las propiedades relacionadas con las fuentes sólo pueden establecerse valores para los que exista una fuente.

En general, deberá modificar FontName antes de establecer los atributos de tamaño y estilo con las propiedades FontSize, FontBold, FontItalic, FontStrikethru y FontUnderline. Sin embargo, cuando especifique un tamaño inferior a 8 puntos para una fuente TrueType, primero deberá establecer el tamaño en puntos con la propiedad FontSize, luego especificar la propiedad FontName y después establecer de nuevo el tamaño con FontSize. El entorno operativo Microsoft Windows utiliza una fuente distinta para las fuentes TrueType con un tamaño inferior a 8 puntos.

Index

Igual que el ya estudiado para otros controles.

InitDir

Devuelve o establece el directorio de archivos inicial.

Sintaxis objeto.InitDir [= cadena]

La sintaxis de la propiedad InitDir consta de las siguientes partes:

objeto Nombre que define al CommonDialog

cadena Expresión de cadena que especifica el directorio de archivos inicial.

Si no se especifica esta propiedad, se utilizará el directorio actual.

Left y Top

Estas propiedades solamente afectan a la colocación del icono en el formulario. No afectan a la colocación del CommonDialog durante la ejecución. La posición del CommonDialog en tiempo de ejecución no puede controlarse.

Esta afirmación de que la posición del CommonDialog no es controlable es válida para sistemas a 32 bytes. En VB 4 de 16 bits, el CommonDialog aparece aproximadamente en la parte superior izquierda del formulario que lo contiene. Algunos programadores han optado por poner un formulario para contener solamente al CommonDialog, y así, controlando la posición de ese formulario, poder controlar la posición (aproximada) en la que aparece el CD.

Esto no ocurre para sistemas a 32 bytes, en los que el CD aparece siempre en la parte superior izquierda de la pantalla, independientemente de donde esté el formulario que lo contiene.

Page 120: Informe de programacion

MaxFileSize

Devuelve o establece el tamaño máximo del nombre de archivo abierto con el control CommonDialog.

Sintaxis objeto.MaxFileSize [= valor]

La sintaxis de la propiedad MaxFileSize consta de las siguientes partes:

objeto = Nombre que define al CommonDialog

valor = Número entero que especifica el tamaño máximo del nombre de archivo en bytes. El rango de esta propiedad es 132KB. El valor predeterminado es 256.

Name

Nombre que define al CommonDialog

PrinterDefault

Devuelve o establece una opción que determina si la configuración elegida por el usuario en el cuadro de diálogo Imprimir se utiliza para modificar la configuración predeterminada de impresora del sistema.

Sintaxis objeto.PrinterDefault [= valor]

objeto = Nombre que define al CommonDialog

valor = Expresión booleana que especifica si lo seleccionado por el usuario se utiliza para modificar la configuración de impresora predeterminada del sistema, según se indica en Configuración.

Las opciones para valor son:

True Las opciones que elija el usuario en el apartado Configurar del cuadro de diálogo Imprimir (selección de la impresora, orientación, etcétera) se utilizan para modificar la configuración de impresora en el archivo WIN.INI del usuario. (En el sistema operativo Windows NT, esta información se almacena en el Registro).

False Las opciones que elija el usuario no se utilizan para modificar la configuración de impresora predeterminada del sistema.

Utilice esta propiedad, que por defecto está a True, para poner o no poner como impresora predeterminada, la impresora seleccionada con el CommonDialog. Puede por ejemplo, querer imprimir un texto en una impresora determinada, pero solo ese texto, y no quiere cambiar la impresora predeterminada por el hecho de haber seleccionado en este momento

Page 121: Informe de programacion

otra impresora. Ponga esta propiedad a False (recuerde que por defecto está a True) para que la impresora seleccionada no se quede como impresora por defecto.

Tag

Lo mismo que se ha explicado para otros controles.

779. SetFocusfunción780. Sets the keyboard focus to the specified window.Establece el foco del

teclado a la ventana especificada. The window must be attached to the calling thread's message queue. La ventana se debe adjuntar a la cola de mensajes del hilo que llama.

781. Syntax Sintaxis783. HWND WINAPI SetFocus( HWND WINAPI SetFocus (784. __in_opt HWND hWnd __in_opt HWND hWnd785. ); );

786. Parameters Parámetros 787. hWnd [in, optional] hWnd [in, opcional] 788. Type: HWNDTipo: HWND789. A handle to the window that will receive the keyboard input. Un

identificador de la ventana que recibirá la entrada de teclado. Ifthisparameteris NULL, keystrokes are ignored. Si este parámetro es NULL, las pulsaciones de teclado se ignoran.

790. ReturnValue Valor de Retorno 791. Type: HWND Tipo: HWND792. If the function succeeds, the return value is the handle to the window that

previously had the keyboard focus. Si la función tiene éxito, el valor devuelto es el identificador de la ventana que anteriormente tenía el foco del teclado. If the hWnd parameter is invalid or the window is not attached to the calling thread's message queue, the return value is NULL. Si el parámetro hWnd no es válido o la ventana no se adjunta a la secuencia de mensajes de la cola de llamadas, el valor de retorno es NULL. Toget extended error information, callGetLastError . Para obtener información sobre el error, llamar a GetLastError .

793. Remarks Comentarios794. The SetFocus function sends a WM_KILLFOCUS message to the window

that loses the keyboard focus and a WM_SETFOCUS message to the window that receives the keyboard focus. La función SetFocus envía un WM_KILLFOCUS mensaje a la ventana que pierde el foco del teclado y un WM_SETFOCUS mensaje a la ventana que recibe el foco del teclado. It also activates either the window that receives the focus or the parent of the window that receives the focus. También activa o la ventana que recibe el foco o el padre de la ventana que recibe el foco.

795. If a window is active but does not have the focus, any key pressed will produce the WM_SYSCHAR , WM_SYSKEYDOWN , or WM_SYSKEYUP message. Si una ventana está activa pero no tiene el foco, cualquier tecla pulsada

Page 122: Informe de programacion

producirá el WM_SYSCHAR , WM_SYSKEYDOWN o WM_SYSKEYUP mensaje. If the VK_MENU key is also pressed, the lParam parameter of the message will have bit 30 set. Si la clave VK_MENU Se insiste además en el parámetro lParam del mensaje tendrá poco 30 Set. Otherwise, the messages produced do not have this bit set. De lo contrario, los mensajes producidos no tienen este bit.

796. By using the AttachThreadInput function, a thread can attach its input processing to another thread. Al utilizar el AttachThreadInput función, un hilo puede adjuntar su proceso de entrada a otro hilo. This allows a thread to call SetFocus to set the keyboard focus to a window attached to another thread's message queue. Esto permite un hilo para llamar a SetFocus para establecer el foco de teclado a una ventana adjunta a la cola de mensajes hilo de otro.

797. Examples Ejemplos798. For an example, see Initializing a Dialog Box . Para un ejemplo, vea

Inicialización de un cuadro de diálogo . 799. Requirements Requisitos

Minimumsupportedclient Mínimos admitidos cliente

Windows 2000 Professional Windows 2000 Professional

Minimumsupported server Mínimos admitidos servidor

Windows 2000 Server Windows 2000 Server

Header CabeceraWinuser.h (include Windows.h) Winuser.h (incluirwindows.h)

Library Biblioteca User32.lib User32.libDLL DLL User32.dll User32.dll

800. GetFocus función 801. Retrieves the handle to the window that has the keyboard focus, if the

window is attached to the calling thread's message queue. Recupera el identificador de la ventana que tiene el foco del teclado, si la ventana se adjunta a la cola de mensajes del hilo que llama.

802. Syntax Sintaxis 804. HWND WINAPI GetFocus(void); HWND WINAPI GetFocus (void);

805. Parameters Parámetros 806. This function has no parameters. Esta función no tiene parámetros. 807. ReturnValue Valor de Retorno 808. Type: HWND Tipo: HWND809. The return value is the handle to the window with the keyboard focus. El

valor de retorno es el identificador de la ventana con el foco del teclado. If the calling thread's message queue does not have an associated window with the keyboard focus, the return value is NULL. Si la cola el subproceso de llamada de mensaje no tiene una ventana asociada con el foco del teclado, el valor de retorno es NULL.

810. Remarks Comentarios

Page 123: Informe de programacion

811. GetFocus returns the window with the keyboard focus for the current thread's message queue. GetFocus devuelve la ventana con el foco de teclado para el hilo de mensajes de la cola de la corriente. If GetFocus returns NULL, another thread's queue may be attached to a window that has the keyboard focus. Si GetFocus devuelve NULL, el hilo de la cola de otro puede ser conectado a una ventana que tiene el foco del teclado.

812. Use the GetForegroundWindow function to retrieve the handle to the window with which the user is currently working. Utilice el GetForegroundWindow función para recuperar el identificador de la ventana con la que el usuario está trabajando actualmente. You can associate your thread's message queue with the windows owned by another thread by using the AttachThreadInput function. Puede el hilo de la cola de mensajes asociada con las ventanas de propiedad de otro hilo usando las AttachThreadInput función.

813. To get the window with the keyboard focus on the foreground queue or the queue of another thread, use the GetGUIThreadInfo function. Para obtener la ventana con el foco de teclado en la cola de primer plano o de la cola de otro hilo, utilice el GetGUIThreadInfo función.

814. Examples Ejemplos 815. For an example, see "Creating a Combo Box Toolbar" in Using Combo

Boxes . Para obtener un ejemplo, consulte "Creación de un cuadro combinado barra de herramientas" en Uso de los cuadros combinados .

816. Requirements Requisitos

Minimumsupportedclient Mínimos admitidos cliente

Windows 2000 Professional Windows 2000 Professional

Minimumsupported server Mínimos admitidos servidor

Windows 2000 Server Windows 2000 Server

Header CabeceraWinuser.h (include Windows.h) Winuser.h (incluir windows.h)

Library Biblioteca User32.lib User32.libDLL DLL User32.dll User32.dll

817.818. Introducción819. La CPU(Central ProcesingUnit) es la parte inteligente del sistema. Interpreta

las instrucciones del programa de usuario y consulta el estado de las entradas. Dependiendo de dichos estados y del programa, ordena la activación de las salidas deseadas.

820. La CPU está constituida por los siguientes elementos:

ProcesadorMemoria monitor del sistemaCircuitos auxiliares

821.   822. Procesador

Page 124: Informe de programacion

823. Está constituido por el microprocesador, el reloj(generador de onda cuadrada) y algún chip auxiliar.                       

824. El micropocesador es un circuito integrado (chip), que realiza una gran cantidad de operaciones, que podemos agrupar en:            

Operaciones de tipo lógico.Operaciones de tipo aritmético.Operaciones de control de la transferencia de la información dentro del autómata.

825. Para que el microprocesador pueda realizar todas estas operaciones está dotado de unos circuitos internos que son los siguientes:

Circuitos de la unidad aritmética y lógica o ALU: Es la parte del µp donde se realizan los cálculos y las decisiones lógicas para controlar el autómata.Circuitos de la unidad de control (UC) o Decodificador de instrucciones: Decodifica las instrucciones leídas en memoria y se generan las señales de control.Acumulador: Es la encargada de almacenar el resultado de la última operación realizada por el ALU.Flags:Flags, o indicadores de resultado, que pueden ser consultados por el programa.Contador de programa: Encargada de la lectura de las instrucciones de usuario.Bus(interno): No son circuitos en si, sino zonas conductoras en paralelo que transmiten datos, direcciones, instrucciones y señales de control entre las diferentes partes del p.

826.               827. Memoria  monitor del sistema828. Es una memoria de tipo ROM, y además del sistema operativo del autómata

contiene las siguientes rutinas, incluidas por el fabricante.

Inicialización tras puesta en tensión o reset.Rutinas de test y de respuesta a error de funcionamiento.Intercambio de información con unidades exteriores.Lectura y escritura en las interfaces de E/S.

829.   830. Funciones básicas de la CPU 831. En la memoria ROM del sistema, el fabricante ha grabado una serie de

programas ejecutivos, software del sistema y es a estos programas a los que accederá el µp para realizar las funciones.

832. El software del sistema de cualquier autómata consta de una serie de funciones básicas que realiza en determinados tiempos de cada ciclo.

833. En general cada autómata contiene y realiza las siguientes funciones:

Vigilar que el tiempo de ejecución del programa de usuario no exceda de un determinado tiempo máximo. A esta función se le denomina Watchdog.Ejecutar el programa usuario.Crear una imagen de las entradas, ya que el programa de usuario no debe acceder directamente a dichas entradas.

Page 125: Informe de programacion

Renovar el estado de las salidas en función de la imagen de las mismas, obtenida al final del ciclo de ejecución del programa usuario.Chequeo del sistema.834. 1. Introducción 835. Vivimos un momento de transición profunda entre una sociedad de corte

industrial y otra marcada por el procesamiento de la informática y las telecomunicaciones; el uso de la información afecta de manera directa e indirecta en todos los ámbitos de la sociedad, y les imprime su sello de indiferencia entre los ricos y los pobres. La información es inherente a la existencia de las personas y de las sociedades. Permite conocer la realidad, interactuar con el medio físico, apoyar la toma de decisiones y evaluar las acciones de individuos y de grupos. El aprovechamiento de la información propicia la mejoría de los niveles de bienestar y permite aumentar la productividad y competitividad de las naciones.

836. El mundo de hoy, esta inmerso en una nueva revolución tecnológica basada en la informática, que encuentra su principal impulso en el acceso y en la capacidad de procesamiento de información sobre todos los temas y sectores de la actividad humana. Ha contribuido a que culturas y sociedades se transformen aceleradamente tanto económica, como social y políticamente, con el objetivo fundamental de alcanzar con plenitud sus potencialidades.

837. 2. La relación ciencia técnica y desarrollo social 838. Desde sus inicios el hombre ha buscado la forma de mejorar su calidad de

vida y su forma de trabajo, para ello ha buscado métodos adecuados tales como la tecnología que ha desarrollado a través de la ciencia. Esto ha permitido llegar a grandes inventos científicos desde la calculadora hasta la computadora y el Internet, este gran avance ha llevado a la humanidad a tener un enorme desarrollo social.

839. En el desarrollado social de la humanidad la computadora se ha convertido en pocos años en parte integrante de la vida cotidiana.

840. En un mundo en constante cambio cada persona se siente implicada en formar parte del mundo de la información.

841. Los continuos avances en otras ramas de la ciencia como la robótica o de la inteligencia artificial han permitido hacer realidad muchos proyectos que hace años parecían solo fantasías futuristas.

842. La computadora es una máquina que nos permite realizar muchas tareas diferentes, por esta razón ha influido en muchos aspectos de nuestra vida.

843. Negocios 844. En las últimas, las computadoras han cambiado drásticamente las prácticas

de negocios en todo el mundo se utilizan computadoras en 3 áreas generales: 845. •Aplicaciones para manejo de transacciones: -Se refiere al registro de un

evento al que el negocio debe de responder. Los sistemas de información dan seguimiento a estos eventos y forman la base de las actividades de procesamiento de la empresa. Estos sistemas pueden operar en cualquier combinación de mainfranes, minis y micros y son utilizadas por muchas individuos dentro de la empresa.

846. •Aplicaciones de productividad personal: - Se enfoca a mejorar la productividad de las personas que las utilizan. Automatizan las tareas que consumen mucho tiempo y hacen que la información este mas disponible, haciendo que las personas sean mas eficientes. Las aplicaciones de productividad personal incluyen: Procesadores de Palabra que nos permiten capturar, editar e imprimir texto en una

Page 126: Informe de programacion

gran variedad de formatos y estilos; hojas electrónicas de cálculo que realizan cómputos sobre hileras y columnas de números, y bases de datos que pueden guardar y administrar datos, números e imágenes.

847. Computación en grupo de trabajo: -Esta es un área de aplicaciones de negocios surgida en los últimos años y que aun esta siendo definida. Combina elementos de productividad personal con aplicaciones de transacciones, para crear programas que permitan a grupos de usuarios trabajar con una meta común. La computación en grupos de trabajo frecuentemente esta orientada a documentos. Las tareas de los miembros tienen que ser sincronizadas y coordinadas. Todos consultan y actualizan el proyecto en la computadora. Cada cual trabaja en su parte, pero se coordinan, reportando el avance y compartiendo la información.

848. Medicina y cuidado de la salud 849. Actualmente, se usan las computadoras para todo en medicina desde

diagnósticos de enfermedades hasta el monitoreo de pacientes durante cirugía y el control permanente de prótesis.

850. Algunas aplicaciones medicas interesantes usan pequeñas computadoras de propósito que operan dentro del cuerpo humano para ayudarles a funcionar mejor.

851. Ejemplo el implante de coclea, un aparato especial para el oído que permite escuchar a personas con marcada deficiencia auditiva.

852. Otro uso de las computadoras en hospitales es la automatización de técnicas para crear imágenes, las cuales producen imágenes completamente dimensiónales con mucho mayor detalle y mejor riesgo que las comunes de rayos x. Técnicas más recientes incluye la creación de imágenes de resonancia magnética (MRI), y la tomografía con emisiones de positrones (Pet) usando estas técnicas, los médicos pueden ver la parte interna del cuerpo y estudiar cada órgano con detalle.

853. En las telecomunicaciones 854. La tecnología avanzada a la misma velocidad que la computación. 855. Por ejemplo el internetworking es el campo dentro de las redes de datos, que

se encarga de integrar o comunicar una red de área local con otra, constituyendo redes MANOWAN. Una red puede estar compuesta de elementos simples incluso de redes mas pequeñas, pero surge la necesidad de conectar redes entre sí para conseguir una mayor capacidad de transferencia, acceso de datos, servicios de otras redes etc.

856. Educacion857. Las Instituciones educativas están particularmente integradas en las

computadoras como una herramienta interactiva para el aprendizaje. Los programas de educación asistida por computadora (CAE), pueden solicitar retroalimentación del usuario y responder de manera apropiada. En forma similar, programas interactivas de aprendizaje pueden enseñar, y hacer pruebas de comprensión y repaso basados en lo aprendido por el estudiante.

858. Ciencia 859. Los científicos utilizan las computadoras para desarrollar teorías, recolectar

y probar datos y para intercambiar electrónicamente información con otros colegas alrededor del mundo.

860. También es imposible simular eventos complejos con las computadoras. Los científicos pueden utilizar potentes computadoras para generar estudios detallados

Page 127: Informe de programacion

de la forma en que los sismos efectúan a los edificios o la contaminación afecta los patrones climáticos.

861. Ingeniería y arquitectura 862. Cuando se diseña un objeto con una computadora, se crea un modelo

electrónico mediante la descripción de las 3 dimensiones del objeto. En papel se tendría que producir dibujos diferentes para cada perspectiva, y para modificar el diseño habría que volver a dibujar cada perspectiva afectada. La manera de diseñar objetos con una computadora se llama diseño asistido por computadora (CAD).

863. Manufactura 864. Además del diseño, las computadoras están jugando un papel mas

importante cada DIA en la manufactura de productos. 865. La fabricación con computadoras y robots sé Yam manufactura asistida por

computadora(CAM). De modo mas reciente, la manufactura con integración de computadoras (CIM) ha dado a las computadoras un papel adicional en el diseño del producto, el pedido de partes y la planeación de la producción de tal manera que las computadoras pueden coordinar el proceso completo de manufactura.

866. Astronomía 867. Puede almacenar imágenes solares, estelares radiaciones, etc. De tal manera

que estos datos quedan archivados y así se facilitan el estudio y posteriormente tanto estadísticos como técnico de las imágenes obtenidas.

868. 3. Tecnología por y para el hombre 869. La ciencia y la tecnología juegan un papel importante en la vida del hombre,

hoy en DIA se nos hace mas fácil utilizar diversos elementos que de no haber sido por la ciencia y el desarrollo tecnológico no podríamos usar, como por ejemplo la energía eléctrica para muchas de nuestras actividades diarias.

870. La computadora más antigua, pero más moderna (el cerebro), le ha permitido al hombre distinto mantenerse informado instantáneamente de lo que ocurre en cualquier parte del mundo. Son ganancias también de este siglo, el teléfono, la televisan, la conquista del espacio, las computadoras y la comunicación electrónica, entre otras. La comunicación electrónica, ha dado vida a la maravilla de las computadoras, que hoy se encuentran presentes en todo. Y a que contando con una computadora y una linea telefónica, se tiene acceso a la red electronica que no tiene fronteras físicas para comunicarse. Tambien podemos definirla como el intento de crear vida o algo parecido a ella.

871. Algunas personas piensan que la tecnologia en informacion que avanza con rapidez presenta un interes por “EL HOMBRE Y SU DESTINO”. La tecnologia de la información a mejorado nuestro estilo de vida, pero debemos reconocer que la sociedad a establecido un verdadero compromiso con las computadoras.

872. La tecnologia ha avanzado, en nuestras ciudades, casas y lugares de trabajo (en pocas palabras, en nuestra vida.

873. Gran parte de estas tecnologiastendran éxito, otras fracasaron. Pero todas afectaran la computación personal en los años venideros.

874. El hombre ahora tratara que las maquinas sean pensantes donde deberan ser capaces de: procesar un lenguaje natural, para poder establecer una comunicación satisfactoria con los humanos; presentar el conocimiento.

875. Beneficios Que Brinda 876. Las personas se benefician como consumidores de los bienes y servicios.

Page 128: Informe de programacion

877. Los beneficios que arrojan los servicios mediante la computadora en las empresas son muchisimas, a continuación citaremo algunas:

878. · Esperas mas cortas en los bancos, en las oficinas de lineaaerea, en los hoteles y en las arrendadoras.

879. · Respuesta más rápidas y exactas esto se logra con la utilización de los multimedia, también sirve de guia o la ubicación de algún lugar.

880. · Servicio más eficiente a los clientes. Logrando cualquier compra mediante el internet en una variada gama de opciones.

881. En el área de salud influyen: 882. · Pruebas masrapidas y completas para detectar e identificar enfermedades. 883. · Método más exacto de supervisión fisiológica. 884. · Mejor control de resultados de: análisis clínicos y de la entrega de

medicamentos. 885. 4. El profesional informático ante los problemas del México de hoy Los

problemas económicos, sociales, culturales, políticos y tecnológicos, entre otros, que han afectado a nuestro país lo han comprometido y obligado a tener preparación integral y eficiente ante los problemas de la sociedad actual.

886. Esto debido a que la informática es sin duda alguna disciplina que mayor progreso a registrado en los últimos años y en forma acelerada. Hoy en día, la informática se aplica a todas las disciplinas del conocimiento, de ahí la importancia del profesional de la informática de estar relacionanado con esas disciplinas y ser parte importante en el buen funcionamiento de la organización de un país. El empleo de las computadoras ha producido en ocasiones desplazamiento y desempleo, provocado por las distintas funciones y la reducción del esfuerzo que requiere el uso de las mismas.

887. El desempleo se refiere al numero de personas que se encuentran sin empleo contra su voluntad. El desplazamiento ocurre cuando se eliminan trabajadores como resultado en el cambio tecnológico.

888. Transformación 889. Se divide en 3 fases: diagnostico y estrategia, análisis detallado y planeación,

la implantación. 890. Él diagnostica revisa todo el ambiente para que posteriormente se

identifiquen y consideren oportunidades para la mejora del sistema. El análisis detallado y planeación permiten identificar los cambios del año 2001 en códigos de datos y planear su implantación que toma el concepto de fabrica de software para combinar y probar los cambios al código y los datos para el año 2001. La fabrica de software junta herramientas y tareas en una línea de producción integrado para implantar los cambios del año 2001.

891. En La Formacion892. Nuestro propósito es forma profesionales capaces de diseñar y desarrollar

sistemas de software, así como especificar y evaluar configuraciones de sistemas de computo en todo tipo de organizaciones.

893. Mientras un ejecutivo informativo no conozca lo suficiente de la administración y no esta al día con los avances tecnológicos, su preparación no Sera buena. No es extraño, encontrar profesionalitas técnicos que ejecutan su trabajo de una forma bastante mejor que un licenciado en informática, pero esto se debe a que ellos van a la vanguardia, preparándose constantemente en los cursos, conferencias,

Page 129: Informe de programacion

viajando a otras partes de la republica y adquiriendo conocimientos, los cuales los hace cada vez mejor en el desarrollo de sus funciones, dominando de esta manera puestos mas altos que un ejecutivo en informática.

894. La constante necesidad de estar actualizados en estas ramas hace que la atención principal de los profesionalitas en informática se fija casi por completo en las operaciones y posibilidades electrónicas de las maquinas, marginando A los demás conocimientos como los administrativos que como ejecutivos deben de poseer.

895. La demanda excesiva de ejecutivos en el campo de la informativo, ha provocado que estas se les habilite las filas de los analistas y programadores con muy pocas o ningunas capacidades administrativas, los que trae como consecuencia que estas improvisen el estilo de dirección de estos ejecutivos que no es mas que la de un técnico conocedor del equipo, cuya mentalidad y atención no pueden sustraer de la influencia decisiva de su propia y personal experiencia, gravitando siempre el entorno de la computadora.

896. En La Responsabilidad 897. Diseñar compiladores, sistemas operativos, instalar y evaluar redes de

teleproceso. Evaluar, seleccionar e instalar equipo de computo. También existe integridad en los datos si estos son exactos y completos y se introducen en el sistema de computo, se procesan correctamente y no pierden su exactitud por errores, pero de nada le sirve a la gente saber que la información que a ella se refiere es correcta y completa, si también sabe que la información no esta segura y protegida contra robo.

898. Entre las responsabilidades están en el de informar correctamente a las personas que laboran en las empresas, acerca de las computadoras los beneficios que estas nos aportan y mantener una relación agradable entre el personal y el propósito profesional.

899. Otras responsabilidades es la de no conocer actos que empañen su imagen, como lo son el fraude, crimen, violar la privacía de las personas para su beneficio aprovechando su destreza en el manejo de la computadora.

900. La responsabilidad del profesional es dar confiabilidad y sobre todo vivir como un medio, un informativo debe estar actualizado en los cambios tecnológicos y basarse en las experiencias humanas para aprovechar las computadoras con el fin de que estas lleven a cabo las tareas necesarias. Debe manejar muy bien un sistema de computo o de información.

901. La tecnología a sido un obstáculo que a tenido que soportar con su labor y obtener los resultados deseados, se dice el profesionalita debe trabajar con la computadora y no con el computador.

902. El Profesionalismo Y Otros Valores 903. El profesional informativo es de suma importancia ya que los datos o

información son los recursos más valiosos en las organizaciones y aun que son intangibles, necesitan ser controladas y auditadas con el mismo cuidado que los demás inventarios de las organizaciones, entonces, la tarea del profesional informativo no solo consiste en el procesamiento electrónico de datos, sino tambien establecer controles y mecanismos de seguridad que permitan asegurar la información.

Page 130: Informe de programacion

904. En la educación los retos son mayores, ya que los proyectos, que existen con respecto a redomas educativas en la impartición de clases, se planean, que los sistemas de computo tengan una mayor ingerencia en la educación de la república. Un Código de ética es aquel que advierte a los miembros informaticos sobre lo que se les permite hacer en cuanto al desarrollo de su trabajo y en caso de violarlo pueden ser expulsados o cesados.Un código de ética dicta algunas normas de comportamiento, pero no se hiede esperar que las sociedades profesionales vigilen malos actos de su comunidad.

905. Unos ejemplo de código de ética es el siguiente: 906. 1. Mantener el estándar mas alto de la conducta profesional. 907. 2. Evitar situaciones que creen conflictos de intereses. 908. 3. No violar el carácter confidencial de su patrón o de aquellos a quienes

prestan sus servicios. 909. 4. Configurar aprendiendo de tal modo que su conocimiento siga el ritmo de

la tecnología. 910. 5. Nunca retener información relativa a un problema o una situación de

interés publico. 911. 6. Usar la información juiciosamente y mantener en todo momento la

integridad del sistema. 912. 7. No olvidar los derechos o la privacidad de los demás. 913. 8. Tomar medidas adecuadas al encontrar practicas no éticas o ilegales. 914. 9. No aprovechar a beneficio propio los defectos del sistema de computo de

un patrón. 915. 10. Realizar todos los trabajos en la mejor medida posible. 916. 5. Los derechos humanos frente a la informatica917. El problema es la vulnerabilidad de los sistemas de computo que ha

aumentado en los últimos años, por lo que el problema de seguridad se ha vuelto critico. Las primeras computadoras eran accesibles para unos cuantos especialistas, sin embargo, al aumentar élnumero de los sistemas de computo, la interacción directa con estos sistemas y sus datos se volvió algo rutinario hasta para los usuarios casuales.

918. La regularización jurídica de los derechos y obligaciones consecuentes de la creación, distribución, explotación y/o utilización del hardware y Software, con su protección en los derechos de propiedad intelectual, incluso con un obligado acercamiento a la protección jurídica de los productos multimedia.

919. Atendiendo, naturalmente, de una forma especial a la protección jurídica de los programas de ordenador, considerados como un bien inmaterial, contra la llamada piratería del software.

920. Las responsabilidades, derechos y obligaciones derivadas de la transferencia electrónica de fondos o de datos, incluso entre diversos países, con diferentes regulaciones jurídicas, y las responsabilidades consecuentes de operaciones en cadena, por medio de redes de comunicaciones pertenecientes a distintos territorios y bajo dispares ordenarlos jurídicos.

921. El llamado delito informativo, entendiendo por tal la realización de una acción que reuniendo las características que delimitan el concepto de delito, sea llevada a cabo utilizando un electo informático y/o telemático o vulnerando los derechos del titular de un elemento informatizó, ya sea Hardware o Software.

Page 131: Informe de programacion

922. Seguridad física, lógica y jurídica deben de ser prioritarias en la implantación de los nuevos servicios, pero al mismo tiempo esa seguridad tiene que jugar un papel importante, con una dinámica de desarrollo educacional, social y económica, valiente en sus presupuestos y flexible en su realización modificando la actuación ciertamente cuando se desvié de los fines previstos.

923. Confidencialidad 924. Una persona que proporciona información acerca de ella a cualquier

departamento o empresa tiene el derecho a exigir a este departamento de no divulgar la información que le fue proporcionada.

925. Los controles de Acceso protegen al equipo y las instalaciones de la computadora. Las contraseñas frecuentemente controlan el acceso a los sistemas de red, especialmente los que tienen terminales remotas. Algunos sistemas notifican al personal de seguridad si el usuario no proporciona la contraseña correcta en tres intentos, esto impide que usuarios no autorizados traten de adivinar la manera de entrar al sistema. Algunos sistemas en línea son diseñados para sacar del sistema automáticamente al usuario que no haya introducido datos por un determinado lapso, por ejemplo, 20 minutos.

926. Los controles de sistemas aseguran el desarrollo apropiado de los sistemas de información. Una empresa debe controlar que cambios deben hacerse a un sistema y quien puede efectuarlos.

927. El control de programas verifica que los datos se introduzcan y procesen apropiadamente y que la información resultante quede expresada correctamente como salida.

928. En el sistema de procesamiento real, la computadora usualmente despliega el campo erróneo con un mensaje de error, de modo que el usuario puede hacer correcciones inmediatamente.

929. Las computadoras son un instrumento que estructura gran cantidad de información la cual puede ser confidencial y puede ser mal utilizado o divulgada a personas que hagan mal uso de estas. También pueden ocurrir robos fraudes o sabotajes que provoquen la actividad computacional.

930. Las computadoras o los sistemas de información han sido descubiertos por accidente y la gran mayoría no son divulgados para evitar ideas mal intencionadas. La introducción de información confidencial a la computadora puede provocar que este concentrada en las manos de unas cuantas personas y una alta dependencia en caso de perdida de los registros.

931. Los paquetes de control de acceso protegen contra el acceso no autorizado, estos dichos paquetes han sido populares desde hace muchos años, los principales proveedores ponen a la disposición de algunos de estos paquetes.

932. Un buen centro de computo depende, de gran medida, de la integridad, estabilidad y lealtad del personal es necesario hacerles exámenes psicológicos, médicos y tener muy en cuenta sus antecedentes de trabajo.

933. Un suceso potencial y peligroso podría ser producido por una persona, un objeto o un evento. Las amenazas son potenciales para causar daño pero no son una debilidad especifica

934. Las amenazas externas se originan fuera de un sistema, pueden llegar de forma no intencional desde organizaciones confiables o desde los adversarios. Otros podrían ser negligentes con la información o dañar o liberar información

Page 132: Informe de programacion

inconscientemente. Así, las amenazas externas pueden ser intencionales o no intencionales.

935. Las intencionales pueden venir de info.-terroristas, competidores o bromistas. Los info.-terroristas quieren destruir los sistemas de información porque perciben al sistema como una amenaza a sus sistemas de valor.

936. Los bromistas son crackers y hackers quienes disfrutan del desafió técnico de forzar la entrada a los sistemas de computación, especialmente en los de dinero digital.Las amenazas internas son tanto intencionales como no intencionales.

937. Los sistemas son probablemente muy vulnerables a ser atacados desde adentro. Es difícil detectar cuando roban datos o dañan al sistema. Las amenazas no intencionales provienen de accidentes y/o de negligencia.

938. La meta principal aquí es prevenir la transferencia de tecnología, información propietaria y otros datos sensitivos mas allá del sistema de dinero digital. Existen cientos de organizaciones privadas, que reúnen y después venden información personal. Entre los problemas asociados con esta recolección de datos se pueden mencionar:

939. Reunión de datos sin necesidad legítima de conocerlos. 940. Un Ejemplo de recolección de datos de dudosa justificación lo constituyen

las empresas privadas que reúnen la información personal para proporcionarla a compañías de seguros, patrones y otorgantes de crédito. Los datos de este tipo muchas veces se obtienen cuando los investigadores entrevistan a dos o tres de los vecinos o conocidos de la persona en cuestión.

941. Reunión de datos inexactos e incompletos. 942. En un sistema computarizado es probable que haya menos personas ahora

detectar errores y la velocidad con la que proporciona la información inexacta a los usuarios del sistema pueden ser mucho mayor que la velocidad con la que puede detectar y corregir errores.

943. La criptografía, firewalls y seguridad procesal deberían brindar, soportar y monitorear el proceso integral en el ambiente global actual. Los objetivos de control de la tecnología de información deben asegurar el servicio y los sistemas de seguridad.

944. Libertad 945. La protección legal primaria que tienen los fabricantes o productores de

software es la de Copryringth o derechos de autor. Las leyes federales no son claras respecto a que derechos proporciona el Copyright a unos productos de software. Muchos fabricantes de software han tratado de colocar medios o dispositivos de protección contra copia en sus discos de software para impedir la piratería, mucha gente objeta fuertemente los medios de protección contra copia, que creen que penalizan injustamente Alos usuarios de software, haciéndoles difícil crear copias de respaldo legitimas de software adquirido legalmente.

946. La libertad es el ámbito de la información podría definirse como la posibilidad que tienen los usuarios para ingresar a los sistemas de información, ya sea para conocer el saldo de su cuenta bancaria o para obtener información científica de algunos centros investigación sin alterar dicha información para que esta no se pueda definir como un delito.

947. Cada organismo a creado un banco de datos propio independiente de otros bancos. Los bancos más reconocidos por la mayoría de las personas son:

Page 133: Informe de programacion

948. · Interior Documento Nacional de Identidad: cuyo fin es conocer el domicilio, lugar de nacimiento, edad, profesión de una persona.

949. · Interior Trafico: contiene los datos otorgados de los permisos de conducir, infracciones, suspensiones.

950. · Interior Policía: fichas policíacas, huellas dactilares. 951. · Administraciones Públicas: contienen información acerca de funcionarios y

empleados políticas. 952. · Justicia: contiene datos de nacimientos, defunciones, estado civil,

expedientes y procedimientos judiciales. 953. · Educación: contienen información escolar. 954. Privacidad 955. Se refiere a la habilidad de guardar información oculta a los ojos de los

usuarios. Lo ideal seria evitar que cualquiera obtuviera información sobre nosotros, nuestro sistema de computadora, sitios web favoritos y otros datos personales.

956. La privacidad ha sido definida como la demanda de personas, grupos o instituciones para determinar para ellos mismos cuando, como y que información personal es de comunicar a otros. Algunas personas creen que la enorme capacidad de las computadoras es de almacenar y recuperar información hace más fácil para el gobierno o las empresas infringir nuestro derecho a la privacía.

957. La recolección de datos favorece la fluidez del funcionamiento del gobierno de los negocios y de la investigación. Puede utilizarse los datos para chantaje, en especial de tipo político a gran escala por partes de gobiernos o políticas con demasiado poder.

958. Los errores en la recolección de datos pueden llevar a muchas practicas injustas, tales como negar empleo o crédito. Datos obsoletos o incompletos que pueden provocar problemas.

959. Los sistemas de transferencia electrónica de fondos (EFT) (TEF) también parecen implicar un atentado a la privacía. Este sistema es muy popular entre los proveedores ya que la mala escritura de un cheque sea cosa del pasado. El beneficio para los bancos es que el sistema reduce los tramites(o papeleo) requeridos para procesar los cheques.

960. Las organizaciones pueden ayudar a salvaguardar la privacía de los datos y reducir sus oportunidades de convertirse en victima de delitos informáticos de computadora instituyendo un sistema de seguridad. Un sistema de seguridad debe incluir un programa de control interno, procedimientos organizaciones, equipo, software y base de datos. La meta de la seguridad de las computadoras y del control interno desproteger esos recursos.

961. La sociedad necesitara adaptarse a una legislación que limite la recolección, almacenamiento y acceso a la información personal. Entre las limitaciones que han sugerido están anotados en este trabajo:

962. 1. Personas a las que se les debe informar acerca del tipo de información que esta conservando.

963. 2. Las personas deben tener derecho a realizar el acceso a cualquier información almacenada a cerca de ella misma.

964. 3. Toda información debe ir firmada por la persona que almacenó. Correo electrónico

Page 134: Informe de programacion

965. Esto ha llevado a numerosos legítimos por parte de empleados y a algunos juicios por la violación de la privacía.

966. Cuando esta utilizando un sistema de correo electrónico, tenga en mente que los mensajes pueden ser monitoriados. Los controles pueden ser divididos en tres categorías básicas: controles generales, controles de programas y documentación. La privacidad es también un factor significante en algunos sistemas electrónicos de pago. Esos sistemas electrónicos deberían proveer la capacidad de asegurar que la información no sea revelada innecesariamente.

967. La definición de seguridad en computación se refiere a las disciplinas que protegen la integridad, disponibilidad y confidencialidad de los sistemas y activos de información.

968. La carencia de un sistema de dinero digital seguro puede dar como resultado consecuencias serias para una compañía, incluyendo:

969. · La destrucción de los datos. 970. · La exposición de la información y las fuentes propietarias. 971. · El acceso no autorizado a los recursos de la computadora. 972. · La perdida de la confidencialidad y el secreto. 973. · La perdida de la confianza del cliente. 974. · La negación de los servicios a los empleo y clientes 975. · La perdida de tiempo en la administración del sistema. 976. · Productos corrompidos o dañados enviados a los clientes. 977. · La información personal y financiera comprometida, dañada, destruida o

alterada. 978. · La seguridad de los sistemas debe incluir: 979. · La protección de los datos almacenados contra su divulgación accidental o

mal intencionada. 980. · La protección física del equipo y los programas para que no sean dañados o

destruidos. 981. · La vulnerabilidad de los sistemas ha aumentado también a causa de los

siguientes factores: 982. La información que se encuentra en un banco de datos relativamente

completa y actualizada puede en un banco de datos relativamente completa y actualizada puede tener el valor suficiente como para tentar a intentar obtener acceso a ella. Cada vez mas personas cuentan con los conocimientos suficientes para programas, penetrar y manipular sistemas de computo.

983. Mencionaremos algunas actas que protegen la libertad y privacia984. 6. Libertad y privacia985. ACTA DE PRIVACIDAD DE 1974. Se refiere a la protección de la

privacidad de los individuos cuyos datos personales figuran en bancos de datos del gobierno federal. Sus mandatos básicos son los siguientes:

986. 1. Prohibición de la existencia de bancos de datos secretos de información personal.

987. 2. Posibilidad del individuo de conocer que información existe acerca del y cual va hacer su uso.

988. 3. Posibilidad del individuo de corregir o rectificar la información registrada sobre él.

Page 135: Informe de programacion

989. 4. Prohibición de utilizar la información personal sin el permiso del individuo para otro propósito diferente de aquel para el que fue recopilada.

990. 5. Toda organización que recopile, use o distribuya información personal debe establecer los medios necesarios para asegurar su fiabilidad y prevenir los posibles abusos que se puedan realizar con la misma.

991. ACTA DE PRIVACIDAD EDUCACIONAL. Protege la información registrada en instituciones docentes publicas. Sus puntos principales son:

992. Los datos solos pueden ser recopilados por aquellas personas u organismos autorizados por la ley.

993. 1. Los estudiantes y sus padres han de tener posibilidad de acceso a las informaciones educacionales sobre ellos.

994. 2. Solamente se permite la comunicación de esta información a las instituciones educativas publicas para uso administrativos y a las autoridades en algunos supuestos légales

995. ACTA DE PRIVACIDAD FINANCIERA DE 1978. Proporciona protección a los individuos restringiendo el acceso del gobierno a las informaciones sobre clientes de los bancos e instrucciones financieras, estableciendo así un cierto grado de confidencialidad de los datos financieros personales.

996. ACTA DE LA LIBERTAD DE INFORMACION DE 1970. Establece el derecho a la gente o individuos de acceder a los datos sobre ellos almacenados. mencionaremos algunos artículos sobre los Derechos a la libertad informatica.

997. Reconocen el derecho a la libertad: 998. Él articulo 1 de la Declaración América de Derechos del Hombre: Todo ser

humano tiene derecho a la libertad. 999. El artículo 3 de la Declaración Universal de Derechos Humanos, que afirma

que: Todo individuo tiene derecho a la libertad. 1000. El artículo 5 del Convenio Europeo de Derechos Humanos, de 1950, que

establece que: 1001. Toda persona tiene derecho a la libertad. 1002. Reconocen el derecho a la seguridad personal: 1003. El articulo 1 de la Declaración América de Derechos del Hombre: 1004. Todo ser humano tiene derecho a la seguridad de su persona. 1005. Él artículo 3 de la Declaración Universal de Derechos Humanos: 1006. Todo individuo tiene derecho a la seguridad personal . Él artículo 7 del Pacto

de San José Costa Rica: 1007. Toda persona tiene derecho a la libertad y a la seguridad personales. 1008. Reconocen el derecho a la intimidad: 1009. Articulo 12 de la Declaración Universal de Derechos Humanos 1010. Nadie será objeto de injerencia arbitraria en sus vidas privadas. 1011. Articulo 17.1 del Pacto Internacional de Derechos Civiles y Políticos: 1012. Nadie será objeto de injerencia arbitrarias o ilegales en su vida privada. El

derecho a la libertad informática o derecho a la autodeterminación informática es un derecho fundamental de muy reciente aparición. Esta vinculado a la fuerte tecnología que ha experimentado la informática en los últimos veinte años. Lo cual ha permitido el almacenamiento, tratamiento y transmisión automatizada de una enorme cantidad de información personal.

1013. Crimen y fraude computacional

Page 136: Informe de programacion

1014. El crimen organizado ha estado utilizando cada vez mas las computadoras para agilizar y mejorar sus actividades criminales, los criminales han empezado a utilizar computadoras para tener acceso a los sistemas de computo de las grandes compañías.

1015. El delito por computadora puede interactuar en forma no autorizada con una computadora, pero cometidos son medios convencionales. Son ejemplos de delitos relacionales con computadoras él robo de computadoras impreso o almacenado en cintas magnéticas.

1016. Los delitos relacionados con computadoras pueden controlarse usando medios de seguridad. Sin embargo implican nuevas especialidades técnicas criminales y a menudo solo pueden detectarse y prevenirse teniendo una buena compresión técnica acerca de un sistema de computación.

1017. Los motivos de los delitos por computadora normalmente son: 1018. 1. Beneficio personal 1019. 2. Beneficio para la organización 1020. 3. Síndrome de Robin Hood (por beneficiar a otras personas) 1021. 4. usando a jugar 1022. 5. Fácil de detectar, desfalcar 1023. 6. El departamento es deshonesto 1024. 7. Odio a la organización (revancha) 1025. 8. El individuo tiene problemas financieros 1026. 9. La computadora no tiene sentimientos ni delata 1027. 10. Equivocación de ego (deseo de sobresalir en alguna forma) 1028. 11. Mentalidad turbada 1029. Se considera que hay cuatro factores que han permitido el incremento en los

crímenes por computadora. 1030. Están son: 1031. 1. El aumento de números de personas que se encuentran estudiando

computación. 1032. 2. El aumento de números de empleados que tienen acceso a los equipos. 1033. 3. La facilidad en el uso de los equipos de computo. 1034. 4. El incremento en la concentración del numero de aplicaciones y de la

informática. 1035. Los delitos por computadora pueden clasificarse en tres: 1036. 1. Robo directo 1037. 2. Robo indirecto 1038. 3. Sabotaje 1039. Robo directo.- 1040. Implica el acceso a la computadora para poder robar programas, datos, o

tiempo de computadora. Es posible obtener cierta protección al almacenar datos y programas Importantes en códigos secretos. Mas protección puede lograrse utilizando claves separadas de acceso para programas u recolecciones individuales de datos Críticos. Estas claves de acceso deben cambiarse con regularidad y distribuirse solo aquellos que necesiten Conocerlo. También resulta importante asegurar que cualquier copia de un programa o datos que se realicen dentro de la computadora estén protegidos al igual y se borren cuando ya no se necesiten.

1041. 1. Robo indirecto.-

Page 137: Informe de programacion

1042. Indica los delitos por computadora que parecen tener mas atractivo para la prensa. Se caracteriza por la alteración no autorizada de programas o de datos dentro de la computadora para fines ilegales. Casos clásicos son: método de restar dinero, alteración de programas, transferencia de fondos, etc.

1043. Sabotaje.- 1044. Un empleado descontento, un competidor de negocios o un saboteador

pueden intentar borrar grandes volúmenes de datos o valiosos programas de computadora. Podrían insertarse maloseosamente errores en los programas o hacer trabajos que se dieran a las computadoras a fin de sobrecargarla y por tanto reducir su efectividad. En realidad la mayoría de la parte de los crímenes por computadora son obra de criminales empedernidos.

1045. Husmeadores Destructivos 1046. La “gang 414″ fue un grupo de jóvenes “husmeadores” (hackers) que usaron

las microcomputadoras para obtener acceso a sistemas de computo electrónico por todo Estados Unidos.

1047. Obtenían o adivinaban las contraseñas de un sistema, examinaban archivos, corrían programas. Durante sus incursiones electrónicas, dañaron archivos claves de diversas compañías. Los miembros de la “Gang 414″ terminaron con sus computadoras confiscadas.

1048. 7. Virus Informático 1049. Una de las fuentes más terroríficos son los virus informáticos. Los virus más

benévolos son capaces de dejar sin trabajar durante horas e incluso días enteros a numerosas personas, y en los casos más dramáticos, dejar sin información a cientos de empresas y corporaciones, al entrar en acción su fatal programación. Como moderna plaga que azota a todas las computadoras, dado su comportamiento son llamados virus informáticos.

1050. La denominación de virus informático corresponde a una metáfora que asocia este tipo de programas en su homónimo biológico. Ciertos autores han querido encontrar en las características de los ciertas similitudes con los programas de sabotaje. Los virus informáticos pueden ser creados y liberados o difundidos por programadores, el virus mas ampliamente difundido que infecto a las microcomputadoras Apple Macintosh, fue diseñado para atacar las aplicaciones de clientes usadas por una compañía de Texas. El virus crea dificultades y origina que el sistema se embrolle o inactive cuando se inician ciertas aplicaciones.

1051. El Origen De Los Virus Informaticos1052. Resulta muy difícil rastrear el origen de los virus informáticos, ya que son

anónimos. Las primeras ideas de lo que debe ser un virus nació accidentalmente de una serie de artículos firmados por A.K. Dewdney, publicados en las revistas Scientific American. En el primer de ellos, aparecido en él numero de mayo de 1984.

1053. Tipos de Virus. 1054. Existen virus de tipos gusanos, el caballo de Troya y las bombas lógicas. Los

gusanos a diferencia de los virus, tienen entidad propia, mientras que los virus por regla general se adhieren a otro programas.

1055. Viernes 13 1056. Además de su popularidad al dramatismo de su hallazgo y a convertirse en

un asunto de Estado, debe su fama a la forma en que llego a España, donde fue

Page 138: Informe de programacion

distribuida en unos disquetes de amplia difusión que incluyo los disquetes sin verificarlos.

1057. El gusano de la NASA 1058. En noviembre de 1988 un estudiante llamado Robert Tappan Morris, puso

un programa a través del canal del correo electrónico de ARPANET, con miles de terminales en Estados Unidos, Canadá, Australia y Europa el programa se instalaba en memoria y se enviaba a los terminales. En pocas horas el programa saturó todas las líneas de comunicación y las memorias de las computadoras.

1059. PirateriaInformatica1060. La piratería informática consiste en la reproducción ilegal de programas o

Software. Los fabricantes de software estiman que por cada paquete vendido los piratas ya han hecho cuatro copias no autorizadas. La piratería informática cuesta a los desarrolladores de software miles de millones de dólares al año. El copiado ilegal puede ser efectuado por personas o compañías que se desean usar copias gratis de paquetes de software. La venta de copias pirata de software existe particularmente en países como Brasil, Taiwán y Arabia Saudita. Hay muchas cosas que suceden en el espacio cibernético están mas allá de la jurisdicción de las leyes tradicionales cualquier persona hábil con una computadora puede navegar a través de una base de datos corporativa sin dejar rastro alguno, robarse datos sin que el dueño tenga conocimiento o infectar un sistema de computo con virus de computadora que destruye información vital.

1061. Las Computadoras Y La Ley 1062. Las compañías tratan de utilizar la tecnología de la infroación dentro de los

limites de cualquier ley. Las leyes no son siempre claras dado que por vez primera se están sometiendo a onsideración muchos aspectos legales convenientes al uso de la tecnología

1063. Actualmente las leyes federales que se dedican a los delitos asociados con las computadoras son limitadas por que se aplican solo a los sistemas de computación. Estas leyes consideran como un delito lograr un acceso no autorizado a cualquier sistema de computo con intereses federales con la intención de obtener cualquier dato de valor para defraudar al sistema o provocar daños.

1064. Las leyes federales y estatales existen tes que se refieren a la privacidad de la información personal se actualizan cada año. En mismo tiempo se redactan nuevas leyes. Las leyes federales en vigor describen el manejo de la información personal de miles de personas incluyendo las de usted.

1065. El crimen asociado con las computadoras es un fenómeno relativamente reciente. De ahí que la legislación, el sistema judicial criminal y la industria no tenga la preparación adecuada para vigilarlo.

1066. Fraude De Sistemas 1067. La mayor parte de los delitos asociados con las computadoras pertenecen a

la categoría de fraude por computadora. Estos delitos implican un esfuerzo predeterminado o consiente para hacer un fraude en un sistema de computo.

1068. Cualquier entrada ilegal en un sistema de computo con fines de lucro se considera como un fraude.

1069. Inteligencia E Incompetencia 1070. No todos los delitos relacionados con la computación son predeterminados.

La negligencia y la incompetencia pueden provocar que una persona ajena a la

Page 139: Informe de programacion

organización tenga inconvenientes innecesarios y por lo general, esto es el resultado de un control ineficiente de las operaciones de entrada / salida.

1071. Piratas Informaticos1072. Estos vándalos electrónicos (piratas informáticos), han entrado a todas partes

desde organismos de créditos locales hasta sistemas de defensa estrictamente confidenciales.

1073. Algunos piratas informáticos dejan mas que un rastro; infectan el sistema de computo con un virus. Los virus son escritos por los piratas informáticos y programadores para causar daño a sistemas de computo.

1074. Pirateria De Software 1075. La ley de los derechos de autor protege el software. La duplicación ilegal de

software propietario conocido como piratería de software, esta siendo que las compañías sean susceptibles a la acción jurídica por parte de los vendedores afectados.

1076. El problema legal más importante, por mucho que afecta a la industria de computo hoy en día es la piratería de software, qué es copiado o uso ilegal de programas. Las compañías de software solían hacer sus programas con protecciones que impedían su copiado, pero eso dificultaban su instalación. Se llego a la conclusión que esto causaba mas problemas de los que resolvía.

1077. Virus computacional 1078. Aunque la piratería de software es el crimen computacional más

predominante, no igual de preocupante es la creación de virus computacionales. Un virus, es un programa parásito oculto dentro de otro programa legitimo almacenado en un área especial del disco llamado boot sector. Un virus puede incluso ser programado para mantenerse dominado por un tiempo especifico o hasta cierto día.

1079. Motivo para crear virus 1080. Los virus de computadoras no ocurren de forma natural. No existen virus

beneficios son escritos como una broma para irritar a la gente, el virus no es mas que una molestia. Pero cuando un virus es malicioso y causa daño real los efectos pueden ser devastadores. Estos virus frecuentemente sedan ahora con la internet.

1081. Prevecion de infeccion1082. Proteger un sistema contra virus no están difícil, lo primero que necesitas

conocer es en que momento corre peligro de infección tu sistema. 1083. La manera más común de pescar un virus de computadora es mediante el

intercambio de programas y discos. Verificar si hay virus requiere de un software antivirus el cual destruya los virus y programas en busca de virus conocidos y los erradica Robo de información

1084. No solo es robado el hardware de computo en el gobierno, el robo de datos puede ser mucho más serio. Hay tres manera en que los datos pueden ser robados.

1085. 1. -Alguien puede llevarse los medios en que fueron almacenados los datos. 1086. 2. -Alguien puede robarse la computadora y su disco duro. 1087. 3. -alguien puede entrar ilegalmente a los sistemas de computo de una

organización y obtener acceso a archivos importantes. 1088. A medida que ejecutivos de negocios, personal, militar y oficiales de

gobierno se acostumbran a la conveniencia de traer cargando su computadora donde quiera que van, también pueden poner en peligro la seguridad de los datos almacenados en sus maquinas.

Page 140: Informe de programacion

1089. Quizás la forma más efectiva de seguridad es la criptografía, un proceso de codificación y descodificación de datos. La criptografía es causa con mayor frecuencia en los sistemas de mensajes como correo electrónico. El método más común de criptografía conocido como DES(DIGITAL ENCRYPTION STANDAR; CRIPTOGRAFIA ESTANDAR DIGITAL), puede codificar el mensaje, una intercepción no autorizada del mensaje no es una amenaza.

1090. Dado que la privacidad no es uno de los derechos constitucionales específicos y como es necesario establecer un equilibrio entre la necesidad personal de prevacía y la necesidad de información legitima que tiene la sociedad, el grado en el que se proporcione protección a la prevacía de los individuos deberán depender de legislaciones judiciales y legislativas. La tarea continua de equilibrar los derechos humanos y libertades básicas para establecer controles de la prevacía es responsabilidad de los poderes judiciales y legislativo del gobierno.

1091. Los delitos cibernéticos: - atos dañinos cometidos a o contra un computador o red computacional se direfencían de la mayoría de los delitos terrestres en cuatro aspectos. Su cometido es fácil de aprender, requieren pocos recursos con relación al daño potencial provocado; pueden ser cometidos en una jurisdicción sin estar físicamente en ella, y con frecuencia su ilegalidad no es clara.

1092. 8. Conclusión 1093. Al finalizar este trabajo hemos llegado a la conclusion de que el avance en la

tecnologia y la ciencia han favorecido en gran parte el desarrollo de la sociedad, al ser un instrumento de vital importancia en la vida cotidiana de los seres humanos ya que se aplican en todos los aspectos de está. Como ejemplos claros, podemos citar lo que hoy conocemos que va desde una calculadora hasta las computadoras que son intrumentos indispensable tanto en el hogar como el ámbito laboral.

1094. Como hemos podido apreciar este trabajo lo hemos realizado con la finalidad de conocer todo el auge que han tenido las computadoras y todo lo que se puede realizar mediante ella.

1095. Las secuelas que han ido dejando esta superación de los niveles educativos y los descubrimientos han sido fascinantes. Siendo una pieza muy importante los estudios que existen para plasmarlo como un hecho, pero no cabe la menor duda que con el tiempo esos conocimientos se han ido rezagando por el notorio incremento de la capacidad humana-robotica que día a día nos asombra con la gran gama de usos que se les dá.

1096. De acuerdo a la investigación realizada por los diversos medios de consulta, constatamos que todo el medio que ahora nos rodea será esencial para aspirar a nuevos horizontes.Si bien es cierto los conocimientos básicos que un usuario debe contemplar son sin duda los mas requeridos por la misma tecnologia , pues en un momento no muy lejano, se podría tomar como un alfabeta aquella persona que no tiene las bases de la computación, como una herramienta mas de uso indispensable en todas las áreas; ya sea en la escuela, trabajo, oficina, etc.

1097.