Ako kažeš da kod koji si postavio radi, onda radi ;) Ipak, mislim da imaš 'višak delova'.
Dakle, imaš dve forme:
1. Form1 (glavna), odnosno Unit1.cpp/Unit1.h
2. Form2 (modalni dijalog koji ćeš pozivati iz glavne forme), odnosno Unit2.cpp/Unit2.h
S obzirom da iz Form1 (glavne) pozivaš Form2 (dijalog), u Form1 (Unit1.cpp) moraš da staviš:
#include "Unit2.h"
... da bi Form1 znala prototip klase TForm2, odnosno kako njome da rukuje.
S obzirom da iz Form2 (dijalog) želiš da menjaš Form1 (glavnu), u Form2 (Unit2.cpp) moraš da staviš:
#include "Unit1.h"
... da bi Form2 znala prototip klase TForm1, odnosno, uglavnom je to zbog dela:
extern PACKAGE TForm1 *Form1;
... ali da ne detaljišem.
Na osnovu gore rečenog, mislim da je kod tebe sledeće
višak:
1)
Citat:
u .h file Form2, nakon #include dela, ide:
class TForm1;
... jer ako si već dodao #include "Unit1.h", kompajler će znati da TForm1 klasa postoji, ne treba eksplicitno navoditi.
2)
Citat:
default konstruktor sam promenio ( TComponent sam zamenio sa TForm1 ) i iznad konstruktora sam inicijalizovao:
TForm2 *Form2;
TForm1 *pozivac;
__fastcall TSutGol::TSutGol(TForm1* Owner)
: TForm(Owner)
{
pozivac = Owner;
}
Opet nema potrebe, jer ako si već dodao #include "Unit1.h", kompajler će znati za:
extern PACKAGE TForm1 *Form1;
... odnosno 'znaće' za Form1 pointer preko koga
direktno pristupaš glavnoj formi. Drugim rečima, nisu ti potrebni pomoćni pointeri (TForm1 *pozivac;). To znači da umesto:
Code:
void __fastcall TForm2::Button1Click(TObject *Sender)
{
pozivac->EditA->Text = EditB->Text;
}
možeš da napišeš (kao što itf reče):
Code:
void __fastcall TForm2::Button1Click(TObject *Sender)
{
Form1->EditA->Text = EditB->Text;
}
... a da pri tome:
* ne stavljš eksplicitni class TForm1;
* ne menjaš konstruktor
* ne definišeš pomoćne pointere
Pozdrav.