Visual Basic - matrices

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

matrices

Publicado por ricaurte (313 intervenciones) el 01/02/2006 13:57:45
hola, hay alguna forma de crear una matriz de controles pero de distintos controles y guardarlos con una propiedad para verificarlos y modificarla posteriormente??
por ejemplo

M(1)=CMDA.ENABLED
M(2)=LSTA.ENABLED
M(3)=CMBA.ENABLED

FOR I=1 TO 3
IF M(I)=TRUE THEN
[QUE EL CONTROL QUE SEA ENABLED=TRUE, SE VUELVA FALSE]
END IF
NEXT

HELP ME PLEASE
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:matrices

Publicado por EGV (385 intervenciones) el 01/02/2006 14:18:51
Te sugiero que hagas una matriz de mas entradas, de modo que tengas en nombre del control y estado en forma literal
matrizcontrol("LSTA","False")
luego cuando lees la matriz verificas el estado del control y con otra instruccion lo colocas
creo que era asi, ahora no lo recuerdo bien, hace mucho que no uso la matriz, pero es practica realmente, creo que empezare a usarlas otra vez

If matrizcontrol(1,1) = "FALSE" THEN
LSTA.enabled = true
matrizcontrol(1,1) = "TRUE"
else
LSTA.enabled = false
matrizcontrol(1,1) = "FALSE"
endif
suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:matrices

Publicado por ricaurte (313 intervenciones) el 01/02/2006 14:22:11
ME PARECE VALIDA LA IDEA, PERO NO SE DE QUE TIPO SE DIMENSIONA, ESE ES MI PROBLEMA, NO SE COMO DIMENSIONAR PARA QUE ME TOME EL NOMBRE DEL CONTROL CON LA PROPIEDAD, ADEMAS NO PUEDO PREGUNTAR UNO POR UNO YA QUE SON ALREDEDOR DE 22 CONTROLES :d
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:matrices

Publicado por EGV (385 intervenciones) el 01/02/2006 14:37:34
mira no creo que sean tantos como para no hacerlo, si queres mas informacion coloca Redim en cualquier parte del codigo y coloca el cursor encima y pulsa F1, y luego vas siguiendo con los enlaces, te explica lo de las matrices

en el modulo
Public MatrizControles() As Integer

ReDim MatrizControles(1 To 22, 1 To 2)
inicializas la matriz
d = 1
E = 1
For d = 1 To 22
For E = 1 To 2 'hacer
MatrizControles(d, E) = ""
Next
Next

para cargarlos
MatrizControles(1,1) = "nombre del control"
MatrizControles(1,2) 0 " estado del control "

MatrizControles(2,1) = "nombre del control"
MatrizControles(2,2) 0 " estado del control "

MatrizControles(3,1) = "nombre del control"
MatrizControles(3,2) 0 " estado del control "
........................
MatrizControles(22,1) = "nombre del control"
MatrizControles(22,2) 0 " estado del control "
suerteeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee!!!!!!!!!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:matrices

Publicado por EGV (385 intervenciones) el 01/02/2006 14:39:50
perdon me equivoque
donde dice
en el modulo
Public MatrizControles() As Integer

debe decir
en el modulo
Public MatrizControles() As String
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:matrices

Publicado por RICAURTE (313 intervenciones) el 01/02/2006 14:43:35
HOLA GRACIAS, YA SOLUCIONE EL PROBLEMA HICE ALGO ASI MIRA , SOLO REDUJE LA CANTIDAD DE CONTROLES AQUI

EN UN MODULO DIMENSIONE
ESTADO() AS BOOLEAN, OBJCONTROL() AS OBJECT

'**********EN UN SUB
ReDim ESTADO(1 To 10), OBJCONTROL(1 To 10)

'GRABANDO EL ESTADO DE LOS BOTONES Y OBJETOS
Set OBJCONTROL(1) = Me.CMBUNID
Set OBJCONTROL(2) = Me.CMDABRIRCD
Set OBJCONTROL(3) = Me.CMDCERRARCD
Set OBJCONTROL(4) = Me.CMDUPDATE
Set OBJCONTROL(5) = Me.CMDAÑADIR
Set OBJCONTROL(6) = Me.CHKCARPET
Set OBJCONTROL(7) = Me.CHKCDTODO
Set OBJCONTROL(8) = Me.LSTEXT
Set OBJCONTROL(9) = Me.CMDSEL
Set OBJCONTROL(10) = Me.CMDAÑADIR

ESTADO(1) = Me.CMBUNID.Enabled
ESTADO(2) = Me.CMDABRIRCD.Enabled
ESTADO(3) = Me.CMDCERRARCD.Enabled
ESTADO(4) = Me.CMDUPDATE.Enabled
ESTADO(5) = Me.CMDAÑADIR.Enabled
ESTADO(6) = Me.CHKCARPET.Enabled
ESTADO(7) = Me.CHKCDTODO.Enabled
ESTADO(8) = Me.LSTEXT.Enabled
ESTADO(9) = Me.CMDAÑADIR.Enabled
ESTADO(10) = Me.CMDSEL.Enabled

For I = 1 To 10
If ESTADO(I) = True Then
OBJCONTROL(I).Enabled = False
End If
Next

Y LUEGO PARA HABILITAR LUEGO DEL PROCESO
For I = 1 To 10
If ESTADO(I) = True Then
OBJCONTROL(I).Enabled = True
End If
Next


'*************
MISTERIOSAMENTE FUNCIONA, PENSE QUE SE TENIA QUE HACER ALGO PARA GUARDAR QUE PROPIEDAD ERA, PERO PARECE QUE POR DEFAULT LA PROPIEDAD QUE SE GUARDA ES ENABLED, ME PREGUNTO SI SE PODRA USAR CON OTRA PROPIEDAD COMO BACKCOLOR??? QUE ME DICES?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:matrices

Publicado por EGV (385 intervenciones) el 01/02/2006 23:22:40
esta bien si te funciona como lo que querias
en cuanto a otras propiedades, no se habria que ir probando, prueba y error es VB, cuanto mucho tirara algun error.
en esta linea de codigo algo no me queda claro si es true, no hace falta vover a colocarlo
no sera FALSE

Y LUEGO PARA HABILITAR LUEGO DEL PROCESO
For I = 1 To 10
If ESTADO(I) = True Then ' aca no iria FALSE ???????????????
OBJCONTROL(I).Enabled = True
End If
Next
bueno man suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

EXPLICACION DE PORQUE

Publicado por RICAURTE (313 intervenciones) el 02/02/2006 04:35:21
BUENO HASTA DONDE CREO ESTA BIEN, LA COSA ES ASI ,MIRA Y TE EXPLICO

EN ESTADO() SE GUARDARON LOS ESTADOS DE ENABLED

O SEA ARRIBA LOS QUE YA ESTABAN EN TRUE, SE VOLVIAN FALSE

O SEA SUPONEMOS QUE EL BOTONA QUE ESTABA DESBLOQUEADO AHORA ESTA BLOQUEADO

PERO AL FINAL EL BOTON QUE ANTES NO ESTABA BLOQUEADO
DEBE DE VOLVER A SU ESTADO ORIGINAL OSEA

EL BOTONA DEBE SER OTRA VEZ DESBLOQUEADO

POR ESO PREGUNTO
For I = 1 To 10
If ESTADO(I) = True Then (SI ESTABA DESBLOQUEADO)
OBJCONTROL(I).Enabled = True (COMO ARRIBA SE BLOQUEO AHORA SE TIENE QUE DESBLOQUEAR , SI Y SOLO SI SE BLOQUEO ANTES)
End If
Next
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar