Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C++ Builder - Two Forms primjer

[es] :: C/C++ programiranje :: C++ Builder - Two Forms primjer

[ Pregleda: 2398 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon C++ Builder - Two Forms primjer07.04.2006. u 18:06 - pre 204 meseci
Dok sam pregledavao primjere bcpp-a naišaio sam na primjer two forms i zainteresiorao me dio koda:

Code:
    Form2 = new TForm2(Application);
    Form2->ShowModal();
    delete Form2;


i nije mi jasno zašto su na ovaj način pozvali formu 2? Zašto ne samo Form2->ShowModal();
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4896
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+637 Profil

icon Re: C++ Builder - Two Forms primjer07.04.2006. u 18:36 - pre 204 meseci
Kada u BCB-u kreiras novu formu, ona moze biti u DVA stanja:

- vec kreirana (AutoCreate)
- nije krairana (Available)

Pogledaj Project / Options / Forms

... pa sam mozes tu drugu formu postaviti da bude ili: AutoCreate ili Available.

Kada je forma AutoCreate, odmah je mozes pozvati sa:

Form2->ShowModal();

... a kada je Available, moras je prvo kreirati, prikazati i na kraju unistiti:

Form2 = new TForm2(Application);
Form2->ShowModal();
delete Form2;

 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4896
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+637 Profil

icon Re: C++ Builder - Two Forms primjer08.04.2006. u 07:38 - pre 204 meseci
Ne znam da li si shvatio.

Po default-u, Borland C++ Builder, kada dodas novu forumu u projekat, OBJEKAT te formu
AUTOMATSKI KREIRA KREIRA, a sam kod za njeno kreiranje mozes videti u fajlu Project1.cpp:

Code:

Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm2), &Form2); // <--- KREIRANA JE AUTOMATSKI
Application->Run();


Kad je forma, tj. njena instanca kreirana, to znaci da NE MORAŠ da koristi 'new', da je napravis,
na uobičajen način kao što se to obično radi u C++:
Code:

Form2 = new TForm2(Application);
Form2->ShowModal();
delete Form2;


... već je dovoljno da kažeš samo:
Code:

Form2->ShowModal();


Ovaj metod, kada se forme automatski kreiraju, meni se ne svidja jer kada imas previse formi, one
gutaju resurse, jer se bez potrebe drzi previse unapred kreiranih objekara u memoriji.

Ja uvek koristim DINAMIČKO kreiranje formi. Da bi forma koju si napravio bila samo NACRT a ne
gotov OBJEKAT, to moyes postici na dva nacina:

1) rucno obrisati liniju:
Code:

Application->CreateForm(__classid(TForm2), &Form2); // <--- KREIRANA JE AUTOMATSKI


2) ili otići u: BCB / Project / Options / Forms /
...i prebaciti Form2 iz AutoCreate -> Available. Opet ce nestati ona linija iz Project1.cpp.


Na ovaj nacin, EXE sa puno formi ce se daleko brze podizati.
 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: C++ Builder - Two Forms primjer08.04.2006. u 08:25 - pre 204 meseci
Da, shvaćam. Zahvaljujem. No, pitanje je što učiniti sa glavnom formom, da li se i ona mora kreirati dinamički?

[Ovu poruku je menjao maximus_1 dana 08.04.2006. u 09:37 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4896
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+637 Profil

icon Re: C++ Builder - Two Forms primjer08.04.2006. u 11:13 - pre 204 meseci
Uobicajeno je da glavna forma BUDE NAPRAVLJENA AUTOMATSKI, mada teoretski ni
to nije neophodno. Predlazem da jedino glavna forma bude kreirana AUTOMATSKI.

Evo ti jedan slucaj kada ti ne treba ni glavna forma, nego samo da se izvrsi neki kod:

Zamisli da kao podrsku nekoj Instalacionoj proceduri hoces da napravis program
koji ce nesto da posalje nekom programu.

Tada samo "Remove from Project..." tu glavnu formu, i kod stavis u Project1.cpp,
na primer:

Code:

#include <vcl.h>
#pragma hdrstop

#define WM_EXTERN_CLOSE  (WM_USER + 1005)

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   HWND DiWnd = NULL;
   DiWnd = FindWindow( "TDiMainForm", 0 );

   if ( DiWnd )
   {
      PostMessage( DiWnd, WM_EXTERN_CLOSE, 0, 0 );
   }
   return 0;
}


Na primer, ovaj kod koristim da posaljem rečniku poruku WM_USER + 1005, koju
sam predvideo da se rečnik zatvori (ako je već otvoren), ako hoćemo noviju
verziju rečnika da instaliramo preko nove (bez prethodnog ručnog zatvaranja).

 
Odgovor na temu

gizmo981
Mostar

Član broj: 120771
Poruke: 49
77.221.6.*



Profil

icon Re: C++ Builder - Two Forms primjer09.10.2008. u 17:47 - pre 174 meseci
Kako da ako imam 7 dugmića na formi pritiskom na svaki otvorim novu formu?
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4896
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+637 Profil

icon Re: C++ Builder - Two Forms primjer09.10.2008. u 18:02 - pre 174 meseci
Opiši tačno šta želiš da postigneš. Sasvim je svejedno koliko ima dugmića i formi.

Da li su te forme 'auto-created' ili 'available'? Ili su možda želiš da ih od nule kreiraš dinamički? Treba li da budu modalne ili ne? MDI ili SDI ? Itd..
 
Odgovor na temu

gizmo981
Mostar

Član broj: 120771
Poruke: 49
77.221.6.*



Profil

icon Re: C++ Builder - Two Forms primjer12.10.2008. u 11:17 - pre 174 meseci
Primjer imam jednu formu i pritiskom na dugmić button da mi se otvori Form2
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4896
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+637 Profil

icon Re: C++ Builder - Two Forms primjer12.10.2008. u 12:27 - pre 174 meseci
1. Pokreni BCB IDE, Form1 ce biti kreiran po defaultu
2. Napravi drugu formu, zvace se po defaultu Form2: BCB > File > New > Form
3. Vrati se na Form1 (npr: BCB > Window > Form1)
4. Dodaj header druge forme u formu 1: BCB > File > Include Unit Hdr... > Unit2 > Ok
5. Na Form1 dodaj Button1
6. Dupli klik na Button1, i dodaj kod:
Form2->ShowModal();
 
Odgovor na temu

[es] :: C/C++ programiranje :: C++ Builder - Two Forms primjer

[ Pregleda: 2398 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.