ByVal as Boolean
Muy buenas, alguien puede decirme como utilizar "ByVal as Boolean" en una aplicación. Es que exactamente no se de que forma o como se puede utilizar.Alguien me puede explicar que es lo que hace exactamente lo anteriormente puesto entre comillas. Gracias
Lo que hace es indicar que el parámetro en cuestión
se recibe por valor y no por referencia(ByRef) que es
la opción predeterminada.
Dicho de otra forma, cuando se hace una llamada a una
función que acepta un parámetro por referencia, dicha
función recibe la variable que se pasa como parámetro,
pudiendo así modificar el contenido de la misma. Mientras
que si el parámetro se pasa por valor la función recibe
una copia del contenido de esa variable, no pudiendo
modificar la variable original.
se recibe por valor y no por referencia(ByRef) que es
la opción predeterminada.
Dicho de otra forma, cuando se hace una llamada a una
función que acepta un parámetro por referencia, dicha
función recibe la variable que se pasa como parámetro,
pudiendo así modificar el contenido de la misma. Mientras
que si el parámetro se pasa por valor la función recibe
una copia del contenido de esa variable, no pudiendo
modificar la variable original.
Entonces esto que quiere decir, no lo termino de entender:
Private Sub ModoEditar(ByVal Ok As Boolean)
TxtCurCodigo.Locked = Not Ok
TxtCurNombre.Locked = Not Ok
TxtCurVacantes.Locked = Not Ok
TxtCurProfe.Locked = Not Ok
CmdNuevo.Enabled = Not Ok
CmdEditar.Enabled = Not Ok
CmdGuardar.Enabled = Ok
CmdEliminar.Enabled = Not Ok
If Ok Then TxtCurCodigo.SetFocus
End Sub
Private Sub CmdEditar_Click()
ModoEditar True
End Sub
Muchas gracias y saludos
Private Sub ModoEditar(ByVal Ok As Boolean)
TxtCurCodigo.Locked = Not Ok
TxtCurNombre.Locked = Not Ok
TxtCurVacantes.Locked = Not Ok
TxtCurProfe.Locked = Not Ok
CmdNuevo.Enabled = Not Ok
CmdEditar.Enabled = Not Ok
CmdGuardar.Enabled = Ok
CmdEliminar.Enabled = Not Ok
If Ok Then TxtCurCodigo.SetFocus
End Sub
Private Sub CmdEditar_Click()
ModoEditar True
End Sub
Muchas gracias y saludos
Si en lugar de byval fuese byref(opción por defecto),
e hicieras una llamada con un código parecido a este:
Private Sub CmdEditar_Click()
dim aux as Boolean
aux = true
ModoEditar aux
End Sub
entonces la función ModoEditar podría cambiar el valor
que contiene la variable aux ejecutando una instrucción
como esta:
Ok = false
Pero siendo un paso de parámetro de tipo byval, esto
no sería posible ya que el parámetro Ok no es una referencia
a la variable aux, sino otra variable que ha recibido una
copia del contenido de aux.
e hicieras una llamada con un código parecido a este:
Private Sub CmdEditar_Click()
dim aux as Boolean
aux = true
ModoEditar aux
End Sub
entonces la función ModoEditar podría cambiar el valor
que contiene la variable aux ejecutando una instrucción
como esta:
Ok = false
Pero siendo un paso de parámetro de tipo byval, esto
no sería posible ya que el parámetro Ok no es una referencia
a la variable aux, sino otra variable que ha recibido una
copia del contenido de aux.
Entonces.....lo que hago cuando pongo MOdoEditar True es modificar el valor de la variable OK, en la funcion ModoEditar, para que locked sea ok y pueda modificar el texto del textbox?
Pero lo que hago es modificar la copia?
¿Y cuando pongo MOdoEditar False se queda todo como esta?
Muchisimas gracias por tu ayuda, y siento ser tan pesado, Saludos
Pero lo que hago es modificar la copia?
¿Y cuando pongo MOdoEditar False se queda todo como esta?
Muchisimas gracias por tu ayuda, y siento ser tan pesado, Saludos
No, no has entendido nada, no estaba hablando de esa
función en concreto, ni siquiera he mirado lo que
hace esa función porque no importa el código fuente
que hay en ella mi explicación era más teórica y general.
Me refería a tu función como en un caso hipotético, si
en ella hubiera una instrucción que asignase un nuevo valor
al parámetro Ok, pero creo que lo voy a dejar estar,
leete un manual y punto.
función en concreto, ni siquiera he mirado lo que
hace esa función porque no importa el código fuente
que hay en ella mi explicación era más teórica y general.
Me refería a tu función como en un caso hipotético, si
en ella hubiera una instrucción que asignase un nuevo valor
al parámetro Ok, pero creo que lo voy a dejar estar,
leete un manual y punto.
