| Ver tema anterior :: Ver siguiente tema |
| Autor |
Mensaje |
juan_soft User destacando


Registrado: 05 Dic 2004
Mensajes: 544
Ubicación: España - Baleares - Mallorca
|
Publicado: Dom Feb 06, 2005 8:16 am Título del mensaje: |
|
|
| Código: |
Private Sub Form_Load()
Text1.text = ""
End Sub
Private Sub Command1_Click()
Text1.text = "Bienvenido a Visual Basic"
End Sub
Private Sub Text1_Change()
Command1.caption = "Restaurar msg"
End Sub |
y eso es todo.
vaya, aqui no se mueve ni el aire, pero yo propongo algo mas; si el texto del Text1 sufre alguna modificacion el texto del Command1 ponga "Restaurar msg" y, si se le hace click ene ste estado, se restaure el texto del Text1, es decir, vuelva a poner: Bienvenido a Visual Basic, y, una vez el texto sea restaurado, el texto del boton sea: Haga click aquí, y al hacerle click, ahora, aparezca el msgbox de antes. animo, que seguro que podeis hacerlo
saludos _________________
[lo que nos hace unicos son nuestras imperfecciones]
[haz lo que tengas que hacer y bien hecho estara...] |
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Lun Feb 07, 2005 10:19 pm Título del mensaje: |
|
|
oye que buena clase nos has dado, a mi me interesa resto por que como la mayoria hasta ahora estoy empezando a programar y es de gran ayuda estos temas y le forma en la cual nos ayudan a aprender es muy practico quisiera ver más temas incluyendo la imagenes asi podemos ver con exactitud paso paso el programa .
muchas gracias |
|
| Volver arriba |
|
 |
juan_soft User destacando


Registrado: 05 Dic 2004
Mensajes: 544
Ubicación: España - Baleares - Mallorca
|
Publicado: Mar Feb 08, 2005 7:31 am Título del mensaje: |
|
|
anda! llevaba un mal dia, pero no veas como me ha alegrado esto! pues yo seguire encantado participando y posteando con tal de que podais aprender algo basico, como para tener alguna idea. y he de decir que, no podeis resolver el ultimo ejercicio que propuse porque os falta un conocimiento, una leccion que ahora explico. un condicional. un condicional es una sentencia de bifurcacion, es decir, que la aplicacion se desarrollara segun si ocurre una accion u otra (incorporadas por este condicional). su estructura suele ser:
| Código: |
If (condicion) Then
(sentencia/s)
End If |
por ejemplo, supongamos que tenemos 2 cantidades, cantidad A y cantidad B. (ya estudiaremos mas adelante el funcionamiento de las variables). pues queremos que, al apretar un boton que hayamos creado (Command1) si la cantidad A es mayor que la B, en un label (utilizando su propiedad "caption") aparezca el mensaje: A es mayor que B, o, si la cantidad B es mayor que la cantidad A, aparezca escrito: B es mayor que A. el codigo seria el siguiente:
| Código: |
Private Sub Command1_Click() 'iniciamos la rutina del boton
If A>B Then 'decimos que si A es mayor que B entonces
Label1.caption = "A es mayor que B" 'en el label, aparezca escrito: A es mayor que B
End If 'cerramos el condicional
If B>A Then 'decimos que si B es mayor que A entonces
Label1.caption= "B es mayor que A" 'en el label, aparezca escrito: B es mayor que A
End If 'volvemos a cerrar el condicional |
observemos que, aunque hay mas maneras de definir un condicional usando "If", esta es la mas facil de interpretar por el programa a la hora de ejecutar la apicacion, la mas rapida y la mas clara a la hora de que el programador la lea.
el codigo resultante seria el siguiente (omitiendo mi explicacion):
| Código: |
Private Sub Command1_Click()
If A>B Then
Label1.caption = "A es mayor que B"
End If
If B>A Then
Label1.caption = "B es mayor que A"
End If |
y, cuando domineis este condicional, ya os explicare una pieza que nos falta para que podamos usarlo "a full".
saludos _________________
[lo que nos hace unicos son nuestras imperfecciones]
[haz lo que tengas que hacer y bien hecho estara...] |
|
| Volver arriba |
|
 |
juan_soft User destacando


