Ir para conteúdo
Fórum Script Brasil
  • 0

Fazer form aparecer onde foi clicado


spilin182

Pergunta

Boa noite. Tenho um form com varios labels espalhados. Gostaria de fazer um outro form aparecer onde o usuario clicar. Estou tentando da seguinte maneira:

Private Sub lblReceita_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim i As Integer

NovoValor_1.Text1.LinkTopic = lblValor(Index).LinkTopic

NovoValor_1.Text1.LinkItem = lblValor(Index).LinkItem

NovoValor_1.Text1.LinkMode = 2

NovoValor_1.Text1.Text = Trim(lblReceita(Index).Caption)

Min2 = 1

Max2 = 150

Indice = Index

Form5.Left = X

Form5.Top = Y

Form5.Show

Form5.move

Form5.Label3.Caption = Receitas.Min2

Form5.Label4.Caption = Receitas.Max2

End Sub

Porém o form não aparece na posição x,y clicada. alguém saberia a maneira correta de fazer este codigo?

Grato

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Não deu muito certo. o Form chamado fica aparecendo sempre na mesma posição. Os labels nos quais o usuario pode clicar estão indexados, então eu tentei da seguinte maneira:

Private Sub lblValor2_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

form5.Text1.LinkTopic = lblValor2(Index).LinkTopic

form5.Text1.LinkItem = lblValor2(Index).LinkItem

form5.Text1.LinkMode = 2

form5.Text1.Caption = lblValor2(Index).Caption

min = lblValor3(Index).Caption

max = lblValor4(Index).Caption

form5.bit = True

form5.Left = lblValor2(Index).Left

form5.Top = lblValor2(Index).Top

form5.Show

form5.Label3.Caption = VisaoGeral.min

form5.Label4.Caption = VisaoGeral.max

End Sub

A idéia era utilizar a posição Left e Top do label clicado para fazer com que o form5 assumisse esses valores aparecendo pelo menos aproximadamente onde foi clicado.

Link para o comentário
Compartilhar em outros sites

  • 0

mas e pra ele clicar no label ou no formulario??

de qualquer modo, é aquele codigo mesmo. se precisar checar o click do label, ponha o mesmo codigo no mousedown do label. e tb some o top e o left do label ao top e left do outro form.

aqui esta um exemplo q faz isso q você quer, tanto para o form quanto para o label:

spilin182.rar

Editado por kuroi
Link para o comentário
Compartilhar em outros sites

  • 0

Cara antes de mais nada obrigado pela força. Eu abri seu exemplo, o que eu preciso é exatamente isso, porém ainda não funcionou.

No meu caso o formulário bem como sua label onde é clicado é um mdichild, e o form5 q eu faço aparecer não. Será que isso está influenciando na posição?

Uma outra situação é que os labels estão todos indexados, porém eu observei isso e utilizei o "index" corretamente como segue:

Private Sub lblValor2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

form5.Left = lblValor2(Index).Left + Me.Left + X

form5_2.Top = lblValor2(Index).Top + Me.Top + Y

form5.show

end sub

Eu tentei usar as propriedade left e top do Md1form porém não obtive sucesso.

Link para o comentário
Compartilhar em outros sites

  • 0

Apenas complementando a informação anterior, no seu exemplo eu criei um MDI e transformei o form1 em mdichild, e funcionou! =/

Eu tentei fazer o mesmo com no meu projeto com um label sem indexação porem acontece a mesma situação. O form simplesmente não aparece onde foi clicado :blink:

Link para o comentário
Compartilhar em outros sites

  • 0

spilin182, com mdi é pra funcionar do mesmo jeito. entretanto, se o segundo form não estiver como mdichild, você tem q somar tb o top e o left do mdi pai.

Eu tentei fazer o mesmo com no meu projeto com um label sem indexação porem acontece a mesma situação. O form simplesmente não aparece onde foi clicado :blink:

e como ficou o codigo dessa vez??

Link para o comentário
Compartilhar em outros sites

  • 0

O código ficou da seguinte maneira:

'Este codigo não funcionou como esperado

Private Sub lblValor9_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

form5.Left = lblValor9.Left + MDIForm1.Left + Me.Left + X

form5.Top = lblValor9.Top + MDIForm1.Top + Me.Top + Y

form5.Show

End Sub

Porém o erro persiste.

Eu fiz o código no evento mouse down do form para efeito de teste, porém também deu errado:

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

fomr5.Left = MDIForm1.Left + Me.Left + X

form5.Top = MDIForm1.Top + Me.Top + Y

form5.Show

End Sub

Porém ainda tem um detalhe que acredito ser o X da questão.

Atrás desses labels que eu desejo que o usuario clique e o form apareça, existe um controle image, com uma figura fazendo um "plano de fundo".

Para efeito de teste eu fiz o código para fazer o form aparecer onde o ponteiro foi clicado nesse controle image e deu certo.

'Este codigo funcionou

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

form5.Left = Image1.Left + Me.Left + X

form5.Top = Image1.Top + Me.Top + Y

form5.Show

End Sub

Eu tentei somar os atributos top e left dessa imagem com as demais, porém ainda assim não funcionou =/

Link para o comentário
Compartilhar em outros sites

  • 0
spilin182, so pra você não achar q eu esqueci...

ta estranho aqui, não to entendendo o q ta acontecendo no seu projeto, mas ate o fim de semana, eu vo ver se faco mais uns testes aqui e vejo se consigo descobrir.

mas se você conseguir resolver ai, me avisa.

Vlw a força cara... eu continuo tentando aqui mas ainda não consegui também. Vlw mesmo

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...