[ Ilija Studen @ 31.07.2002. 21:48 ] @
Problem je sledeci:
Imam tri obrasca (forme): glavni, jedan sekundarni i dijalog.

Sekundarni kreiram i pozivam sa ShowModal. Sekundarni poziva dijalog (isto sa ShowModal);
Dijalog moze da se referise na sve objekte glavnog formulara, ali kad probam da se referisem na neki objekat sekundarnog dobijem poruku Violation Error...

Znam da resim problem tako sto cu sekundarni obrazac staviti da se kreira pri pokretanju programa.

Recimo da to ne zelim. U cemu je problem (dajte malo teorije) i kako da resim problem?
[ Riste Pejov @ 01.08.2002. 09:18 ] @
Valjda u Runtime taj secundarni kreiras nesto slicno ovome:
Code:

var SecWin:TSecondaryForm;
begin
SecWin:=TSecondaryForm.Create(self);
SecWin.ShowModal;
end;


e sad problem je u tome sto treci dialog, nije svestan za postojanje drugog, kad bi drugi dialog bio kreiran pri pokretanju,
onda postoji referenca prema tog objekta u samoj Aplikaciji, proveri sors aplikacije i videces varijablu koja referencira drugu formu u startu. Za da treci dijalog bude svestan postojanjem drugog, varijabla koja je pointer prema objekt drugog prozora mora bit vidljiva u njegovom scope-u. Sto znaci imas vise nacina da to resis.

Prvi:
iz gornjeg koda, varijabla SecWin, postavis da bude globalna, to jest postavis je negde kod deklaracija samog prvog Prozora:
Code:

.....
var
MainForm:TMainForm;
SecWin:TSecondaryForm;
implementation
......


ili mozes je deklarirati u private deo za deklaracije varijabla MainForme, onda je mozes referncirati
kao
MainForm.SecWin.Caption:='Drugi Dijalog';

Najkompliciranija ideja koja mi je pala na pamet je da
dodas varijablu
SecWin:TSecondaryForm;

u public deo treceg dijaloga,
i onda pre
TreciDijalog.ShowModal;

samo postavis referencu prema drugog prozora:

TreciDijalog.SecWin:=SecWin;


mislim da je dovoljno