Rutina en VB

Que onda Leo, soy el que te hizo la pregunta a un pequeño sistemita de un restaurant, vi tu respuesta y me ayudo mucho, ya que me dio una día de como puedo hacerlo, tengo otra pregunta que hacerte:
En el mapa del restaurant, estoy dibujando las mesas y las sillas, con la opción del shape del VB, va hacer mucha talacha hacerla, una por una, pero lo hago, pese a que son más de 100 mesas... Je je, por 10 sillas..., pero bueno, lo que realmente te quiero preguntar es lo siguiente:
Si yo selecciono, la mesa 5 y la silla 10, como le hago para cambiar el fondo.
Yo lo hago de esta forma:
Private Sub OK_Click()
If Mesatb.Text = "1" And Sillatb.Text = "1" Then
If Adulto.Value = 1 And Infante.Value = 0 Then
Silla1.FillStyle = 0
Silla1.FillColor = vbRed
End If
If Infante.Value = 1 And Adulto.Value = 0 Then
Silla1.FillStyle = 0
Silla1.FillColor = vbGreen
End If
'End If
Pero imaginate, si son más de 100 mesas, como puedo hacerle, para no hacer más de 100 condiciones, me imagino que con una función, pero la bronca son las variables (silla1... Etc),
Espero que hayas entendido la pregunta.
Yo intente concatenar el nombre de la variable + un numero, y con esa variable intentarle cambiar la propiedad del fondo, pero me manda un mensaje.
Saludos
PD Disculpa este rollo...
Respuesta
1
Lo que se me ocurre para que te sea fácil, es crear una matriz de objetos, para las mesas y las sillar.
Lo harias asi:
Borra todas la mesas y las sillas, deja solo una de cada una, un mesa y cuatro sillas o lo que sea por mesa, con estos nombres por ejemplo:
Mesa
Silla1
Silla2
Silla3
Silla4
Luego slecciona lo 5 objetos jutos y pone copiar y al pegar te va a preguntar si quieres realizar una matriz de controles, ponele que si, pega las 100 mesas.
Luego de acomodarlas donde van, veras que si bien los nombres son repetidos, cada control tiene un indice que las identifica, por ejemplo la mesa 1 es
Mesa(1)
Silla1(1)
Silla2(1)
Silla3(1)
Silla4(1)
Al hacer doble click en un objeto, por ejemplo en una silla, vos pones el código que ya tienes y le agregas (index) al nombre
Silla1(index).FillStyle = 0
Silla1(index).FillColor = vbRed
El valor index se refiere directamente al control en el cual has hecho doble click, fíjate que solo es una rutina para las 100 sillas.
Si ya tienes puestas las mesas y sillas y se te compica para borrar todo, lo que tienes que hacer es cambiar los nombres y los indices a mano, por ejemplo te paras en la mesa 1, la llamas sol Mesa y a su propiedad Index le pones 1, eso lo haces con todas las mesas y sillas.
Es un lio pero es la única manera, igualmente no podrías crear tantos objetos, el VisulaBasic tiene un limite de 255 objetos distintos pot formulario, pero al hacer una matriz eso te lo toma como un único objeto.
Cualquier duda estoy a tu disposición.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas