Programación General > Visual Basic 6.0 e inferiores
Shape
RadicalEd:
Hola chicos de SoloCodigo, tengo unas cuantas consultas es que estoy un poquito enrredado.
Estoy trabajando con el control shape para unos cortes que le debo hacer a un shape mas largo, el programa consiste asi:
Manejo un control shape de un tamaño grande y otro de tamaños mas pequeños.
En el shape mas grande me deben caber cierta cantidad de los shapes mas pequeños, de acuerdo a esta formula.
--- Código: Text ---'TxtAlLami es el Height del Shape grande'TxtAlCor es el Height del Shape pequeño'TxtAnLami es el Width del Shape grande'TxtAnCor es el Width del Shape pequeñox = Val(TxtAlLami.Text) / Val(TxtAlCor.Text)y = Val(TxtAnLami.Text) / Val(TxtAnCor.Text)a = x * y Esta formula calcula la cantidad de veces que cabe el shape pequeño en el grande, pero ahora los problemas son:
1.) Acomodar la cantidad de shapes pequeños, que los usos como un array de controles, dentro del grande en la mejor forma, vertical u horizontal, sin pasarme ni del height o el width del grande, uno debajo del otro, y cuando pase el height o el width, seguir al lado de los primeros shapes.
2.) Se pueden dar diferentes tamaños al shape pequeño, y acomodar en diferentes partes del shape grande estos pequeños de la mejor forma, sin gastar espacio para los demas shapes.
PD. sino me entienden me desgloso un poquito mejor
Gracias Chao
[/color]
Soultaker:
Pa' empezar las propiedades estas que las usas inversamente, estas que usas la propiedad width en el height del objeto y viceversa, fijate en tus imagenes el largo que le das es mayor al ancho pero las imagenes la muestran al revez.
Una solución a lo que pides es que colocas un shape chico en el grande, al colocarlo.
1ero. Colocar el primer SHAPE chico en el TOP del SHAPE grande.
2do. Colocar el segundo SHAPE chico en el HEIGHT + TOP del primer SHAPE chico. Y seguir haciendo ese procedimiento hasta que pase el height del SHAPE grande.
3ro. Llegas y sobrepasa al HEIGHT del SHAPE grande, ahora como sabes que pasaste el SHAPE grande, fácil sumas el HEIGHT y el TOP del SHAPE grande y también sumas el HEIGHT y el TOP del SHAPE chico y luego verificas si el resultado del SHAPE chico es mayor al del SHAPE grande.
4to. Colocar al costado del primer SHAPE chico, en este caso es igual solo que ahora sumas el WIDTH y el LEFT del SHAPE chico y el TOP de este, en el LEFT del SHAPE chico que va al costado del primer SHAPE chico le colocas la suma del WIDTH y del HEIGHT de este y en el TOP del SHAPE chico que va al costado del primer SHAPE chico le colocas el TOP del primer SHAPE chico.
Bueno espero que me hayas entendido.
--- Citar ---PD. sino me entienden me desgloso un poquito mejor
--- Fin de la cita ---
Yo también :D :lol:
:comp:
RadicalEd:
El Width va hacia la derecha y el Height hacia abajo
Ok man, esta muy facil y bonito lo que estas diciendo, es mas lo de colocar debajo del otro es muy facil, pero hay un problema en el que no caes en cuenta, como vistes, se pueden colocar shapes de diferentes tamaños, y aqui es donde entra el problema (POR LO MENOS PARA MI).
¿Como racionar a la perfección el shape grande, para que entren diferentes shapes pequeños?
Mira el codigo tan cochino que tengo para acomodar los shapes dentro del grande, he incluso sigue sin servir.
--- Código: Text ---Private Sub Command2_Click()On Error Resume NextDim vcShp(0).Top = Shp1.TopShp(0).Left = Shp1.LeftFor h = 1 To 19 vc = h Shp(h).Left = Shp1.Left Shp(h).Top = Shp(h - 1).Height + Shp(h - 1).Top + 15 If Shp(h).Top + Shp(h).Height > Shp1.Height Then MsgBox "YA PASO EL MAXIMO" Exit For' Shp(h).Left = Shp(0).Width + 100 End IfNextMsgBox vc + 1Shp(vc + 1).Top = Shp1.Top'Aqui 'ta el problema me esta dando 0 el vc, voy a ver como lo arregloShp(vc + 1).Left = Shp(vc - vc).Width + 125 vc = vc + 1For h = vc + 1 To 19 vc = h Shp(h).Left = Shp(h - vc).Width + 125 Shp(h).Top = Shp(h - 1).Height + Shp(h - 1).Top + 15 If Shp(h).Top + Shp(h).Height > Shp1.Height Then MsgBox "YA PASO EL MAXIMO" Exit For End IfNextMsgBox vc + 1Shp(vc + 1).Top = Shp1.TopShp(vc + 1).Left = Shp(vc - vc).Width + 125vc = vc + 1For h = vc + 1 To 19 vc = h Shp(h).Left = Shp(h - vc).Width + 125 Shp(h).Top = Shp(h - 1).Height + Shp(h - 1).Top + 15 If Shp(h).Top + Shp(h).Height > Shp1.Height Then MsgBox "YA PASO EL MAXIMO" Exit For End IfNextEnd Sub Ojala me entiendas.
Gracias Chao[/color]
Soultaker:
Aca esta un ejemplo de lo que quieres, pero aqui solo lo pone debajo de cada shape, si quieres cambiale de tamaño al shape grande y siempre lo va poniendo debajo y no se pasa el shape grande, ya te dejo de tarea pa que lo hagas al costado, usa la misma logica.
:comp:
RadicalEd:
Esto ya lo hice Soultaker, es mas lo del lado ya tambien, pero lo que no trunka es cuando son más de 2 columnas ay viene el chingo problema :( y no lo he podido acomodar.
Navegación
[#] Página Siguiente
Ir a la versión completa