checkboxen, buttons, etc über ein Array ansprechen
-
Hallo,
folgendes Problem:public __gc class Form1 : public System::Windows::Forms::Form { private: Bitmap* hwlogo; Button* starttest; Button* progmodus; Button* umschalten; Button* kommando; Button* loop; Button* loeschen; }
Diese Button würde ich gern in ein Array packen.
z.B.: Button* alle[6]
Allerdings meldet sich der Compiler damit das das in einer __gc Klasse nicht erlaubt ist.
Weiß hier jemand eine Lösung?Unter Borland Cbuilder 6 (ohne .Net) ging das recht einfach
. Muss mein Programm jetzt jedoch unter Visual C++.NET neu entwickeln.
Grüße
Sascha
-
dikhoff schrieb:
Hallo,
folgendes Problem:public __gc class Form1 : public System::Windows::Forms::Form { private: Bitmap* hwlogo; Button* starttest; Button* progmodus; Button* umschalten; Button* kommando; Button* loop; Button* loeschen; }
Diese Button würde ich gern in ein Array packen.
z.B.: Button* alle[6]
Allerdings meldet sich der Compiler damit das das in einer __gc Klasse nicht erlaubt ist.Versuche es mal mit dem gcroot<>-Template:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmxspec/html/vcmanagedextensionsspec_16_3.asp- Raving Tux
-
hi, ich habe mich vor kurzem auch mit diesem problem beschäftigt,
hier mein lösungsansatz:
versuch mal dieses:im headerfile:
Button *aButtons[]; // hier keine Zahl zischen []!!!
im cpp file
aButtons=new Button*[6]; // legt ein array mit 6 an for(int i=0;i<6;i++) { aButtons[i] = new Button(); // instanz erzeugen }
-
hi, ich habe mich vor kurzem auch mit diesem problem beschäftigt,
hier mein lösungsansatz:
versuch mal dieses:im headerfile:
Button *aButtons[]; // hier keine Zahl zischen []!!!
im cpp file
aButtons=new Button*[6]; // legt ein array mit 6 an for(int i=0;i<6;i++) { aButtons[i] = new Button(); // instanz erzeugen }
-
dikhoff schrieb:
Unter Borland Cbuilder 6 (ohne .Net) ging das recht einfach
. Muss mein Programm jetzt jedoch unter Visual C++.NET neu entwickeln.
Nur in dem Maße, wie du .Net nutzt. Du kannst auch das hübsche WinAPI benutzten.
-
ich bins nochmal...... tut leid für doppelposting vorhin, nachdem ich den "absenden" button gedrückt hatte, tat sich für einige zeit nix - daher war ich nicht sicher obs durchgekommen ist, und habs nochmal geschicht.
aber nun ich hab da vorhin nochwas übersehen daher nochmal etwas code (ev. für faq ?)
// myform.h #pragma once #using <mscorlib.dll> #using <System.dll> #using <System.Windows.Forms.dll> using namespace System; using namespace System::Windows::Forms; __gc class CMyForm : public Form { public: CMyForm(); private: void InitializeComponents(); Button *m_apButtons[]; // hier KEINE Zahl zwischen [] };
//myform.cpp #include "myform.h" CMyForm::CMyForm() { InitializeComponents(); } void CMyForm::InitializeComponents() { m_apButtons=new Button*[6]; // array mit 6 objekten erzeugen for(int i=0;i<m_apButtons->Length;i++) // achtung: zugriff auf elementeanzahl über interne methode ! { m_apButtons[i]=new Button(); // hier von mir aus noch zusätzliche anweisungen Controls->Add(m_apButtons[i]); // buttoms dem Formular hinzufügen ! } }
// winmain.cpp #include "MyForm.h" void __stdcall WinMain() { Application::Run(new CMyForm()); }
-
man könnte auch über die Controls Eigenschaft auf die Buttons zugreifen...
-
public enemy schrieb:
man könnte auch über die Controls Eigenschaft auf die Buttons zugreifen...
Das würde mich auch interessieren, ich verstehe aber noch nicht ganz, wie ich das machen muss.
Hat da bitte jemand ein Beispiel? In C++, wenn möglich
_______________________________________________________________
EDIT:
Inzwischen habe ich selbst was hinbekommen:IEnumerator* enumerator = this->Controls->GetEnumerator(); System::Windows::Forms::Button * tmpButton; while(enumerator->MoveNext()) { tmpButton = static_cast<System::Windows::Forms::Button *>(enumerator->Current); tmpButton->Image = Image::FromFile(S"Grafiken/0.gif"); }
In dem Beispiel werden alle Buttons der Form mit der Grafik 0.gif belegt.