CONTROLAR TAMANHO DO FORM COM TRACKBAR

PHANTOM 26/03/2011 00:21:59
#369223
Olá.
Estou desenvolvendo um programa simples, incluí no form (sem borda) duas TrackBars uma vertical e outra horizontal. Gostaria de saber como que passo a estes dois componentes o Height e Width do form, a medida que eu deslocasse o controle vertical aumentasse o Height e o Horizontal o Width. Eu acho q seria com valores de 0 a 10 nas propriedades minimum e maximum dos controles, depois converteria o tamanho do Form em porcentagem... sei lá. Para que ficasse proporcional. Tem um recurso semelhante no Office 2007 na opção de zoom, q vc arrasta pra aumentar e diminuir...

Se alguém souber, ajuda ae.. =D

Obrigado.
PEGUDO 26/03/2011 14:52:39
#369271
Resposta escolhida
Cara eu fiz uma conta maluca, mas deu certo aqui
eu testei com o meu form que tem Width=722 e Height=632

Primeiro eu declarei no escopo esta variável:
[txt-color=#0000f0]Dim[/txt-color] Altura [txt-color=#0000f0]As Long[/txt-color]

No Load eu defini seu valor
[txt-color=#0000f0]Protected Sub[/txt-color] Page_Load([txt-color=#0000f0]ByVal[/txt-color] sender [txt-color=#0000f0]As Object[/txt-color], [txt-color=#0000f0]ByVal[/txt-color] e [txt-color=#0000f0]As[/txt-color] System.EventArgs) [txt-color=#0000f0]Handles[/txt-color] Me.Load
Altura = [txt-color=#0000f0]Me[/txt-color].Height
[txt-color=#0000f0]End Sub[/txt-color]


Agora eu fiz este código que mexe tanto na largura quanto na altura proporcionalmente:

[txt-color=#0000f0]Private Sub[/txt-color] TrackBar1_Scroll(ByVal sender [txt-color=#0000f0]As[/txt-color] System.Object, [txt-color=#0000f0]ByVal[/txt-color] e [txt-color=#0000f0]As[/txt-color] System.EventArgs) [txt-color=#0000f0]Handles[/txt-color] TrackBar1.Scroll
[txt-color=#0000f0]Me[/txt-color].Width = TrackBar1.Value
[txt-color=#0000f0]Me[/txt-color].Height = (Altura / 720) * TrackBar1.Value
[txt-color=#0000f0]End Sub[/txt-color]

Se lhe servir mude este trecho: [Ô]Altura / 720[Ô] para 800, 600, 650, 500... até que você fique satisfeito com o resultado no seu Form

Espero ter ajudado.
PHANTOM 26/03/2011 15:31:21
#369278
Obrigado PEGUDO! Com base na sua dica, consegui fazer aqui... acabei descobrindo mais uma coisa importante e gostaria de compartilhar: Sabe quando vc cria um form sem borda (tipo para uma aplicação FullScreen), ele cobre a barra de tarefas certo? Eu precisava de um Form sem borda mas que não cobrisse a Taskbar. Fuçando nas propriedades e métodos dos forms acabei descobrindo uma maneira de fazer o form preencher a tela mas deixar a taskbar visível, para isso basta inserir o seguinte código:

Me.MaximumSize = Screen.PrimaryScreen.WorkingArea.Size

[Ô]Screen.PrimaryScreen.WorkingArea.Size[Ô] Obtém o valor da [Ô]área útil[Ô] do Desktop, então eu passei esse valor para a propriedade Maximum do Form para garantir que ele não fique maior do que a tela. Pensando que essa aplicação possa rodar sem problemas em qualquer resolução de tela.

Voltando a questão do tópico, passei os valores das propriedades Maximum e Minimum para o Trackbar:

[txt-color=#0000f0]Me.MaximumSize = Screen.PrimaryScreen.WorkingArea.Size
trbHoriz.Maximum = Me.MaximumSize.Width
trbHoriz.Minimum = Me.MinimumSize.Width
trbVert.Maximum = Me.MaximumSize.Height
trbVert.Minimum = Me.MinimumSize.Height[/txt-color]


Depois inseri a instrução no evento Scroll do Trackbar:

Private Sub trbHoriz_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles trbHoriz.Scroll
Me.Width = trbHoriz.Value
End Sub
Private Sub trbVert_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles trbVert.Scroll
Me.Height = trbVert.Value
End Sub

Por fim, para garantir que o Trackbar se atualize cada vez que eu redimensionar o form:

[txt-color=#0000f0]Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
Timer2.Enabled = True
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
trbHoriz.Value = Me.Width
trbVert.Value = Me.Height
Timer2.Enabled = False
End Sub[/txt-color]


PEGUDO 26/03/2011 16:53:22
#369284
é isso aí.
às vezes, quando estamos perdidos, basta uma palavra pra que possamos resolver uma questão

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