Per Laufzeit ein Label auf einer GroupBox erstellen - Wie?



  • indem du die Groupbox als Parent zuweist ...und zwar dem Label

    label[i]->Parent = GroupBox1;
    


  • Danke. Das hat wunderbar geklappt.
    Ich hätte noch eine kleine Frage. Vielleicht kannst mir dabei auch noch helfen. Der Groupbox habe ich als Font-Style Bold zugewiesen. Das möchte ich bei meinem Label nicht haben.
    Ich habe es jetzt schon so versucht:

    label[i]->Font->Style = "";
    

    oder

    label[i]->Font->Style = [];
    

    Leider klappt das alles nicht. Was muß ich da machen?

    Danke im voraus.



  • die Hilfe benutzen? da gibts sogar ein Beispiel



  • Sorry. Habe ich auch gerade gesehen. Da sieht man den Wald vor lauter Bäumen nicht. 🙂

    Jetzt habe ich allerdings noch einen kleine Frage. Ich gabe dem Label mit

    label[i]->Name = "Clagerplatz";
    

    einen Namen.

    Wie kann ich denn das Label jetzt in der Entwurfszeit "benutzen"?
    Wenn ich jetzt z. B. einen Button habe, mit dem ich per Click folgendes ausführen möchte:

    Clagerplatz->Caption = "Neuer Text";
    

    Wenn ich das in der Entwurfszeit schon einge kommt natürlich die Meldung, dass es die "Clagerplatz" nicht gibt.

    Gibt es da eine Möglichkeit?



  • entweder suchst du alle Componenten der Groupbox (ComponentCount) durch und änderst das wo der Name stimmt, oder du sprichts das Label über einen Index an, genau wie bei der Erstellung



  • Wie mache ich das denn über einen Index?

    Label4->Caption = checkbox[0]->
    

    So funktioniert das leider nicht.

    Danke im voraus.



  • jetzt hab ich mal ne Frage:

    Wann fängst du an meine Beiträge mal RICHTIG zu lesen?

    Linnea schrieb:

    ... oder du sprichts das Label über einen Index an, genau wie bei der Erstellung



  • Hallo

    du hast doch in label[i] bereits ein passends Array? Von welchem Typ ist das und welchen Gültigkeitsbereich ist es?
    Wenn es TLabel und Member der Form-Klasse ist, dann ist es doch einfach, zum Beispiel ein Label anzusprechen :

    int i = ....;
    label[i]->Caption = "Test";
    

    bis bald
    akari



  • @Linnea,
    ich habe deinen Beitrag richtig gelesen. Und ich habe auch gefragt, was du mit einem Index meinst. Ich gehe mal davon aus, dass es sich dabei um diese deklaration handelt, oder liege ich da falsch?

    TCheckBox *checkbox[10];
    

    Ich weiß jetzt nicht, was ich nicht richtig gelesen haben soll.

    @akari
    Momentan deklariere ich es folgender maßen:

    void __fastcall Tartikel_bearbeiten_abgang::FormActivate(TObject *Sender)
    {
    AnsiString sql_select;
    //TCheckBox *checkbox[10];
    int hohe = 150;
    
    Labgang_kunde->Caption = artikel_bearbeiten->CBkunde->Text;
    Labgang_artikelnr->Caption = artikel_bearbeiten->Eartikel_nr->Text;
    
    sql_select = "SELECT * from lagerplatze_artikel where kunde = '"+Labgang_kunde->Caption+"' AND artikelnr = '"+Labgang_artikelnr->Caption+"'";
    DataModule1->sql_select->SQL->Clear();
    DataModule1->sql_select->SQL->Add(sql_select);
    DataModule1->sql_select->Open();
    DataModule1->sql_select->First();
    
    for(int i = 0; i < DataModule1->sql_select->RecordCount; i++)
    {
            checkbox[i] = new TCheckBox(this);
            checkbox[i]->Parent = GroupBox5;
            checkbox[i]->Top = hohe;
            checkbox[i]->Left = 9;
            checkbox[i]->Font->Style = TFontStyles();
            checkbox[i]->Name = "Clagerplatz" + i;
            checkbox[i]->Show();
            checkbox[i]->Caption = DataModule1->sql_select->FieldByName("lagerplatz")->AsString;
    
            DataModule1->sql_select->Next();
            hohe = hohe + 17;
    }
    }
    

    Wo genau müsste ich denn das Array deklarieren?

    Danke im voraus.



  • Hallo

    im Header des Forms Tartikel_bearbeiten_abgang, zwichen den Einträgen private und public. Dann kannst du aus allen Methoden des Forms auf da gleiche Array pro Instanz zugreifen.

    Ich empfehle dir erstmal noch OPP-Grundlagen anzueignen, sonst kommst du nicht viel weiter.

    bis bald
    akari



  • Danke. Habe es jetzt hinbekommen. Hatte es über private versucht, was natürlich nicht geklappt hat. Steht da ja auch. 😉


Anmelden zum Antworten