CRIAR BARRA DE AJUSTAMENTO DE TAMANHO
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
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
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?
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?
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.
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.
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