Jump to content

[C++] Ajuda: Click = Novo Form (Resolvido)


Br41n

Recommended Posts

Ok isso é simples faz o seguinte.

1) Cria um novo projecto, salva com o nome por defeito, Unit1.cpp, Form1

2) Adiciona um novo form, por defeito vai-se chamar Form2 e Unit2.cpp, salva com o nome por defeito.

3) No Form1 adicona, junto ao #include<unit1.cpp> o #include<unit2.cpp>, deve ficar com algo assim:

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h" // esta é que é alinha que tens q adicionar, OK  ao Form1 (Unit1.cpp)
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

Pois bem tas no bom caminho.

4)Adiciona agora ao Form1 um butão (por defeito ele deve-se chamar Button1). Clicka duas vezes nele :-) E adiciona o seguinte codigo:

    Form2 = new TForm2(Application); // aqui crias um novo objecto do tipo Form, que é o teu form2 e da-lhe como parent(pai) o Form1
    Form2->ShowModal(); // aqui mande exibir a janela Form2
     delete Form2;  // Qaundo a janela for fechada, liberta-se a memoria do objecto

Ok, como podes ver até que é simples. Qualquer coisa avisa.

Link to comment
Share on other sites

Existem 3 tipos de contrutores, associados ao TForm (TForm::TForm), geralmente tu nunca chamas o TForm directamente, usualmente chamas sempre um descendente, no caso anterior como deves ter reparado foram o Form1 e Form2 que são ambos descendentes do TForm.

Respondendo a tua questão são estes os contrutores disponiveis para os descententes d TForm:

__fastcall virtual TForm(Classes::TComponent* AOwner) : Forms::TCustomForm(AOwner) { }
__fastcall TForm(Classes::TComponent* AOwner, int Dummy) : Forms::TCustomForm(AOwner, Dummy) { }
__fastcall TForm(HWND ParentWindow) : Forms::TCustomForm(ParentWindow) { }

Para o 1 exemplo:

Forms::TCustomForm(AOwner) { }

TCustomForm é o teu Form2 de há pouco, aqui tu passa o AOwner ou seja a janela pai,que é o componente que é responsavel por libertar o Form dois, o resultado é basicamente se fechares o Form1 o Form2 vai atras.

Forms::TCustomForm(AOwner, Dummy) { }

Este nunca usei mas continuas a passar o Owner (pai, Form1) como parametro e passas como segundo parametro (um numero inteiro), ele serve para passares alguns componentes/recursos de um dado ficheiro ".DFM file" para o novo form, basicamente o segundo parametro, é apenas para distinguir o primeiro contrutor  Forms::TCustomForm(AOwner) do segundo Forms::TCustomForm(AOwner, Dummy) , e usa-se da seguin-te maneira:

WriteComponentResFile("Temp.dfm", Form1);

…
Form2 = new TForm(Application,1);

ReadComponentResFile("Temp.dfm", Form2);

O Ultimo só serve para passar como pai componetes que não sejam suportados directamente pela VCL do C++ (Borland), ou seja componetes que não descendam de TForm, como objectos ActiveX e fins, nunca usei.

Como podes ver aqui "sempre" ou quase sempre se usa o 1 contrutor de todos, os restantes são para casos muito particulares, a explicaçao foi um pouco em cima do joelho mas se necessitares d um exmplo de algum a funcionar avisa q devo ter um para aqui.

Fica bem.

Link to comment
Share on other sites

  • 5 months later...
  • 2 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.