Fórum melhor maneira para criar form. #289933
28/07/2005
0
Como vocês fazem para criar form, em tempo de execução ?
Utilizam algum tipo de função?
Pesquisei no fórum sobre registrar uma classe, mas não entendi direito, é válido fazer dessa maneira ?
Estou procurando algo sobre os tipos de form, com explicações detalhadas, vantagens e desvantagens (MDIForm,Shild etc..)
Obrigado
Lynx
Curtir tópico
+ 0Post mais votado
29/07/2005
O Não correto, que eu escrevi é que não é para todos os casos.
Muito legal a explicação dos form, muito Obrigado.
Mas por exemplo se eu crio um form, e quando clico fora dele ele fecha...
Qual tipo de form devo criar ?
E Para complementar o form, que criar vou criar outro form, com ele e também não pode fechar quando clicar fora, só vai poder mexer no form que criou.
No caso 3, forms
FORM1 > FORM2 > FORM3
Quando criar o 2 o usuário só pode fechar ele, sem clicar forá...
E Também não pode clicar no 1, a mesma coisa com o FORM3.
Obrigado
Obrigado
Lynx
Gostei + 1
Mais Posts
29/07/2005
Raczy
Fm_Principal.Show;
Sempre criei os meus formulários desta forma.
Gostei + 0
29/07/2005
Lynx
Gostei + 0
29/07/2005
Rjun
Gostei + 0
29/07/2005
Rafael Mattos
a) Application.CreateForm(TfmClientes, fmClientes);
Cria o Form; o proprietário é a aplicação.
b) fmClientes := TForm.Create(self);
Cria o Form; o proprietário é ele mesmo.
c) fmClientes := TForm.Create(Application);
Cria o Form; o proprietário é a aplicação.
d) fmClientes := TForm.Create(nil);
Cria o Form; teoricamente sem proprietário; na prática é a aplicação.
e) fmClientes := TfmClientes.Create(self);
Cria o Form; o proprietário é ele mesmo.
f) fmClientes := TfmClientes.Create(Application);
Cria o Form; o proprietário é a aplicação.
g) fmClientes := TfmClientes.Create(nil);
Cria o Form; teoricamente sem proprietário; na prática é a aplicação.
Poderiam me informar a diferenca entre elas?
Quando você cria um Form dinamicamente:
1. se criar através de CreateForm, que é um método de TApplication, você passa como parâmetro a instância da classe e o nome do seu objeto (TfmClientes, fmClientes);
2. se criar através de Create - método de TForm, entre outros - você passa como parâmetro o proprietário do componente criado (no caso o Form).
2.1 se o proprietário for a aplicação, o Form só será destruído quando você finalizar o aplicativo ou se você declarar Free ou Destroy no seu programa; (casos a, c, d, f, g);
2.2 se o proprietário for ele mesmo (self), o form terá que ser destruído por você;
2.3 se você criar, por exemplo, Form2 e passar como proprietário Form1; no momento em que Form1 for destruído, Form2 também o será.
Quanto à melhor maneira, depende de como você quer controlar a aplicação, mas leve em conta que enquanto um objeto não é destruído, ele está na memória.
Gostei + 1
29/07/2005
Rafael Mattos
try
Form1 := TForm1.Create(Self);
Form1.ShowModal;
finally
freeandnil(Form1)
end;
Gostei + 0
29/07/2005
Paullsoftware
function FormExiste(xForm: Tform): Boolean; var I:Integer; begin FormExiste := false; for I := 0 to Screen.FormCount -1 do if Screen.Forms[i] = aberto then begin FormExiste := true; Break; end end;
como usar:::
If FormExiste(Form_Clientes) then begin Form_Clientes.BringToFront; Form_Clientes.Focused; end else begin Form_Clientes := TForm_Clientes.Create(Self); end;
[b:e90386ef28][i:e90386ef28]Op´s detalhe, estou usando MidForm e MidChild...[/i:e90386ef28][/b:e90386ef28]
Sempre uso esse metodo, e nunca deu problema... :wink:
Gostei + 0
29/07/2005
Massuda
Com relação ao proprietário (Owner)....
Owner é o objeto (da classe TComponent) que irá se encarregar de destruir o objeto que está sendo criado. No exemplo (e) seria o TComponent apontado por Self (normalmente outro form) e no exemplo (f) seria o Application.
Com relação ao exemplo (g), eu entendo que a intenção de usar nil é informar (ao compilador) que você está assumindo a responsabilidade de destruir o objeto que está sendo criado (ou, em outras palavras, o objeto que está sendo criado não será destruído automaticamente junto com outro).
Por questões de funcionamento do Windows, na prática, todos os objetos criados por seu programa que não foram destruídos durante a execução são destruídos no término do programa. O que pode ocorrer é você observar que o destrutor/OnDestroy dos forms são executados numa sequencia inesperada.
Gostei + 0
29/07/2005
Massuda
Gostei + 0
29/07/2005
Lynx
Quando eu clico no 1 form, o 2 fecha sozinho...
Gostei + 0
29/07/2005
Massuda
Gostei + 0
29/07/2005
Lynx
Valeu
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)