Forum Delphi.cz

Delphi => Obecné => Téma založeno: Stanislav Hruška 20-09-2019, 19:57:18

Název: SubForm - nevykoná sa kód v OnClose a OnCloseQuery
Přispěvatel: Stanislav Hruška 20-09-2019, 19:57:18
Podformuláre sú vytvorené podľa návodu na Delphi.cz. Nerozumiem prečo tomu tak je.
Mám problém v tom, že potrebujem uvoľniť objekty z ComboBox-ov. Ale v časti OnDestroy mám ComboBox.Items.Count = 0
Teraz neviem čo s tým. Viem si vytvoriť samostatné zoznamy objektov. To považujem za somarinu. Doteraz mi to fungovalo bez problémov.
Název: Re:SubForm - nevykoná sa kód v OnClose a OnCloseQuery
Přispěvatel: František 20-09-2019, 20:06:38
vsak urci comboboxom vlastnika formular a on ich uvolni automaticky pri svojom uvolneni
Název: Re:SubForm - nevykoná sa kód v OnClose a OnCloseQuery
Přispěvatel: Stanislav Hruška 20-09-2019, 20:12:13
To nejde. O objekty sa musí postarať programátor. Toľko návod a moja skúsenosť.
Název: Re:SubForm - nevykoná sa kód v OnClose a OnCloseQuery
Přispěvatel: František 21-09-2019, 08:48:13
opytaj sa sisarpistov
Název: Re:SubForm - nevykoná sa kód v OnClose a OnCloseQuery
Přispěvatel: Stanislav Hruška 21-09-2019, 10:36:47
Už tuším kde asi je chyba ;)  Žiaľ, ešte mi nenapadlo ako to vyriešiť.
Název: Re:SubForm - nevykoná sa kód v OnClose a OnCloseQuery
Přispěvatel: Stanislav Hruška 21-09-2019, 12:24:09
Bol som vonku a postupne mi to došlo. Ale jednej veci nerozumiem. Bol by som rád, keby mi to niekto vysvetlil.
.

Vytvorím formulár a v ňom si vytvorím podformuláre, ktorým priradím parent. Je to panel na formulári. Inštancie podformulárov dávam do premenných.
.
Zatvorím formulár a podromuláre nie sú zničené. Moja úvaha bola nasledovná:
Posledný bod zjavne neplatí. A tu by som si poprosil vysvetlenie prečo?
Teraz už viem, že musím sám zničiť premenné v ktorých sú inštancie podformulárov.
Ďakujem.
.
To František: čo to je ten sisarpista?
Název: Re:SubForm - nevykoná sa kód v OnClose a OnCloseQuery
Přispěvatel: František 21-09-2019, 13:24:11
parent je vlastnik na formulari (viz.komponentov)
owner v hierarchii objetov

vid. https://delphi.cz/post/Nahrazeni-frames-za-vlozene-formulare.aspx (https://delphi.cz/post/Nahrazeni-frames-za-vlozene-formulare.aspx)
Název: Re:SubForm - nevykoná sa kód v OnClose a OnCloseQuery
Přispěvatel: František 21-09-2019, 13:25:44
To František: čo to je ten sisarpista?

síšarpista - C# programátor - tam sa uvoľňujú automaticky
Název: Re:SubForm - nevykoná sa kód v OnClose a OnCloseQuery
Přispěvatel: František 21-09-2019, 13:59:05
citace z odkazu (RČ):

"... vytvoříme instanci formuláře (vlastníkem, a tedy ten kdo ho uvolní je formulář via Self), přes Parent ho přiřadíme do panelu.

Tohle je častý omyl u začátečníků - nepleťte si vlastníka (toho kdo bude objekt uvolňovat v okamžiku kdy vlastník zanikne) a ten prvek, který bude vizuálním otcem. Mohl bych napsat jako vlastníka Panel1, a bylo by to korektní - ale takto se můj formulář zruší, až se zruší ten druhý formulář. Mezitím mohu cvičit s Panel1 a nebude to mít vliv na život injektovaného formuláře. Možná to trošku komplikuji, ale chtěl jsem ukázat, že vlastník a parent nemusí být ten sám."
Název: Re:SubForm - nevykoná sa kód v OnClose a OnCloseQuery
Přispěvatel: Stanislav Hruška 21-09-2019, 14:12:17
Veľké ďakujem. Keby si použil diakritiku, tak by som vedel o čom píšeš :)
Název: Re:SubForm - nevykoná sa kód v OnClose a OnCloseQuery
Přispěvatel: František 24-09-2019, 09:36:06
a aké riešenie si nakoniec použil/vybral?
Název: Re:SubForm - nevykoná sa kód v OnClose a OnCloseQuery
Přispěvatel: Stanislav Hruška 24-09-2019, 11:54:50
Najprv k problému: subform som robil podľa odkazu. Tam len písal, že Owner a Parent nie sú to isté. To som už vedel. Odpoveď na svoju otázku som tam nenašiel.
.
Riešenie: v OnCloseForm ničím všetky podformuláre. Nemám žiadne AV, Memory leak ani nič podobné.