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
.
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):
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 ;-)