Results 1 to 12 of 12

Thread: Destroyen van components

  1. #1

    Talking Destroyen van components

    [FONT=arial]
    Ik wil graag een reeks van componenten vernietigen, maar wanneer een component niet bestaat moet de melding hiervan worden opgevangen. Hoe doe ik dit???
    WDS

  2. #2
    Senior Member walterheck's Avatar
    Join Date
    Oct 2001
    Location
    Belo Horizonte, Brasil
    Posts
    4,212
    Je kun er een try except omheen zetten, maar je kunt als je ze aan een variabelel toewijst met assigned(MijnVariabele) kijken of er wel iets in die var zit. Verder kun je als je die compo's op een form of datamodule heb staan, met form.Controls of form.Components alle controls/components op een form aflopen...
    Nee, de Romeinen spraken geen ISO-8859-1 LATIN

  3. #3
    Het 'mooie' van componenten (TComponent) is toch dat de owner deze opruimt. Wanneer je deze componenten allemaal dezelfde owner geeft, hoef je alleen die owner op te ruimen om de reeks van componenten te verwijderen.

    Mvg,
    MH.
    Mijn comingout:
    Mam, Pap, ik programmeer Delphi.

  4. #4
    Uhm dit werkt niet, omdat ik gebruik maak van in runtime aangemaakte componenten.. Weet je nog een andere oplossing.
    Ik krijg nu de melding Undeclared identifier tijdens het compileren.
    WDS

  5. #5
    Senior Member McTinus's Avatar
    Join Date
    May 2001
    Location
    Hoek van Holland
    Posts
    389
    Uhm dit werkt niet, omdat ik gebruik maak van in runtime aangemaakte componenten
    dan doe je toch iets fout. Alleen klassen (of componenten) die afgeleid zijn van TComponent hebben in de constructor een optie om een owner mee te geven. TStringlist heeft dat bijvoorbeeld niet. Maar iets (een variabele of lijst) houd de gecreerde objecten toch voor je vast? Dan kan je ze ook free'en. Als je zeker weet dat een object is gecreeerd (bijvoorbeeld in een constructor) dan kan je zonder problemen de free aanroepen, anders kan je Assigned() gebruiken.

    Geef eens een stukje code, of verduidelijk je probleem.

  6. #6
    Hoe maak je die componenten aan? Sla je het resultaat van die actie niet ergens op?
    Marcel

  7. #7
    TCustomVader JosAikema's Avatar
    Join Date
    May 2002
    Location
    Harderwijk
    Posts
    1,491
    Originally posted by Wybe
    Ik krijg nu de melding Undeclared identifier tijdens het compileren.

    Bedoel je dat je in de source componenten verwijderd (met naam en toenaam) die je runtime aanmaakt

    Ik ben benieuwd naar de source. Misschien biedt dat een nieuw licht

  8. #8
    Ik heb een functie aangemaakt waarin ik op de volgende manier een component aan maak.
    var Lbl_test
    Lbl_test:=TLabel.Create(Frm_orderBekijken.GrpBx_Pr oduct);
    Lbl_test.Parent:=Frm_OrderBekijken.GrpBx_Product;
    Lbl_test.Top:=16;
    Lbl_test.Left:=8;
    Lbl_test.Caption:='Behuizing:';
    Lbl_test.Visible:=true;
    Lbl_test.Enabled:=true;

    Nu is het probleem dat wanneer ik op dezelfde posities een ander label wil plaatsen (ter vervanging van) de is het oude label ook nog deels zichtbaar, het overlapt elkaar .

    Nu heb ik een functie destroyComponent() gemaakt, welke alle componenten af moet gaan en de bestaande componenten destroyed.

    Het controleren of het component bestaat krijg ik niet voor elkaar.
    WDS

  9. #9
    Senior Member walterheck's Avatar
    Join Date
    Oct 2001
    Location
    Belo Horizonte, Brasil
    Posts
    4,212
    je moet de owner (das de variabele tussen de haakjes bij de aanroep naar create) niet op de groupbox zetten, maar op het form. Als je dan het form sluit worden je compo's automagisch gedestroyed. Je hoeft zelf dan niets meer te doen.

    Voor dat destroyen: je kunt ook het label visible op false zetten, dan wordt het gedestroyed als het form gesloten wordt. Maar simpeler nog: waarom vervang je niet gewoon de tekst van het label? dat scheelt heel wat werk...
    Nee, de Romeinen spraken geen ISO-8859-1 LATIN

  10. #10
    Ja maar ik zit ook er mee dat ik niet altijd evenveel componenten nodig heb
    WDS

  11. #11
    Senior Member walterheck's Avatar
    Join Date
    Oct 2001
    Location
    Belo Horizonte, Brasil
    Posts
    4,212
    Wat wil je dan precies? want ik heb toch het vermoeden dat je de verkeerde remedie gebruikt tegen je probleem
    Nee, de Romeinen spraken geen ISO-8859-1 LATIN

  12. #12
    TCustomVader JosAikema's Avatar
    Join Date
    May 2002
    Location
    Harderwijk
    Posts
    1,491
    Originally posted by Wybe
    Ja maar ik zit ook er mee dat ik niet altijd evenveel componenten nodig heb
    Dat is het mooie van een form als owner. Wanneer je het form destroyed gaan alle componenten mee in de Destroy, Hoeveel je er ook hebt. Het maakt dus niet uit hoeveel componenten je hebt.

    Jos

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Delphi Calculator
    By Sieb in forum Algemeen
    Replies: 23
    Last Post: 12-Oct-04, 23:21

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •