CRIANDO SHAPES EM FRAMES
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
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
E, se por exemplo, sobrar espaço dentro do frame? Redimensiona os shapes ou não precisa?
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
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
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Ã.
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Ã.
AAAAAAHHHHH BOM!!!
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é?
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é?
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ã.
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ã.
Tà ' quase acabando. Tõ montando até um projetinho que eu vou colocar aqui no site. Aguarde mais uma meia hora.
Pronto (ma non tropo). Veja em http://www.vbmania.com.br/vbmdetail.php?varID=1050
Vê se é isso.
Vê se é isso.
Tópico encerrado , respostas não são mais permitidas