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

Stavke menija ne deluju na MDI formu-BCB6

[es] :: C/C++ programiranje :: Stavke menija ne deluju na MDI formu-BCB6

[ Pregleda: 2554 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
212.200.220.*



+4 Profil

icon Stavke menija ne deluju na MDI formu-BCB631.08.2006. u 18:38 - pre 191 meseci
Akcije menija ne mogu da menjaju osobine kontrola na MDI formi? Napravio sam objekat MDI
forme i forma se prikazala. Iz menija glavne forme (koja je roditelj) kod treba da menja naslov jednog
taba na Page kontroli, međutim dolazi do krljanja programa (Access violation...). Zaglavlje MDI forme
je uključeno u jedinicu glavnog prozora.
Mozda neko zna o čemu je reč?
Ag + Na -> Xe
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4890
*.static.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+634 Profil

icon Re: Stavke menija ne deluju na MDI formu-BCB601.09.2006. u 07:09 - pre 191 meseci
Mozes li da das neki minimalan kod koji oslikava taj slucaj? (Moze i kao Attachment).

Access Vioalation najcesce nastaje kada pokusavas da pristupis nekom objektu
koji nije instanciran.
 
Odgovor na temu

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
212.200.220.*



+4 Profil

icon Re: Stavke menija ne deluju na MDI formu-BCB601.09.2006. u 15:53 - pre 191 meseci
Citat:
X Files: Mozes li da das neki minimalan kod koji oslikava taj slucaj? (Moze i kao Attachment).

Access Vioalation najcesce nastaje kada pokusavas da pristupis nekom objektu
koji nije instanciran.

Evo stavljam...znači MDI prozor se otvara ovako:
Code:

...
#include "Unit3.h" 
...
void __fastcall TForm2::SpeedButton1Click(TObject *Sender)
{

CreateMDIChild("Spisak");

}

void __fastcall TForm2::CreateMDIChild(String Name) //f-ja koja otvara prozor (Form3):
{
    TForm3 *Form3;
    Form3 = new TForm3(Application);
}

i forma se regularno otvara unutar MDI roditeljske forme.
Kada pokušam da delujem na kontrole koje su na toj formi ali preko menija
glavne(roditeljske) forme,npr:
Code:

void __fastcall TForm1::N2Click(TObject *Sender) //N2 je element menija na glavnom prozoru
{
Form3->TabSheet1->Show(); //ovo treba da prikaze tab na Page kontroli koji se yove TabSheet1
}

nastaje Access violation...ovo sam tek sad primetio jer ranije uopšte nisam ni imao potrebe
da delujem na kontrole MDI prozora sa menija glavne (roditeljske) forme,dobro da sam uopšte
uočio problem.
Inače pošto nisam ćorav vidim da program zapravo "ne zna" da je napravljen objekat Form3,iako
se program sastavi bez problema,pa je verovatno tu problem:kako pristupiti osobinama objekta koji
je instanciran iz poznate klase (TForm3)?
Ag + Na -> Xe
 
Odgovor na temu

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
*.adsl.sezampro.yu.



+4 Profil

icon Re: Stavke menija ne deluju na MDI formu-BCB602.09.2006. u 14:26 - pre 191 meseci
Naravno da se MDI forma moze pozvati i ovako,npr:
Code:

Application->CreateForm(__classid(TForm3), &Form3);

kasnije se normalno uništava sa Action=caFree
i nisam uočio neke probleme,ali možda neko sa iskustvom
u ovome može da mi kaže da li bezbedno pozivati formu na ovaj način?
Ag + Na -> Xe
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4890
*.static.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+634 Profil

icon Re: Stavke menija ne deluju na MDI formu-BCB602.09.2006. u 20:28 - pre 191 meseci
Onako 'odokativno':

Citat:

...
#include "Unit3.h"
...
void __fastcall TForm2::SpeedButton1Click(TObject *Sender)
{
CreateMDIChild("Spisak");
}

void __fastcall TForm2::CreateMDIChild(String Name) //f-ja koja otvara prozor (Form3):
{
TForm3 *Form3; // <--- Zasto ce ti ovo ovde? To bi trebalo da bude u CPP delu Form3 kao global...
...a da ne pominjemo da nakon izlaska iz funkcije taj Form3 pointer nije vise validan

Form3 = new TForm3(Application);
}


Citat:

void __fastcall TForm1::N2Click(TObject *Sender) //N2 je element menija na glavnom prozoru
{
Form3->TabSheet1->Show(); //ovo treba da prikaze tab na Page kontroli koji se yove TabSheet1
ovaj Show() se ne odnosi na Form3 koji ti je u CreateMDIChild(), nego onaj default
}


Sve u svemu, mislim da u kodu imas DVA Form3.

Preporucujem da pogledas jednostavan primer /examples/ rada sa MDI:
C:\Program Files\Borland\CBuilder6\Examples\Doc\TextEdit\


 
Odgovor na temu

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
*.adsl.sezampro.yu.



+4 Profil

icon Re: Stavke menija ne deluju na MDI formu-BCB604.09.2006. u 12:03 - pre 191 meseci
X Files,reci mi sta misliš o ovome, da li je bezbedno za upotrebu:
Code:

Application->CreateForm(__classid(TForm3), &Form3);


Ag + Na -> Xe
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4890
*.static.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+634 Profil

icon Re: Stavke menija ne deluju na MDI formu-BCB604.09.2006. u 14:51 - pre 191 meseci
Najbolje je da takav stil ostane samo u WinMain(), jer ima uticaja na IDE
koji ga sam i generise tamo, ali kada tebi licno treba kreiranje najbolje je
da radis kako si i radio:

Form3 = new TForm3( this );

Jedino ti preostaje da odlucis da li ce tvoja forma (njen objekat) biti kreirana
odmah, ili ces je sam kreirati.

A to ti je ono u Project / Options / Forms / [Auto-Create i Available]
 
Odgovor na temu

[es] :: C/C++ programiranje :: Stavke menija ne deluju na MDI formu-BCB6

[ Pregleda: 2554 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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