Eine grundsätzliche Frage und eine spezielle



  • Tag,

    Ich bin ziemlich neu in diesem Gebiet. Also noch Anfänger was das angeht.
    Ich hab zwei Fragen.

    1. Instanzen der VCL-Klassen müssen mit new erzeugt werden. Aber ich finde keine Destruktoren. Wie gebe ich den Speicher wieder frei? Im Destruktor des Form z.B. gehts nicht da ich keinen finde.

    2. Mir ist aufgefallen dass ein Toolbar nicht modal ist. Wenn also ein anderes Fenster den Fokus hatte und ich dann auf dem Toolbar irgendetwas auswähle, verliert das andere Fenster den Focus nicht. Ist es möglich auch nichtmodal Comboboxen zu erstellen ? Ala WordPad für Schriftgröße und Schriftart.

    Ich hoffe ich konnte mich verständlich ausdrücken. 🙂
    Ich danke schonmal .....



  • prolog schrieb:

    Tag,

    1. Instanzen der VCL-Klassen müssen mit new erzeugt werden. Aber ich finde keine Destruktoren. Wie gebe ich den Speicher wieder frei? Im Destruktor des Form z.B. gehts nicht da ich keinen finde.

    delete operator

    1. Mir ist aufgefallen dass ein Toolbar nicht modal ist. Wenn also ein anderes Fenster den Fokus hatte und ich dann auf dem Toolbar irgendetwas auswähle, verliert das andere Fenster den Focus nicht. Ist es möglich auch nichtmodal Comboboxen zu erstellen ? Ala WordPad für Schriftgröße und Schriftart.

    Ich hoffe ich konnte mich verständlich ausdrücken. 🙂
    Ich danke schonmal .....

    mh kommt immer drauf an wie dus erstellst 😋
    bzw du machst einfach beim onchange nen focus auf die textbox



  • Tag,

    Das mit dem delete operator ist schon klar. Aber wo ?
    Nehmen wir an ich habe ein Form das einen Zeiger auf einen Dialog enthält.
    Bei der entsprechenden Routine erzeuge ich den Dialog mit new und zeige ihn an mit Show() ( er soll nicht modal sein). Show kehrt also gleich zurück. Wenn ich direkt danach delete benutze wird der Dialog kurz angzeigt und wieder entfernt. Ist ja auch klar. Also dachte ich mir, erzeuge ich die Instanz im Konstruktor des Kontainer-Form. Das geht ja aber wie geh ich sicher dass ich den Speicher wieder frei gebe. Das Form hat keinen Destruktor(jedenfalls seh ich ihn nicht). Oder muss ich dass evtl. in einer Art OnClose() machen ?



  • hallo,

    na im destruktor des forms. da es diesen als solchen aber nicht gibt,
    kannst du das in den events OnDestroy, OnClose, OnCloseQuery tun. aber vorsicht: elemente die du visuell erzeugt hast buttons, edits etc. gibt das formular selber frei. und dinge die du selber mit new erzeugt hast, werden ebenfalls vom formular freigegeben wenn du als owner das formular angegeben hast, also z. b.:

    TListBox* MyBox = new TListBox(this); //Owner ist da form
       //das form gibt seine elemente selbständig frei wenn es freigegeben wird.
    

    alles klar?

    mfg
    murph



  • Tag,

    Jup jetz ist es klar. Danke.

    Hab mich schon gewundert warum er mir abgeschmiert ist als ich in OnDestroy den Dialog gelöscht hab. Ich hatte das Hauptform als Owner angegeben.


Anmelden zum Antworten