dynamische Panels



  • Hallo zusammen ich muss einige hundert werte auf einem Formular ausgeben und habe mich damit es übersichtlicher ist dazu entschieden panels zu verwenden und die caption mit dem entsprechenden String zu gestalten!

    das ganze läuft dynamisch,
    d. h.: ich erzeuge die notwendige Anzahl auf einer dynamischen Form die Standdarmäßig eine GroupBox beinhaltet! und weiße dann die caption und die Position zu. Dazu der folgende Quellcode.

    TPanel *wert =new TPanel(Form2->GroupBox1);
    wert->Caption= "bla";
    wert->Left= 100;
    wert->height =200;

    Das ganze kommt dann in eine schleife wobei sich die werte für left und height dann auch, in abhängigkeit des schleifendurchlaufs ändern.

    trotzdem erscheint kein Panel!!wieso?????
    Außerdem noch eine weitere Frage:
    wenn ich die Panel direkt wieder lösche. werden sie dann trotzdem angezeigt? oder kann ich sie erst löschen wenn ich das programm beende bzw. die Form (ist eine MDI child Komponente) (auf der sie sind) wieder schließe?

    Vielen Dank im Voraus!!
    mfg hans



  • Hallo

    trotzdem erscheint kein Panel!!wieso?

    Du must noch die Eignschaft Parent der neuen Labels setzen, i.a. auf das Form selber.

    wenn ich die Panel direkt wieder lösche. werden sie dann trotzdem angezeigt?

    Nein, eine gelöschte Komponente verschwindet auch sofort von der Anzeige.

    bis bald
    akari



  • ÄHM... nur mal so ne kleine nebenfrage willst du nicht auch noch top und width bestimmen?



  • vielen danke angezeigt werden sie jetzt!

    vielleicht kann mir ja jemand nochmal eine frage zum löschen beantworten!

    also die dynamischen panels werden mit der funktion einer klasse erzeugt!!
    aber muss ich jetzt jedes einzelne löschen (das sind 100 stück)?
    wenn ja wie und wann?? ich weiß gar nicht wie ich die adressieren soll!

    das sind ja leider keine elmente der klasse und deshalb löscht der dekonstrukter die ja nicht oder??

    gibt es vielleicht einen befehl der den dynamischen speicher einer form löscht wenn ich sie schliesse oder vielleicht wenn ich das ganze programm schliesse?

    ich check das leider nicht wirklich!! 😕

    vielen dank!!
    mfg hans



  • das mit widht und top ist mir leider auch schon aufgefallen! 😞 ! danke trotzdem!!

    mfg hans



  • Hallo

    gibt es vielleicht einen befehl der den dynamischen speicher einer form löscht wenn ich sie schliesse oder vielleicht wenn ich das ganze programm schliesse?

    Die gute Nachricht : Wenn du von Komponenten einer Form sprichst (also Owner ist ein gültiges Form), dann sorgt das Form selber für das Löschen aller untergeordneten Komponenten spätestens beim Löschen des Forms.

    aber muss ich jetzt jedes einzelne löschen (das sind 100 stück)?

    Siehe erste Antwort. Dies ist aber nur so, weil die VCL ihre Komponenten schon so anlegt. Normalerweise must du alles, was du mit new erzeugst, auch selber wieder mit delete löschen.

    das sind ja leider keine elmente der klasse und deshalb löscht der dekonstrukter die ja nicht oder??

    Wenn du natürlich auch einzelne Labels wieder dynamisch löschen willst, wär es sinnvoll, die Labels noch extra zu verwalten.
    Entweder speichert die Klasse wirklich einen Pointer auf das Panel, oder du schaust dir den FAQ-Thread Dynamische Arrays von Komponenten an.

    bis bald
    akari



  • hey danke, das ist echt ne gute nachricht!!

    [quote="akari"]
    Die gute Nachricht : Wenn du von Komponenten einer Form sprichst (also Owner ist ein gültiges Form), dann sorgt das Form selber für das Löschen aller untergeordneten Komponenten spätestens beim Löschen des Forms.

    Allerdings hab ich gerade ein sehr merkwürdiges Problem:

    ich stelle auch die Schrift Größe ein über wert->Font-> Size=8;

    das komische nur der wert acht wird anscheinend ignoriert und es wird 12 daraus.
    aber mit 9 oder 10 oder 16 geht es!!
    woran liegt das?? 8 ist doch ein gültiger wert oder nicht??

    Vielen Dank!!
    mfg hans



  • Hallo

    natürlich ist 8 ein gültiger Wert.
    Dein Problem kann ich nicht nahvollziehen.

    bis bald
    akari


Anmelden zum Antworten