CRIAR BARRA DE AJUSTAMENTO DE TAMANHO

LP238 09/10/2011 21:55:26
#386349
Ei pessoal, estou tendo criar uma um formulário totalmente personalizado, com barra de título scroll, etc...
Consegui criar a barra de título que movimenta o form, mas não estou conseguindo criar o ajustamento do formulário.
Tentei assim:
If (Movendo = True) Then
If (PMovida = False) Then
PMovida = True
Cursorx = e.X
End If

Me.Size = New Size(e.X + Me.Size.Width - Cursorx, Me.Size.Height)
End If

ele funciona, porém a expação é feita de maneira que o valor atruibuído ao tamanho do formulário, é o proprio tamanho somado ao valor da posição do mouse enquanto estiver precionado e se movendo. Até este ponto é o que eu quero, porém se eu movimento um ponto, ele acrescenta um ponto(o que eu quero), já se movimento mais um ponto, ao invéz de acrescentar +1, ele acresce ao valor novamente o resultado da soma de tamanho do formulário e 1.
Mais ou menos assim:
primeiro movimento:
tamanho formulário=tamanho formulário+1.
segundo movimento:
tamanho formulário=(tamanho formulário+1)+tamanho formulário+1
terceira:
tamanho formulário=((tamanho formulário+1)+tamanho formulário+1)+tamanho formulário+1
e assim continua...
O que eu quero é assim:
primeira vez:
tamanho formulário=tamanho formulário+1
segunda:
tamanho formulário=tamanho formulário+2
etc...
Até tentei assim:
Me.Size = New Size(e.X - Cursorx, Me.Size.Height), ele faz esse de acréscimo de um ponto, porém ele acresce assim
primeira vez:
tamanho formulário=1
segunda:
tamanho formulário=2
etc..Teria como vcs me ajudarem?
tamanho formulário=tamanho formulário+1
PROFESSOR 24/10/2011 21:20:33
#387630
Resposta escolhida
Hehehe, entendi mas não compreendi!

A rotina em sí, seria interessante você postar mais completa, permitindo avaliar problemas. De momento, o que dá para [Ô]sacar[Ô] é:

If (Movendo = True) Then [ô]Isto é ativado no MouseDown, provavelmente...
If (PMovida = False) Then [ô]Isto é aqui mesmo. Se for var estática, será sempre True após o 1º mov.
PMovida = True [ô]Se não for, será sempre False.
Cursorx = e.X [ô]Essa Cursorx é o valor do X (mouse) em relação ao form.
End If
Me.Size = New Size(e.X + Me.Size.Width - Cursorx, Me.Size.Height)
End If

Por outro lado, se o form é Sizable, o usuário já não tem um [Ô]gancho[Ô] nas bordas para redimensionar? Outro, então?
LP238 25/10/2011 18:50:41
#387747
Bem, o que pretendo é criar uma barra de ajustamento personalizada, tal como alguns programas possuem, para que meu software tenha uma cara mais própria. Sei que pode parecer um pouco trivial, mas gostaria de tentar.
PROFESSOR 25/10/2011 23:01:58
#387753
Entendi a idéia. Demorou para [Ô]cair a ficha[Ô].

Bom, tenho um modelinho de form sem bordas com barra de titulo própria, mas nele eu uso a sendmessage via interopservices (API, DllImport, parecido com o subclassing que se fazia no VB6) ao invés de calcular [Ô]na mão[Ô]. Aliás, é meio que [Ô]herança[Ô] de [Ô]usos e costumes[Ô] do VB6. Era só um protótipo, parte de um projeto, quando a gente migrou alguns projetos para o .Net, e que depois foi substituido por outro. Então eu sei que funcionava, por testes, mas nunca tivemos uma [Ô]prova de campo[Ô] com ele.

Por conta disso, não sei bem se você pode aproveitar algo dele, mas não custa tentar.

Estou postando aqui, um zip com dois zips: Um é o form (arquivos [Ô].vb[Ô], [Ô]designer.vb[Ô] e [Ô].resx[Ô], não enviei a solução ou o projeto), o outro são só as imagens dos botões da barra. Para evitar alguma [Ô]zebra[Ô] de referência, adicione primeiro as imagens aos resources e só depois o form (os três arquivos).

P.S. Quase esqueço. Tive de abrir no VS2010 e importar, pois não tenho mais o 2005 na máquina. Depois coloquei de novo as imagens (que já não estavam mais na pasta original). O resx do 2010 eu não lembro se o formato é compatível com o das versões anteriores, se for o caso.

Tópico encerrado , respostas não são mais permitidas