CRIANDO SHAPES EM FRAMES

EMANUEL 16/06/2004 13:41:10
#29917
Como fazer para criar uma certa quantidade shpes dentro de um frame, ou seja, que se encaixa no tamanho do frame, por exemplo:

tenho Shapes com height = 525 e width=720
Tenho um frame com height=1365 e width=1275

quero criar a quantidade de shapes que caiba nas dimensões do frame.
se o frame mudar o tamanho para maior, caberia mais shapes, se mudar para menor, caberia menos shapes... e assim vai...

Exemplo: no frame acima vamos supor que coube 4 shapes, se aumentando o tamanho do frame quero que o programa verifica quantos shpes cabem com este novo tamnho, dai colocaria, como tambem, se diminuisse... reduzia a quantidade de shapes visiveis naqule tamanho.


obrigado,
Emanuel
USUARIO.EXCLUIDOS 16/06/2004 13:58:38
#29925
Resposta escolhida
E, se por exemplo, sobrar espaço dentro do frame? Redimensiona os shapes ou não precisa?
USUARIO.EXCLUIDOS 16/06/2004 14:33:45
#29933
Tá. Faça aí um projeto com um frame e um shape na posição (0, 0) desse frame. é IMPRESCINDàVEL que esse shape1 tenha índice = 0 (shape1(0)). Olha o código:

Private Sub Command1_Click()
Dim quantascol, quantaslin, queshape, x, y As Integer
'primeiro mata todos shapes já feitos:
For x = 0 To Shape1.UBound
If x <> 0 Then Unload Shape1(x)
Next
quantascol = Fix(Frame1.Width / Shape1(0).Width)
quantaslin = Fix(Frame1.Height / Shape1(0).Height)
If quantascol = 0 Or quantaslin = 0 Then Exit Sub
queshape = 1
For x = 1 To quantascol
For y = 1 To quantaslin
Load Shape1(queshape)
With Shape1(queshape)
.Top = Shape1(0).Top + ((y - 1) * Shape1(0).Height)
.Left = Shape1(0).Left + ((x - 1) * Shape1(0).Width)
.Visible = True
End With
queshape = queshape + 1
Next y
Next
End Sub
USUARIO.EXCLUIDOS 16/06/2004 15:11:31
#29943
Peraí...

Veja bem, eu EXCLUà os shapes que não fossem aparecer. Ou melhor, eu só mandei fazer a quantidade de shapes que coubessem inteiros (veja o Fix para nº de colunas e linhas). A quantidade de shapes, nesse caso não é fixa, vai variar conforme o tamanho do frame (não é que os demais shapes ficarão invisíveis, eles serão DESCARTADOS). Se não tem problema dos shapes serem destruídos e reconstruídos indefinidamente (não sei o que você pretende fazer dentro deles), então bastaria colocar mais uma coluna e mais uma linha de shapes:

quantascol = Fix(Frame1.Width / Shape1(0).Width) + 1
quantaslin = Fix(Frame1.Height / Shape1(0).Height) + 1

Se não for bem isso, escreve aí.
USUARIO.EXCLUIDOS 16/06/2004 15:12:52
#29945
AAAAAAHHHHH BOM!!!
USUARIO.EXCLUIDOS 16/06/2004 15:36:55
#29952
Emanuel... sinceramente, eu até fico contente em saber que o que fiz lhe ajudou, mas até agora eu não entendi lhufas do que você está querendo fazer!!!!

Como assim, mostrar a área que não foi preenchida? Mostrar de outra cor ou calcular a área em cm²? Se o caso for de mostrar em outra cor, bastaria mudar o backcolor do frame, né?
USUARIO.EXCLUIDOS 16/06/2004 16:50:06
#29976
Caiu a ficha!!!!

Tio Max, na aurora de sua vida, tinha uma marcenaria e brincava de esquadrejar chapa de compensado pra fazer gabinete, guarda-roupa, gaveta e o escambau. Matei a charada?

Tio Max tá ficando com o popà' quadrado de tanto olhar pra esse monito LG Studioworks 550A (a quem chama, carinhosamente, de "LG") e se viu impossibilitado de transportar o que você queria para o mundo real. Shape, pra mim, era shape do VB. Aí você falou em 478 MILàMETROS daí eu parei e falei para LG: "Amigo LG: como eu vou fazer um shape de quase meio metro dentro de você?"

Vou ver se sai algo até à s 17:15. Senão, a gente pode continuar o papo amanhã.
USUARIO.EXCLUIDOS 17/06/2004 11:17:55
#30051
Tà' quase acabando. Tõ montando até um projetinho que eu vou colocar aqui no site. Aguarde mais uma meia hora.
USUARIO.EXCLUIDOS 17/06/2004 14:25:56
#30071
Pronto (ma non tropo). Veja em http://www.vbmania.com.br/vbmdetail.php?varID=1050

Vê se é isso.
Tópico encerrado , respostas não são mais permitidas