Wir müssen für die Schule momentan Mastermind programmieren (ich gehe jetzt einfach mal davon aus, das dieses Spiele alle kennen). Dafür habe ich mir erstmal eine Klasse für eine Reihe gebastelt (4x farbige Knöpfe und 4x Bewertungsknöpfe) mit noch ein paar zusätzlichen Variablen. Bei den Knöpfen habe ich mich für TShape entschieden, da man bei diesem Objekt die Form ganz leicht in einen Kreis ändern kann.
Da ich mehrere Shapes brauch, habe ich mir 2 mal 4-Arrays dafür erzeugt und mit new den Speicher im Konstruktor zugewiesen. Danach werden im Konstruktor noch die ganzen restlichen Attribute festgelegt.
Mein Problem ist jetzt aber, dass ich bei einem OnClick-Ereignis auf einen Button probehalber einmal eine Instanz von diesem Objekt erzeugt habe, damit ich mir die schönen Kreise einmal ansehen kann. Sie waren aber nicht vorhanden.
Meine Frage lautet deshalb: wie bekomme ich die Dinger sichtbar?
Ich poste vorsichtshalber auch noch den Konstruktor:
Edit: Vielleicht hilft die Info ja: C++ Builder 6 unter XP
Edit: Problem gelöst: Es gibt auch noch das Attribut parent, welchem die Form zugewiesen werden muss.
Übrigens bin ich jetzt zur Erkenntnis gekommen, das ich einfach die Frage falsch gestellt hatte. So etwas wie: Objekte zur Laufzeit erstellen oder etwas ähnliches wäre passender gewesen.
Da ich mehrere Shapes brauch, habe ich mir 2 mal 4-Arrays dafür erzeugt und mit new den Speicher im Konstruktor zugewiesen. Danach werden im Konstruktor noch die ganzen restlichen Attribute festgelegt.
Mein Problem ist jetzt aber, dass ich bei einem OnClick-Ereignis auf einen Button probehalber einmal eine Instanz von diesem Objekt erzeugt habe, damit ich mir die schönen Kreise einmal ansehen kann. Sie waren aber nicht vorhanden.
Meine Frage lautet deshalb: wie bekomme ich die Dinger sichtbar?
Ich poste vorsichtshalber auch noch den Konstruktor:
Code:
//Konstruktor
CReihe::CReihe(int position)
{ pos=position;
for (int i=0; i<4; i++)
{ //Integer initialisieren
farbe [i]=0;
bewertung [i]=0;
//Speicher für die Kreise reservieren
knoepfe[i]=new TShape (Form1);
bewertungsknoepfe[i]=new TShape (Form1);
//Kreise initialisieren
//Form
knoepfe[i]->Shape=stCircle;
bewertungsknoepfe[i]->Shape=stCircle;
//Enabled
knoepfe[i]->Enabled=true;
bewertungsknoepfe[i]->Enabled=true;
//Höhe
knoepfe[i]->Height=50;
bewertungsknoepfe[i]->Height=15;
//Breite
knoepfe[i]->Width=50;
bewertungsknoepfe[i]->Width=15;
//Sichtbarkeit
knoepfe[i]->Visible=true;
bewertungsknoepfe[i]->Visible=true;
//Align
knoepfe[i]->Align=alNone;
bewertungsknoepfe[i]->Align=alNone;
/*//Anker
knoepfe[i]->Anchors->akLeft=true;
bewertungsknoepfe[i]->Anchors->akLeft=true;
knoepfe[i]->Anchors->akTop=true;
bewertungsknoepfe[i]->Anchors->akTop=true;
knoepfe[i]->Anchors->akRight=false;
bewertungsknoepfe[i]->Anchors->akRight=false;
knoepfe[i]->Anchors->akBottom=false;
bewertungsknoepfe[i]->Anchors->akBottom=false; */
//Farben
knoepfe[i]->Brush->Color=clWhite;
bewertungsknoepfe[i]->Brush->Color=clWhite;
//Position
knoepfe[i]->Left=150+60*i;
bewertungsknoepfe[i]->Left=400+17*i;
knoepfe[i]->Top=50+pos*70;
bewertungsknoepfe[i]->Top=50+pos*70;
//Name
knoepfe[i]->Name="Knopf" + IntToStr(i);
bewertungsknoepfe[i]->Name="Bewertung" + IntToStr(i);
}
}//Ende Konstruktor
Edit: Vielleicht hilft die Info ja: C++ Builder 6 unter XP
Edit: Problem gelöst: Es gibt auch noch das Attribut parent, welchem die Form zugewiesen werden muss.
Übrigens bin ich jetzt zur Erkenntnis gekommen, das ich einfach die Frage falsch gestellt hatte. So etwas wie: Objekte zur Laufzeit erstellen oder etwas ähnliches wäre passender gewesen.