Label in einer For Schleife



  • HI.

    ich will folgendes machen, ich will in 10 Label über eine Forschleife ein Imageindex übergeben. wie mach ich das?

    Bsp:

    L1->ImageIndex = 15;
    L2->ImageIndex = 15;
    L3->ImageIndex = 15;
    L4->ImageIndex = 15;
    L5->ImageIndex = 15;
    ...

    es ändert sich also nur die Zahl im Labelname. wie bekomme idh das hin?
    bei vab gehe ich über me(x).image wobei x main Zähler ist, aber in c++ gibt es kein me() ...
    ich hoffe ihr könnt mir helfen, cu r00k



  • bissle mehr info waere net schlecht.

    wo und wie werden denn deine "Ls" verwaltet? -werden da wahllos objekte inner schleife erstellt oder gibts da pointer dazu in einem array oder wie ist die anzahl dieser Ls festgelegt?!

    Esco



  • oke:

    ich habe eine header datei, und in der steht folgende Methode

    void InitializeComponent(void)
    

    in der Methode werden meine Label definiert:

    this->L1 = new System::Windows::Forms::Label();
    this->L2 = new System::Windows::Forms::Label();
    ...
    

    außerdem werden die Eigenschaften deklariert, so:

    // L8
    // 
    this->L8->BackColor = System::Drawing::Color::Gray;
    this->L8->BorderStyle = System::Windows::Forms::BorderStyle::Fixed3D;
    this->L8->Font = new System::Drawing::Font(S"Tahoma", 11.25F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, (System::Byte)0);
    this->L8->ImageList = this->figuren;
    this->L8->Location = System::Drawing::Point(130, 40);
    this->L8->Name = S"D8";
    this->L8->Size = System::Drawing::Size(30, 30);
    this->L8->TabIndex = 35;
    this->L8->TextAlign = System::Drawing::ContentAlignment::MiddleCenter;
    

    nun hab ich eine weitere Methode namens "start":

    private: System::Void start(System::Object * sender, System::EventArgs * e)
        {
    	L1->ImageIndex = 0; 
    	L2->ImageIndex = 0; 
    	L3->ImageIndex = 0; 
    	L4->ImageIndex = 0;
    	L5->ImageIndex = 0;
    	L6->ImageIndex = 0;
    	L7->ImageIndex = 0;
    	L8->ImageIndex = 0;
        }
    

    und in dieser Methode will ich mir Schreibarbeit sparen und Übersichtlichkeit reinbringen, und zwar so:

    for ( i=1; i<=8 ;i++ ) {
        L4->ImageIndex = 0; // statt L4 eben i in irgendeiner Form [bei VBA me(i)]
    }
    

    wie kann ich das machen?



  • ich sehe kein problem.
    du hast doch sowieso eine feste anzahl mit bestimmten vordefinierten indicees.
    dann kannste doch einfach allen 8 objekten ne 0 zuweisen?!

    Esco



  • ja schon, aber aufwendig wird es mann ich 64 und mehr davon hab, u know!?

    ich will mir mein code klein und übersichtlich halten. und in meiner start methode wäre es ideal. ich hab gesehen, das ich auch mit dem Tabindex arbeiten kann, aber so hier funzt das natürlich nicht:

    for ( i=1; i<=64; i++ ) {
       this->TabIndex(i)->ImageIndex = 0;
    }
    

    kann man da irgendwas machen? ich will keine 64 Zeilen schreiben, außerdem wäre das irgendwie (besser ... *g*)



  • du kannst ja die objekte in einem array/map verwalten (sie haetten dann aber den gleichen namen) dann koenntest du mit nem index durchlaufen. sonst faellt mir auch nix ein.

    Esco



  • hm nagut, ob ich dann den namen auslese oder mir den entsprechenden Index aus dem Array für die labels vormerke, ist gehops wie gesprungen. aber das ist ja mal ne idee, thx ich werd mich mal daran versuchen. grüße r00k


Log in to reply