MDIChild problema c fusão de componentes. (Leia mais...)

10/08/2008

1

Oi, seguinte... estou tendo uns probleminhas.
Já vi em alguns sistemas que o componente ´TMainMenu´ de um fsMDIChild pode se unir com o ´TMainMenu´ do fsMDIForm.

Meu problema é dois.
1. Ao dar chamar o formulário fsMDIChild.
Application.CreateForm(TfrmTeste, frmTeste);

O componente ´TMainMenu´ sobrepõe os menus do programa. Estou tentando fazer com que os menus do form filho se fundam a direita dos menus do form pai.

Alguem pode me dar uma luz!?

2. Este é o que está mais me incomodando... sei que tenho que retirá-lo da memória de alguma forma, mas já procurei e num to achando.
Close;

Simplismente fechar estaria facil demais neh!? e tinha que cair na contradição. Fechando o form filho com o codigo acima, o form pai não recupera os componentes dele próprio. Fica com os componentes do form filho.

Socorro :!:
O que devo fazer!?


Responder

Posts

10/08/2008

Discorpio

Boa noite .lg.

Respondendo a primeira pergunta.

Vá no MDIForm e click no TMainMenu e selecione o primeiro Item de Menu e vá no Object Inspector e na sua propriedade GroupIndex defina com o valor 1. Neste caso, somente o primeiro Item se juntará ao Menu dos MDIChildren, obviamente que se voce quiser que todos eles se juntem ao Menu dos MDIChildren (Forms Filhos), então defina a propriedade GroupIndex com o valor 1 de todos eles.

Respondendo a segunda pergunta.

Vá em cada Formulário Filho (MDIChildren) e no Object Inspector de cada um deles, vá na Aba Events e selecione clicando duas vezes na combo do Evento OnClose do mesmo, e defina assim o código:


procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 FreeAndNil(Form4);
end;




Responder

11/08/2008

.lg.

´Uma mão lava a outra.´
É interessante como coisas tão simples solucionam problemas tão grandes.

Estou no servio so a oite vou poder testar o codigo.
Obrigado pela grande ajuda.

Abraços,
.lg.


Responder

11/08/2008

.lg.

Respondendo a segunda pergunta. Vá em cada Formulário Filho (MDIChildren) e no Object Inspector de cada um deles, vá na Aba Events e selecione clicando duas vezes na combo do Evento OnClose do mesmo, e defina assim o código:

procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 FreeAndNil(Form4);
end;


Infelizmente a segunda resposta não deu certo. Os menus do ´fsMDIChild´ continuam no fsMDIForm.

Mas a primeira resposta funcionou.

mais alguem pode me ajudar!?

Att.
.lg.


Responder

14/08/2008

.lg.

ninguem... hmm que triste. :cry:


Responder

16/08/2008

Digaopachesen

Cara no evento onClose faça o seguinte:
action :=CaFree;
NomedoForm:=nil;
Estas duas linhas devem resolver o seu problema


Responder

16/08/2008

Godzilla_xf

Cara no evento onClose faça o seguinte: action :=CaFree; NomedoForm:=nil; Estas duas linhas devem resolver o seu problema


Olá, eu uso como o amigo acima descreveu, pode fazer que funciona normalmente.


Responder

18/08/2008

.lg.

:o
Minha salvação.

Gracias.

Att.
.lg.


Responder