Kopiuj
private: System::Windows::Forms::Label^ label6;
-
Ten język programowania nazywa się C++/CLI, jest to C++ w wersji dla .Net Framework. Problem na jaki zapewnie natrafisz jest taki, że większość przykładów dla .Net jest podawana w C# a nie C++.
-
No private to private, chyba jasne.
-
System::Windows::Forms::Label — tak środowisko generuje kod, dodając wszystkie namespace'y. Starczyłoby samo Label jeśli w kodzie się znajdzie using namespace System::Windows::Forms.
-
Daszek… ach, daszek. To tzw. uchwyt. Składniowo coś jak gwiazdka, czyli zamiast TLabel* masz Label^. Główna różnica to taka, że obiekty z daszkiem tworzy się przez gcnew zamiast new i nie trzeba ich usuwać delete'em, bo podlegają garbage collectorowi.
-
Odpowiednikiem FindComponent jest Controls->Find.
Kopiuj
array<Control^> ^tab = this->Controls->Find(L"Label"+i.ToString(), false);
Jak widać zwraca tablicę kontrolek (specjalną tablicę typu cli::array), ale jak wiesz że jest tylko jedna o tej nazwie to po prostu używasz tab[0].
Czyli cos takiego (nie sprawdzałem czy się kompiluje):
Kopiuj
for (int i=100;i<120;i++)
{
safe_cast<Label^>(Controls->Find(L"Label" + i.ToString(), false)[0])->Text = L"-";
}
safe_cast jest jak dynamic_cast, ale sypie wyjątkiem zamiast zwracać nulla.
Lepiej jednak chyba trzymać w tablicy potrzebne kontrolki, niż ich tak szukać po nazwie. Dotyczy to zarówno Borlanda jak i Visuala.
BTW, tutaj masz C++/CLI (czyli ogólnie C++ dla .NET), nie czysty C++.
Akurat C++ Builder to również dość mocno nieczysty C++, więc tu wielkiej różnicy nie ma ;-)