Form´s x PageControl
Olá amigos,
Saudações a todos...
Gostaria de saber como abrir um Form dentro de um Pagecontrol.
Saudações a todos...
Gostaria de saber como abrir um Form dentro de um Pagecontrol.
Lenasi
Curtidas 0
Respostas
Alanporto
04/08/2009
Assim:
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!).
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
Lenasi
04/08/2009
Olá amigo,
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?
Mais uma vez obrigado
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
Lenasi
04/08/2009
Olás amigos, alguém pode me ajudar?
GOSTEI 0
Osocram
04/08/2009
Qdo se trata de formularios o melhor jeito de se liberar da memoria seria
SeuForm.Release;
SeuForm := nil;
SeuForm.Release;
SeuForm := nil;
Olás amigos, alguém pode me ajudar?
GOSTEI 0
Lenasi
04/08/2009
OK.. Coninuando o assunto para de abrir o From em PgControl...
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....
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
Alanporto
04/08/2009
Para limpar o TabSheet antes de criar o form use esse código:
Ele vai percorrer todos os controles contidos no TabSheet e vai destruí-los (pode ser usado Free ou Release, vai do que for melhor).
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
Lenasi
04/08/2009
olá amigo Alanporto,
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.
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
Alanporto
04/08/2009
Este código que você me passou vai me atender no momento que abrir um outro formulário quando um já estiver aberto?
Sim. Ele vai destruir os controles contidos no TabSheet (no caso, o form criado).
Como em que local devo chamá-lo?
Antes da criação do formulário.
A expressão TabForm é o nome da TabSheet?
Sim. É que usei o exemplo da primeira postagem... Dá uma olhada no primeiro código que postei.
E com relação aos outros itens que comentei?
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) :(
Desculpe a ignorância. é que estou aprendendo o delphi...
Bobagem se desculpar... ninguém é obrigado a saber tudo, não é verdade :?:
GOSTEI 0
Lenasi
04/08/2009
[quote:8e33618191]
Este código que você me passou vai me atender no momento que abrir um outro formulário quando um já estiver aberto?
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) :(
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
Alanporto
04/08/2009
mas a procedure testaria o conteúdo do TabSheet, que está no mesmo form do Panel
e afinal é só uma idéia...
e afinal é só uma idéia...
GOSTEI 0
Lenasi
04/08/2009
Bom, a questão do Panel foi resolvido...
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.
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
Alanporto
04/08/2009
se você está usando o PageControl com o intuito de só ter uma aba não seria melhor criar o form dentro de um Panel?
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...
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
Lenasi
04/08/2009
se você está usando o PageControl com o intuito de só ter uma aba não seria melhor criar o form dentro de um Panel?
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...
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
Alanporto
04/08/2009
se você não quisesse que o form abrisse em Modal te recomendaria fazer form MDI.
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:
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).
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
Lenasi
04/08/2009
[quote=´alanporto´]Assim:
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
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
Robson Morais
04/08/2009
Alguém poderia me passar o codigo dessa função, pois não estou conseguindo montar....
GOSTEI 0
Nelson Santos
04/08/2009
Desenvolva softwares 3D em Delphi 7
www.3dsistemas.com.br
www.3dsistemas.com.br
GOSTEI 0