Fórum Form´s x PageControl #373102
04/08/2009
0
Saudações a todos...
Gostaria de saber como abrir um Form dentro de um Pagecontrol.
Lenasi
Curtir tópico
+ 0Posts
04/08/2009
Alanporto
var form: TMeuFormCriado; //variável da Classe do form a ser criado. begin form := TMeuFormCriado.Create(nil); with form do begin Parent := TabForm; //TabSheet que receberá o form. Visible := True; end; end;
A partir daí é só setar as propriedades ou já deixar o form com elas já definidas, vai depender do que você precisa. (e não se esqueça de liberá-lo da memória também!).
Gostei + 0
04/08/2009
Lenasi
Perfeito funcionou...
Fiz algumas incrementações e funcionou da forma exeta que eu queria .
Gostaira que verificasse se realmeten fiz correto.
Coloquei um PageControl no Menu principal.
O Forme a ser aberto, habilitei a alterei a propriedade BordyStyle para NSnome para que o From ficasse sem as bordas...
Enfim, o efeito foi de abrir um Form como eu queria, um cadastro por exemplo abaixo da tela de mnenu, sem aquele efeito de ShowModal..
Mas tem um porém:
O menu ficou liberado para acessar outros módulos, até aí tudo, mas gostaria agora de poder abrir outro módulo qualquer com excessão do atual já aberto, e qdo abrir um novo módulo, fechar o atual...
ou...
Deixá-lo com o efeito de showmodal, digo, aceitar o menu caso o form atual seja feixado.
A respetio do que disse em liberar a memória, seria acrescentar após seus comando a seguinte linha?
FreeAndNil(FrmUsuarios);
Mais uma vez obrigado
Gostei + 0
06/08/2009
Lenasi
Gostei + 0
07/08/2009
Osocram
SeuForm.Release;
SeuForm := nil;
Gostei + 0
11/08/2009
Lenasi
Como já dito, isto está na tela principal.
Coloquei um pgcontrol e um painel (utilizado para mostrar o titulo do form)..
Dúvidas:
-Colocar a descrição no TPAinel blz. Mas não consigo apagá-lo qdo fecho o Form.
-Gostaria que este form fosse aberto no modo como Modal, para não terem acesso aos menus, ou pleo menos no botão sair do sistema, ou caso seja aberto outro Form, fechar o atual se estive algum aberto.
Resumindo: o Efeito é muito interessante pelo menos para eu, coloco o form com BorderStyle:Normal...
Quem puder me ajudar ficarei muito grato.
Obrigado a todos mais uma vez....
Gostei + 0
12/08/2009
Alanporto
for i := 1 to TabForm.ControlCount do TabForm.Controls[0].Destroy;
Ele vai percorrer todos os controles contidos no TabSheet e vai destruí-los (pode ser usado Free ou Release, vai do que for melhor).
Gostei + 0
12/08/2009
Lenasi
Desculpe a ignorância. é que estou aprendendo o delphi...
Este código que você me passou vai me atender no momento que abrir um outro formulário quando um já estiver aberto?
Como em que local devo chamá-lo? |
A expressão TabForm é o nome da TabSheet?
E com relação aos outros itens que comentei?
Obrigado.
Gostei + 0
12/08/2009
Alanporto
Sim. Ele vai destruir os controles contidos no TabSheet (no caso, o form criado).
Antes da criação do formulário.
Sim. É que usei o exemplo da primeira postagem... Dá uma olhada no primeiro código que postei.
Você pode fazer uma procedure pra testar se o ControlCount do TabSheet está zerado e limpar o Panel por ela (se é isso mesmo que você quer, pois não entendi muito bem sua dúvida) :(
Bobagem se desculpar... ninguém é obrigado a saber tudo, não é verdade :?:
Gostei + 0
12/08/2009
Lenasi
Amigo, o Panel está fora do Pgcontrol....
Está dentro do form do menu Principal
Obrigado
Bobagem se desculpar... ninguém é obrigado a saber tudo, não é verdade :?:[/quote:8e33618191]
Gostei + 0
12/08/2009
Alanporto
e afinal é só uma idéia...
Gostei + 0
12/08/2009
Lenasi
Amisog, agora, precisava fazer com que o form fosse aberto exclusivamente...(Como se fosse SgowModal)
Lembrando que estou abrindo o Form na tela principal dentro de um Pagecontrol(com 1 tabsheet oculto)...
Entende o efeito?
Obrigado.
Gostei + 0
13/08/2009
Alanporto
e quanto ao efeito Modal, vai depender do uso da aplicação. Se eu entendi bem, há dois modos de simular:
1. Como só vai haver dois forms abertos de cada vez (o principal e o criado dentro do container), desabilitar todos os controles do form principal, exceto o container :wink: . Quando o form criado for fechado, habilitar tudo novamente.
2. Como só vai haver dois forms abertos de cada vez (já que para criar outro form o já criado tem que ser destruído), já temos algo como um pseudo Modal (no sentido que vai ser exclusivo, mas não vai limitar o acesso aos outros recursos do form principal).
Particularmente, me agrada mais a segunda opção, mas cada caso é um caso...
Gostei + 0
13/08/2009
Lenasi
Olá amigo, boa noite..
Aí, tá vendo,nada melhor do que compartilhar informações... Não sabia que poderia abri também dentro de um Panel... O meu intuito é abrir um form sem auquele efeito de Form sobre o menu principal e sim dentro do mesmo(menu principal)....
Agora, como fazer para abrir dentro de um Panel limitando os recursos do principal?
Mais uma vez,
Obrigado.
Gostei + 0
14/08/2009
Alanporto
Quanto a criar um componente dentro de outro, qualquer Container faz isso, através do Parent, ou na hora da criação você indicar o container como Owner:
form := TForm2.Create(PanelQueRecebeOForm);
Pra usar o Panel é o mesmo processo do PageControl.
E para desabilitar o form principal vc pode tentar usar novamente o ControlCount (verificá-lo para ver se tem form criado ou não dentro do Panel).
Gostei + 0
19/08/2009
Lenasi
var form: TMeuFormCriado; //variável da Classe do form a ser criado. begin form := TMeuFormCriado.Create(nil); with form do begin Parent := TabForm; //TabSheet que receberá o form. Visible := True; end; end;
Amigos,
Está funcionando da forma que desejava, porém, gostaria de não permitir que outro Form seja aberto enquanto houver um em aberto.
Há esta possíbilidade?
Obrigado
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)