Registrado: 05 Dic 2004
Mensajes: 544
Ubicación: España - Baleares - Mallorca
|
Publicado: Jue Mar 31, 2005 12:49 am Título del mensaje: |
|
|
sigamos con el condicional. como hemos dicho, su sintaxis es esta:
| Código: |
If (condicion) Then
(sentencia/s)
End If |
pues vamos con la pieza que falta:
| Código: |
If (condicion) Then
(sentencia/s)
Else
(sentencia/s)
End If |
en lo que al else se refiere, es una clausula opcional que escribimos cuando, de fora literal queremos escribir: si sucede esta condicion (If (condicion)) entonces (Then) sentencia/s, si no sucede esta condicion (Else) sucedera esto otro (sentencia/s a continuacion del Else). pongamos
otra cosa, el Else se puede combinar con un If asi:
| Código: |
If (condicion1) Then 'si se cumple la condicion1, entonces
(sentencia/s1) 'se ejecutara/n la/s sentencia/s1
ElseIf (condicion2) Then 'si no se cumple la condicion1 pero se cumple la condicion2 entonces
(sentencias2) 'se ejecutara/n la/s sentencia/s2
End If 'aunque haya dos "If" solo ponemos un "End If" porque el segundo "If" va ligado a un "Else", y no se cuenta como principal; en resumen, solo se pone (en este caso) un "End If", pero mas adelante os explicare una anidacion de "If" un poco complicada. |
un ejemplo:
- volvamos con la aplicacion 1
http://img172.exs.cx/img172/2065/tuto17es.gif
construccion:
Un TextBox y un CommandButton, con estas propiedades:
TextBox---> Text = "Bienvenido a Visual Basic"
CommandButton---> Caption = "Haga click aquí"
(la misma imagen)
[URL=http://img44.exs.cx/my.php?loc=img44&image=tuto101mo.gif]
[/URL]
lo que queriamos era que, si la aplicacion estaba como en la imagen, al hacer click en el boton aparezca un MsgBox diciendo "Bienvenido a Visual Basic". pero si el Text1 sufre alguna modificacion el Caption del boton cambie a "Restaurar msg" y al hacerle click, con este Caption, el Text1 vuelva a poner "Bienvenido a Visual Basic", y una vez el Text1 vuelva a estar "restaurado", el Caption del boton vuelva poner "Haga click aqui", de manera que si hacemos click, volvera a apareces el mismo msgbox de antes. este seria el codigo (con mi explicacion):
| Código: |
Private Sub Form_Load() 'cuando se inicia el formulario
Text1.Text = "Bienvenido a Visual Basic" 'el contenido (propiedad Text) del Text1 debe ser "Bienvenido a Visual Basic", recordemos lo de las comillas (" ")
End Sub 'fin del procedimiento
Private Sub Text1_Change() 'si ocurre un cambio (cualquiera) sobre el Text1, en tiempo de ejecucion
Command1.Caption = "Restaurar msg" 'el texto que aparecera escrito en el boton (propiedad Caption) sera "Restaurar msg"
End Sub
Private Sub Command1_Click() 'cuando le hagamos click al boton
If Command1.Caption = "Haga click aquí" Then 'si en el boton esta escrito "Haga click aquí" (propiedad Caption) entonces, al hacerle click
MsgBox "Bienvenido a Visual Basic", vbExclamation, "BIENVENIDO" 'aparecera un MsgBox (caja de dialogo) con el texto "Bienvenido a Visual Basic" y el titulo "BIENVENIDO"
ElseIf Command1.Caption = "Restaurar msg" Then 'si la condicion de antes no se cumple (es decir, si el Caption del boton (Command1) no es "Haga click aqui"), pero su Caption es "Restaurar msg" entonces
Text1.Text = "Bienvenido a Visual Basic" 'el Text1 debe tener escrito "Bienvenido a Visual Basic" (propiedad Text), es decir, en cierta manera restauramos el mensaje que habia antes
Command1.Caption = "Haga click aquí" 'una vez "restaurado" el msg, el Caption del boton (Command1) vuelve a ser el inicial ("Haga click aquí"), y recordemos que si tiene este Caption, al hacerle click aparece el MsgBox de antes. aplicacion terminada
End If 'fin del condicional ("If")
End Sub 'fin del procedimiento |
otra vez el codigo omitiendo mi explicacion, para evitar confusiones (ahora que, podeis copiar y pegar el de antes, incluyendo las explicaciones porque si os fijais, cada explicacion esta precedida de un apostrofe (') y eso Visual Basic lo interpreta coo un comentario, asi que no os tiene que dar error) pero mejor si en vez de Ctrl + C y Ctrl + V, os mirais el codigo, os leeis la explicacion y lo entendeis, para asi poder hacerlo vosotros mismos sin ayuda.
| Código: |
Private Sub Form_Load()
Text1.Text = "Bienvenido a Visual Basic"
End Sub
Private Sub Text1_Change()
Command1.Caption = "Restaurar msg"
End Sub
Private Sub Command1_Click()
If Command1.Caption = "Haga click aquí" Then
MsgBox "Bienvenido a Visual Basic", vbExclamation, "BIENVENIDO"
ElseIf Command1.Caption = "Restaurar msg" Then
Text1.Text = "Bienvenido a Visual Basic"
Command1.Caption = "Haga click aquí"
End If
End Sub |
nada mas, a ver si os funciona (ya he puesto la imagen) y a seguir programando.
saludos _________________
[lo que nos hace unicos son nuestras imperfecciones]
[haz lo que tengas que hacer y bien hecho estara...] |
|
| Volver arriba |
|
 |
juan_soft User destacando


Registrado: 05 Dic 2004
Mensajes: 544
Ubicación: España - Baleares - Mallorca
|
Publicado: Dom Abr 03, 2005 3:37 pm Título del mensaje: |
|
|
antes de explicar una sentencia parecida al "If", debemos ver las variables. una variable es una exprexion (por ejemplo, "x") que contiene un valor (pueden ser letras, numeros...) que pude ser modificado a lo largo de la aplicacion, asi como utilizado en la misma aplicacion. cada variable tiene unos atributos propios, como:
· nombre---> es el nombre que vamos a utilizar para referirnos a la variable en la aplicacion.
· tipo---> el tipo determina qué clase de valores puede almacenar la variable.
· ambito---> el ambito de una variable especifica en que parte de la aplicacion es conocida la variable y por lo tanto, en que parte puede utilizarse.
antes de usar una variable, o de almacenar datos en ella, es preferible declararla. declarar una variable no es mas que indicar su nombre, su tipo y su ambito, al principio del codigo. no siempre esnecesario declarar una variable, pero yo os recomiendo que lo hagais. y, por si se os olvida, hay una opcion que permite que, al inicio del codigo, aparezca una linea escrita indicando que, si vamos a utilizar variables las declaremos.
[URL=http://img137.exs.cx/my.php?loc=img137&image=tuto118fm.gif]
[/URL]
al abrir Visual Basic, creamos un formulario estandar y nos vamos a Herramientas/Opciones y chequeamos (activamos la casilla de verificacion) donde pone: "Requerir declaracion de variables", y aceptamos.
[URL=http://img99.exs.cx/my.php?loc=img99&image=tuto1122du.gif]
[/URL]
ahora cerramos Visual Basic por completo y volvemos a abrirlo, creando un nuevo formulario EXE estandar. y, si vamos a la ventana de codigo (vease en la imagen:)
[URL=http://img99.exs.cx/my.php?loc=img99&image=tuto1134il.gif]
[/URL]
veremos que, al darle click, saldra la pantalla para escribir codigo, con una linea escrita:
[URL=http://img32.exs.cx/my.php?loc=img32&image=tuto1144lb.gif]
[/URL]
debajo de esta linea, es donde declararemos la/s variable/s que vayamos a utilizar.
pero vamos a conocer algo mas acerca de las varables.
el nombre de una variable tiene que comenzar por una letra, puede tener 255 caracteres de longitud (maximo) y debe ser unico dentro de su ambito (es decir, que no este repetido y evitar asi posibles ambigüedades).
los caracteres pueden tener letras, digitos, el caracter de subrayado y los caracteres de declaracion del tipo de variable (lo veremos en un momento) ---> (%, &, !, #, @, y $).
no se puede utilizar ni el punto (.) ni otros caracteres que tienen un significado especial para Visual Basic; por ejemplo, los parentesis "( )". los caracteres de declaracion del tipo, cuando se utilicen, tienen que ocupar la ultima posicion.
otra cosa importante es que el nombre de una variable no puede ser una palabra reservada, ya que una palabra reservada tiene un significado especial para Visual Basic. son palabras reservadas las sentencia predefinidas (como For), los nombres de funciones (como Val), los metodos (como Hide), propiedades (como Caption), tipos (como Long) y operadores (como And). seguro que esto os habra sonado a chino, pero cuando expliquemos, mas alante cada una de estas, lo entendereis.
TIPOS DE DATOS
todas las variables tienen un tipo de dato que determina la clase de datos que puedan almacenar. una variable puede ser alguno de los tipos siguientes:
[URL=http://img14.exs.cx/my.php?loc=img14&image=tuto1150bx.gif]
[/URL]
(alguna nocion:)
- un byte---> 8 bits
- un bit se representa con un "0" o un "1", simbolos que componen el sistema binario.
- un K (Kbyte)---> 1024 bytes---> 8192 bits
- un numero con coma flotante es un numero fraccionario con punto decimal variable; en Currency el punto decimal es fijo (4 decimales)
- 3,40E+38 ---> 3,40 x [URL=http://www.imageshack.us]
[/URL]
- 1,79D+308---> 1,79 x [URL=http://www.imageshack.us]
[/URL]
- True significa verdad(ero) y False falso
para no hacer este post tan largo, y hacerlo comprensible, lo de declarar variables lo dejo para otro dia, ya que hay algunas cosillas interesantes que ver. asi que ahora, leed este e intentad comprenderlo, que seguramente ahora os sonara todo muy raro, pero ya vereis como no es tan dificil entender y utilizar variables.
saludos _________________
[lo que nos hace unicos son nuestras imperfecciones]
[haz lo que tengas que hacer y bien hecho estara...] |
|
| Volver arriba |
|
 |
juan_soft User destacando


Registrado: 05 Dic 2004
Mensajes: 544
Ubicación: España - Baleares - Mallorca
|
Publicado: Dom Abr 10, 2005 7:17 pm Título del mensaje: |
|
|
vamos con la declaracion de variables, que ya era hora
si vamos a utilizar una variable, es aconsejable declararla antes de usarla, aunque no es obligatorio. para declarar se utiliza la palabra Dim (o una de las palabras Public, Private o Static). cualquier declaracion de estas inicia las variables numericas con valor "0", y las alfanumericas con el caracter nulo.
un ejemplo:
| Código: |
Dim I As Integer
Dim R As Double
Dim Nombre As String
Dim Etiqueta As String * 10
Dim F As Currency
Dim L As Long, X As Currency |
segun esto, declaramos "I" como una variable entera, "R" como una variable real de precision doble, "Nombre" como una cadena de caracteres de longitud variable, "Etiqueta" como una cadena de caracteres de longitud fija (10 caracteres), "F" como una variable fraccionaria, "L" como una variable entera larga y "X" como una variable fraccionaria.
la clausula As tipodevariable es opcional, porque se puede declarar, por ejemplo:
| Código: |
| Dim A, B As Integer |
aqui muchos supondreis que "A" y "B" son de valor entero, pero esto es falso. solo "B" es entero, ya que a "A", al no llevar la clausula opcional As tipovariable se le asume el tipo Variant (por omision).
---> variable entera
---> variable real de precision doble
---> cadena de caracteres de longitud variable
---> variable fraccionaria
esto os puede ir bien si os empollais los caracteres de declaracion de tipo, pero la verdad es que si pasa un tiempo y no los recordais, no entendereis ni una linea de codigo que habeis escrito porque habreis abreviado mucho. mejor escribir cada cosa con sus palabras y usando tabulacion, de una manera ordenada yclara.
si usamos una variable que no se ha declarado se asume que es de tipo Variant:
| Código: |
L = "Dato:" 'Variable de tipo String
'...
L = 3.25678 'variable de tipo Double |
suponiendo que "L" no ha sido declarada explicitamente, las lineas de codigo anteriores declaran "L" como una variable Variant que ha cambiado su tipo para comportarse como una cadena de caracteres, y luego vuelve a cambiar su tipo para comportarse como una variable de coma flotante de doble precision.
si de una variable se sabe que nunva va a contener un valor fraccionario, es mejor declararla como entera, ya que las operaciones con enteros son mas rapidas. en caso contrario, si el valor no va a tener mas de 4 digitos decimales y nomas de 14 digitos enteros, es conveniente declararla como fraccionaria (Currency). esto es asi porque, partiendo de que un ordenador internamente trabaja en binario, en las variables tipo Currency no tiene lugar el error producido al convertir un valor en base 10 al mismo valor en base 2 y viceversa, que si tiene lugar cuando la variable es de tipo Single o Double. intentad, por ejemplo, a representar 1/5 en binario puro. la representacion no es exacta.
vamos ahora con las conversiones entre datos numericos
las conversiones se hacen segun estas reglas:
| Código: |
Dim ent1 As Integer, ent2 As Integer
Dim fracsp As Single, fracdp As Double |
1. si se asigna un valor numerico de una precision a una variable numerica de precision diferente, el numero sera almacenado con la precision declarada en el nombre de la variable destino:
| Código: |
ent1 = 40.17
ent2 = 37.83
Print ent1, ent2 'resultado: 40 38 |
(Print es una palabra reservada que indica la orden de mostrar algo (en este caso "ent1" y "ent2" en el formulario)
2. si se asigna un valor numerico de una precision mas alta a una variable de una precision mas baja, el valor se redondea:
| Código: |
fracsp = 22.3445577
ent1 = 17.5
Print fracsp, ent1 'resultado: 22.34456 18
ent1 = 17.4
ent2 = 17.6
Printent1, ent2 'resultado: 17 18
fracsp = 22.37
Print fracsp 'resultado: 22.37 |
un valor Single no tiene mas de 7 cifras significativas (cifras enteras mas decimales), asi queel redondeo ocurre cuando tratamos de asignar mas cifras de las aceptadas por la variable. y asi con los demas tipos.
3. si se cambia un num de precision mas baja a una precision mas alta, el numero de precision mas alta resultante no podra ser mas exacto que el de precision mas baja:
| Código: |
fracsp = 17.55
fracdp = fracsp
Print fracsp, fracdp 'resultado: 17.55 17.5499992370605 |
en este ejemplo se ha asignado un valor de precision simple a unavariable de precision doble. alomejor esperabais como resultado el mismo valor asignado. pra comprender esto, pensemos en lo que he dicho antes respecto a que al convertir un valor en base 10 de tipo Single o Double al mismo valor en base 2 y viceversa, ocure un error por no poderse representar el valor decimal en binario.
4. durante la evaluacion de una expresion, todos los operandos en una operacion aritmetica o de relacion se cambian al mismo grado de precision, que es el del operando mas preciso:
| Código: |
ent1 = 8
fracdp = 3
Print ent1 / fracdp 'resultado: 2.66666666666667 |
_________________
[lo que nos hace unicos son nuestras imperfecciones]
[haz lo que tengas que hacer y bien hecho estara...] |
|
| Volver arriba |
|
 |
juan_soft User destacando


Registrado: 05 Dic 2004
Mensajes: 544
Ubicación: España - Baleares - Mallorca
|
Publicado: Dom Abr 24, 2005 12:49 pm Título del mensaje: |
|
|
Declaracion explicita
vamos con mas teoria
ahora entendereis por que es mejor declarar una variable antes de usarla.
supongamos que por ejemplo, tenemos este codigo:
| Código: |
Dim M As Integer, N As Integer
VarTemp = M
'...
N = VaTemp |
en este ejemplo, VarTemp no se ha declarado explicitamente. esto no supone un error ya que Visual Basic se encarga de crear dicha variable. ahora observad que, por error, el nombre de esa variable se ha escrito mal en la ultima sentencia (falta la r). cuando Visual Basic encuentra un nuevo nombre, no puede "adivinar" si es debido a un error al escribirla (de sintaxis) o si es debido a la definicion de una nueva variable. asi pues, para evitar esto requeriremos siempre la declaracion explicita de variables.
y ahora, entendereis (eso espero) el porque de la palabrita "Dim" en la declaracion de una variable.
para ello vamos a saber de los modulos.
Modulos de Visual Basic
el codigo de una aplicacion Visual Basic se edita en modulos. los modulos tienen incorporadas funciones automaticas de formato y comprobacion de sintaxis. hay tres tipos de modulos: de formulario, estandar y de clase. para agregar uno de estos modulos en una aplicacion deberemos ir a Proyecto/Agregar formulario para un formulario, Proyecto/Agregar modulo para un modulo estandar o Proyecto/Agregar mosulo de clase para una clase.
Modulo de formulario
es un fichero con extension .frm que puede contener descripciones del formulario y sus controles, asi como los valores de sus propiedades, declaraciones de constantes, variables y procedimientos externos a nivel de formulario, asi como procedimientos conducidos por eventos y procedimientos generales.
Modulo estandar
es un fichero con extension .bas que solo contiene declaraciones y definiciones de procedimientos, tipos y datos a los que tienen acceso otros modulos de la aplicacion. las declaraiones a nivel de modulo y las definiciones en un modulo estandar son publicas (Public) por omision.
Modulo de clase
es un fichero con extension .cls que contiene la definicion de una clase de objetos; esto es, la definicion de cada una de sus propiedades y metodos.
Ambito de las variables
se entiende por ambito o alcance de una variable el espacio de la aplicacion donde la variable es visible y por lo tanto se puede utilizar. la figura siguiente indica los lugares donde se puede declarar una variable:
[URL=http://img139.echo.cx/my.php?image=tuto144ef.gif]
[/URL]
ahora no me queda tiempo pero seguire la semana que viene (tal vez el lunes) y recuperare los consejos perdidos.
saludos _________________
[lo que nos hace unicos son nuestras imperfecciones]
[haz lo que tengas que hacer y bien hecho estara...] |
|
| Volver arriba |
|
 |
juan_soft User destacando


Registrado: 05 Dic 2004
Mensajes: 544
Ubicación: España - Baleares - Mallorca
|
Publicado: Lun May 02, 2005 1:27 pm Título del mensaje: |
|
|
Esta tabla muestra como se dbe declarar una variable dependiendo del espacio donde queremos que sea visible:
Local-----> Dim, Static o ReDim (dentro de un procedimiento)
Modulo---> Dim o Private (seccion de declaraciones del modulo)
Global----> Public (seccion de declaraciones de un modulo
A nivel de modulo, no hay diferencias entre Dim y Private[b], pero se aconseja utilizar [b]Private en contraste con Public.
un formulario (*.frm) incluye controles mas codigo y un modulo (*.bas) o una clase (*.cls) incluyen solo codigo (suelen ser procedimientos aparte o funciones).
Variables locales
Una variable local se reconoce solamente en el procedimiento (Sub) en el que esta definda. Fuera de ese procedimiento, la variable no es conocida. Su utilizacion mas comun es intervenir en calculos intermedios.
Para declarar una variable local a un procedimiento, hay que colocar la sentencia Dim dentro del mismo. Por ejemplo, el procedimiento Form_Load que se muestra a continuacion define ent1 y ent2 como variables locales:
| Código: |
Private Sub Form_Load()
Dim ent1 As Integer, ent2 As Integer
ent1 = 40.17
ent2 = 37.83
Print ent1, ent2
End Sub |
Una variable local es reiniciada cada vez que se entra en el procedimiento. En otras palabras, no conserva su valor entre una llamada al procedimiento y la siguiente. Para hacer que esto suceda, hay que declarar la variable estatica. Visual Basic inicia una variable estatica solamente la primera vez que se llama al procedimieto. Para declarar una variable estatica, utilizad la sentencia Static en lugar de Dim:
| Código: |
| Static ent1 As Integer |
Para hacer que todas las variables de un procedimiento (logicamente, usadas en este) sean estaticas, podeis declarar el procedimiento estatico:
| Código: |
Private Static Sub Form_Load()
'... 'esto son unas sentencias cualesquiera
End Sub |
Si una variable aparece en un procedimiento y no esta explicitamente declarada, es por omision local. En cualquier caso, es aconsejable declarar todas las variables explicitamente.
Variables utilizadas dentro del modulo
Una variable declarada a nivel de modulo (formulario, modulo estandar o clase) puede ser compartida por todos los procedimientos de ese modulo. Una variable a nivel de modulo hay que declararla con Dim o Private en la seccion de declaraciones del modulo (seccion General). Para editar esta seccion, hay que abrir la ventana de codigo del formulario, de un modulo estandar o de una clase, para lo que tenemos que dirigirnos al explorador de proyectos, seleccionar el modulo y hacer click en el boton Ver codigo (en el caso de que ya este creado, aunque claro, si vamos a editar algo es porque ya esta creado). Despues en la ventana de codigo seleccionaremos "(General)" de la lista de la izqda, lista de objetos y"(Declaraciones)" de la lista de la derecha, lista de procedimientos:
| Código: |
Private Sub '(o Function)
Dim ent1 As Integer
Private ent2 As Integer
End Sub '(dentro de un modulo) |
Este tipo de variables son por omision estaticas.
Variables globales
Una variable global es una variable declarada a nivel de modulo pero a la que se puede acceder desde cualquier otro modulo.
Para hacer que una variable sea global o publica, hay que declararla Public en la seccion de declaraciones del modulo. Para ello, si el modulo ya existe, podemos seleccionarlo en la ventana Proyecto y hacer click en el boton Ver codigo; y si no existe, crearlo ejecutando la orden correspondiente del menu Proyecto
Por ejemplo, abrimos un nuevo proyecto con solo un formulario, creamos un boton y escribimos el siguiente codigo:
| Código: |
Option Explicit
Dim v1 As Integer
Dim v2 As String
Private Sub Command1_Click()
v1 = 2
v2 = "prueba"
MsgBox v2 & v1, 48, "vs" 'ya veremos mas adelante que significa todo esto
End Sub |
y al hacer click en el boton, nos saldra esto:
[URL=http://www.imageshack.us]
[/URL]
Hasta aqui bien. Ahora, vamonos a Proyecto/Agregar modulo y le damos a Aceptar. En este nuevo modulo, MOVEMOS (NO copiamos) las declaraciones de las variables, y, al ejecutar la aplicacion y hacer click en el boton nos saldra esto:
[URL=http://www.imageshack.us]
[/URL]
Esto ocurre porque las variables han sido declaradas en el modulo utilizando Dim, lo que restringe su utilizacion a los procedimientos que definamos en este modulo. Para hacer que las variables puedan ser utilizadas por otros modulos de la aplicacion o en el codigo del mismo formulario, hay que declararlas Public:
| Código: |
Option Explicit
Public v1 As Integer
Public v2 As String |
Cuando una variable se declara Public en un formulario, para acceder a ella desde otro modulo es necesario especificar su pertenencia; esto es, hay que indicar de que objeto es dato miembro dicha variable. Por ejemplo, si a nivel de Form1 realizamos la declaracion
| Código: |
| Public varform As String |
para acceder a esta variable desde un procedimiento de un modulo estandar, lo hariamos asi:
[URL=http://img109.echo.cx/my.php?image=tuto1531pd.gif]
[/URL]
Para dirigirse a la ventana de codigo del modulo hay que seleccionarlo en el explorador de proyectos y hacer click en el boton Ver codigo, y para añadir el procedimiento Prueba, ejecutad la orden Agregar procedimiento del menu Herramientas:
[URL=http://img78.echo.cx/my.php?image=tuto1543yx.gif]
[/URL]
Para que el procedimiento Prueba que acabamos de añadir al modulo se ejecute y escriba los resultados sobre el formulario, hay que invocarlo. Por ejemplo, añadid al procedimiento Form_Activate la linea:
| Código: |
Private Sub Form_Activate() 'lo explicare mas alante, tranquilos
'...
Prueba 'llama al procedimiento Prueba del modulo estandar
End Sub |
En un procedimiento no se pueden declarar variables globales.
Variables con el mismo nombre
Una variable local y otra a nivel de modulo pueden tener el mismo nombre, pero no son la misma variable. La regla para estos casos es que el procedimiento siempre utiliza la variable de vivel mas cercano (local, modulo y global; en este orden). En otro caso, se debe calificar la variable:
| Código: |
Public Temp As Integer 'declaracion en Form1
Public Sub Prueba() 'procedimiento en Modulo1
Dim Temp As Integer
Temp = 10 'referencia a la variable local
MsgBox Form1.Temp 'referencia a la variable global
End Sub |
Si las variables publicas comparten el mismo nombre en diferentes modulos, para diferenciarlas en el momento de referenciarlas es necesario especificar su pertenencia. Por ejemplo, si hay una variable entera X declarada tanto en el formulario Form1 como en el Modulo1, debemos referirnos a ella asi:
| Código: |
MsgBox Form1.X 'visualiza el valor de la X de Form1
MsgBox Modulo1.X 'visualiza el valor de la X de Modulo1 |
Es aconsejable en programacion que los nombres de las variables sean diferentes entre si, asi como los nombres de las propiedades y delos modulos. _________________
[lo que nos hace unicos son nuestras imperfecciones]
[haz lo que tengas que hacer y bien hecho estara...] |
|
| Volver arriba |
|
 |
|
|
|