[BCB]OnClose actie

Pagina: 1
Acties:

  • 0123456
  • Registratie: Maart 2005
  • Laatst online: 28-07-2010
Hallo,

Ik heb dus een programma geschreven dat 1 formulier, meerdere keren onder iedere keer een andere naam opent.

Muts1 = new TFormMUTSInfo(this);
Muts2 = new TFormMUTSInfo(this);

TFormMUTSInfo is het formulier en MUTS(+nr) de naam van ieder formulier.

Nu wil ik de naam MUTS(+nr) opruimen nadat ik dat formulier gesloten heb, hoe doe ik dit??
In code graag, want ik kom niet echt uit het OnClose commando... 8)7

  • Aetje
  • Registratie: September 2001
  • Laatst online: 18-12-2025

Aetje

Troubleshooting met HAMERRR

Muts(+nr) zijn pointers naar TFormMUTSInfo objecten. Je kan de objecten opruimen dmv 'n Free actie, maar de pointers zelf zijn gewoon lokale variabelen die je ergens gedefineerd moet hebben. Als je je over geheugenlekken zorgen aan 't maken bent: Pointers zijn geloof ik 2 byte integer waarden.
Je moet dus ergens bijhouden wat je aan Muts(+nr) objecten hebt gemaakt (google ns op linked list ofzo) en die in de OnClose afgaan en free-en. Als laatste de linked list opruimen en klaar is Aet. :P

Ennuh, code zoek je zelf maar ff op, we doen hier nie aan je huiswerk maken :P

Forget your fears...
...and want to know more...


  • klinz
  • Registratie: Maart 2002
  • Laatst online: 07-03 16:48

klinz

weet van NIETS

Kijk eens naar de Screen variabele en dan met name de property Forms.

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

0123456 schreef op donderdag 13 oktober 2005 @ 19:13:
Nu wil ik de naam MUTS(+nr) opruimen nadat ik dat formulier gesloten heb, hoe doe ik dit??
In code graag, want ik kom niet echt uit het OnClose commando... 8)7
Eeeh.. en wat heb je zelf al geprobeerd? Wat lukte daar niet mee? Iets meer eigen inzet tonen mag wel ;) Zie ook P&W FAQ - De "quickstart"

Als je een referentie naar je form hebt lijkt met me dat je gewoon de .free kan aanroepen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • 0123456
  • Registratie: Maart 2005
  • Laatst online: 28-07-2010
Ik heb zelf wel vanalles geprobeerd en gezocht.

Maar mijn probleem is niet het free commando, dat lukt me wel..
Het probleem is dat ik dat commando op het onclose van het formulier wil doen van Muts(+nr) en dat lukt me niet...
Ik kan dus nergens vinden waar het onclose commando buiten een formulier zelf kan aanroepen..

Iemand hier een voorbeeld van of iets van???

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

Je wilt dat het form zichzelf sluit en vervolgens zichzelf vrij geeft? Kijk dan eens naar .release en .close in de BCB help.

OnClose is een event welke wordt aangeroepen zodra het form gaat sluiten. Een form kan prima zijn eigen Close method aanroepen. Let erop dat na een close het geheugen niet wordt vrijgegeven. Een release zorgt ervoor dat zodra het kan, het geheugen van het form wordt vrijgegeven.

Ennuh.. "vanalles"... wat dan precies? ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Bij mijn weten wordt een form vanzelf gedestroyd als je het afsluit. Maar dat weet ik niet helemaal zeker. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • 0123456
  • Registratie: Maart 2005
  • Laatst online: 28-07-2010
Nee, het form destroyed zichzelf dus niet..

Ik wil dus dat bij het sluiten de naam Muts(+nr) weer vrijgegeven wordt en het formulier blijft bestaan voor andere Muts(+nr)'s...

  • klinz
  • Registratie: Maart 2002
  • Laatst online: 07-03 16:48

klinz

weet van NIETS

0123456 schreef op donderdag 13 oktober 2005 @ 23:27:
Nee, het form destroyed zichzelf dus niet..
-NMe- bedoelt hier iets anders. Als je de method Close() of Release() van een form aanroept, wordt het geheugen automatisch vrijgegeven.
Ik wil dus dat bij het sluiten de naam Muts(+nr) weer vrijgegeven wordt en het formulier blijft bestaan voor andere Muts(+nr)'s...
:?

  • whoami
  • Registratie: December 2000
  • Laatst online: 13:16
Gaat het over een MDI applicatie ?

Ik dacht dat je in de OnClose event in een VCL form ergens een parameter meekrijgt, Action ofzo.
Die moet je op Free zetten als je het form wilt afsluiten:

code:
1
Action = caFree;

of
code:
1
Action = acFree

de juiste syntax moet je eens opzoeken.

https://fgheysels.github.io/


  • 0123456
  • Registratie: Maart 2005
  • Laatst online: 28-07-2010
Ik heb het al...

Ik moest eerst de Muts(+nr) weer NULL, maken en dan kon ik hem pas free maken....
bedankt...

  • Aetje
  • Registratie: September 2001
  • Laatst online: 18-12-2025

Aetje

Troubleshooting met HAMERRR

code:
1
2
Muts(+nr) = NULL;
Muts.free;

Zoiets? Da's dus n gigantisch voorbeeld van een memory leak. Een NULL pointer kan je niet free-en (is al free). Heb je een destructor voor de class TMuts gedefineerd?

[ Voor 17% gewijzigd door Aetje op 15-10-2005 01:57 ]

Forget your fears...
...and want to know more...

Pagina: 1