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

Outras telas exibidas dentro do form principal


Musashi_RS

Pergunta

Olá,

Estou tentando mudar a forma de exibir e acessar as outras funcionalidades (telas) do meu aplicativo. O que tenho em mente é algo que utilize apenas o form principal, ou pelo menos dê a impressão.

Um exempo é o antivirus AVG 8.0 Free, no qual o usuário seleciona o que deveriam ser diversas telas, as quais são exibidas em forma de um painel no form principal.

Fiz um teste da seguinte forma: Tornei o form secundário flat e sem bordas e no Load do mesmo, defino a posição de inicialização para a posição do painel do form principal. Além disso o form secundário possui as mesmas domensões do painel, obviamente.

No entanto, não ficou como eu queria, pois não consigo mover nem acessar o form principal se o form secundário for chamado de forma Modal. Se não for Modal, quando eu clico no form principal (atrás) o form principal fica na frente do secundário, revelando o esquema. <_< :closedeyes:

Alguém tem alguma idéia de como fazer isso? :rolleyes:

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Quis dizer o seguinte: quando movimento o form principal, já com o form secundário aberto sobre ele, o form secundário tenta acompanhar a posição do form principal, a cada intervalo do timer (está em 1). No entanto, é muito perseptível essa "dessincronia", dando o efeito de estar amarrado por uma corda. (Ô.o).

Será que não existe outro evento que possa ser utilizado, como algum evento que ocorre quando o form é movimentado, ou quando pressionamos e movemos o mouse...?

Vlw ^^

Link para o comentário
Compartilhar em outros sites

  • 0

serio?? aqui não é perceptivel dessincronia não. não no teste q eu fiz.

ate enchi de controles o formulario pra ver se dexava mais pesado, mas com o interval do timer em 1, ele move perfeito.

bom, talvez isso varia dependendo da capacidade do sistema e do hardware, mas se você quiser da uma olhada, esse é o projeto q eu fiz aqui:

forms.rar

agora se pra você realmente isso não ta ficando legal, então ai fica foda. porque tipo, você não consegue saber quando é clicado na barra de titulos do form. e tb não da pra saber facil quando o form é movido. a não ser q você esconda a barra de titulos do form e faca ela com picture box por exemplo, e ai você pega pelo clique no proprio formulario.

agora, pra descobrir quando o form é movido na barra de titulos, isso já saiu no forum uma vez, e ai o graymalkin passou essa dica aqui:

Pelo visto não como fazer para quando a janela é movimentada pela barra de título né?

Eu até tinha pesquisada essas APIs antes de postar aqui mas acreditei haver outra maneira de se fazer.

Cara, deve ter sim. O lance é saber quando a janela é movimentada (não tem um evento para isso), o que creio ser possível fazer monitorando as mensagens enviadas à janela. No final de semana vou dar uma pesquisada a respeito.

acho q ele quis dizer alguma coisa relacionada a api SendMessage.

mas acho q você pode tb tentar alguma coisa com as apis SetCapure e ReleaseCapture. com elas você pode pegar a posicao do mouse na tela (mesmo q não esteja dentro do formulario) e ai você talvez consiga fazer alguma coisa a partir disso.

veja ai, e qualquer coisa poste.

e tb avisa o q você descobrir ai, falou.

EDITADO:

e pra falar a verdade, to pensando aqui agora, uma forma bem melhor de fazer isso em vez de usar varios forms, seria usar varios usercontrols.

em vez de criar forms, você cria usercontrols. e ai em vez de mostrar o form e tentar dexar dentro do form principal, você simplesmente poe os usercontrols la e vai exibindo e escondendo de acordo com o q você for mostrar.

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

  • 0
EDITADO:

e pra falar a verdade, to pensando aqui agora, uma forma bem melhor de fazer isso em vez de usar varios forms, seria usar varios usercontrols.

em vez de criar forms, você cria usercontrols. e ai em vez de mostrar o form e tentar dexar dentro do form principal, você simplesmente poe os usercontrols la e vai exibindo e escondendo de acordo com o q você for mostrar.

Gostei dessa idéia, mas andei pesquisando o que são UserControls e entendi o que você quis dizer. No entanto, estou com dificuldades de como utilizá-los. Não entendi direito como funciona. Pelo que vi, eles devem ser inseridos na Paleta de Ferramentas ou algo assim. Vou dar mais uma pesquisada.

Link para o comentário
Compartilhar em outros sites

  • 0
Pelo que vi, eles devem ser inseridos na Paleta de Ferramentas ou algo assim. Vou dar mais uma pesquisada.

é, como se fosse um textbox. mas você pode por qualquer coisa dentro dele.

exemplo, clica em menu Project -> Add User Control e ponha um novo. você vai ver q vai aparecer o icone seu user control na Toolbox a esquerda.

mas ai na janela de design do user control, ponha la um textbox e um botao. e no evento clique do botao, ponha o codigo:

Private Sub Command1_Click()
    MsgBox Text1.Text    
End Sub[/code]

e ai feche a janela de codigo e a de design do user control e vai pro formulario.

insira la o seu user control como se você fosse inserir o textbox.

aperte F5, e clique no botao q você vai ver o codigo funcionando.

ai é isso ai, você pode programar tudo dentro do user control cada tela num user control separado.

e ai você poe todos eles no formulario e vai alterando a propriedade Visible pra definir qual sera mostrado.

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...