Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Ms Visual C++ 2008 - Jak odwołać się do dynamicznie utworzonej kontrolki

hessuss 21 Sie 2011 17:46 1162 2
  • Poziom 13  
    Witajcie, przesiadłem się z Delphi na Ms Visual C++ 2008 i męczę się z prostymi sprawami.

    Tworzę sobie dynamicznie np 10 paneli:
    Code:
                 int i=0;
    
                 for (i=0; i<10; i++)
                 {
                      Panel^ p=gcnew Panel();
                      p->Width = 25;
                      p->Height = 25;
                      p->Top = 10;
                      p->Left = i*50;
                      p->Name = "p"+i;
                      p->BackColor = Color::Aqua;
                      this->Controls->Add(p);
                 }

    Po czym chcę w jakimś np zmienić kolor tła i tu mam problem pisząc w onclick buttona :
    Code:
    panel1->p1->BackColor = Color::Red;

    Kompilator czepia się że p1 nie jest członkiem formy :
    Code:
    : error C2039: 'p1' : is not a member of 'test::Form1'

    w Delphi działało odwoływanie się po nazwach, jak to tutaj ugryźć? jakoś wyszukać kontrolkę na formie po nazwie? Tylko jak, this->FindByName nie znalazłem :/
    Pozdrawiam.
  • Pomocny post
    Poziom 40  
    W VS C# odwołasz się do kontrolki po nawie np. w ten sposób, przypuszczam że tutaj będzie podobnie po dostosowaniu do składni C++:
    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    Jeżeli chcesz wykorzystać inne właściwości typowe dla panela, musisz rzutować kontrolkę na typ Panel.

    Innym sposobem, bardzo możliwe że traktowanym podobnie przez kompilator, jest pętla foreach po kontrolkach i sprawdzanie, czy nazwa pasuje:
    Kod: csharp
    Zaloguj się, aby zobaczyć kod
  • Poziom 13  
    No pewnie ze tak :) Dzięki, jak ktoś pisze sofciki raz na kilka miechów to zapomina podstaw.
    Dla potomnych :

    Code:
    this->Controls["p1"]->BackColor = Color::Red;