Parent Eigenschaft dynamischer TShape Komponente zuweisen
-
Ich versuche eine Digitaluhr mit dynamischen Shapes zu erstellen, bei der jeweils 1 Shape ein Segment der Zahlen darstellt.
Mein Problem ist, dass ich den Parent nicht zuweisen kann. In diesem Fall ist dies das Formular (frmMain).
Hier ein Teil des Code:
void TfrmMain::setZiffer(int x, int y) { for(int i=0; i<7; i++) { delete segment[i]; segment[i]=NULL; segment[i]=new TShape(NULL); segment[i]->Parent=frmMain; segment[i]->Width=D; segment[i]->Height=L; segment[i]->Brush->Color=clRed; } segment[0]->Left=x+D; segment[0]->Top=y; segment[0]->Width=L; segment[0]->Height=D; segment[1]->Left=x; segment[1]->Top=y+D; segment[2]->Left=x+D+L; segment[2]->Top=y+D; segment[3]->Left=x+D; segment[3]->Top=y+D+L; segment[3]->Width=L; segment[3]->Height=D; segment[4]->Left=x; segment[4]->Top=y+D+L+D; segment[5]->Left=x+L+D; segment[5]->Top=y+D+L+D; segment[6]->Left=x+D; segment[6]->Top=y+L+D+L+D; segment[6]->Width=L; segment[6]->Height=D; }
-
Hallo
Warum solltest du das nicht können? Welchen Datentyp hat denn das Array [i}segment[/i]? In deinem Quellcodeauszug ist jedenfalls keine Fehlerquelle zu sehen.
bis bald
akari
-
Das Feld ist vom Typ TShape.
Komischerweise kann ich den Parent nicht zuweisen.[C++ Fehler] Unit1.h(34): E2451 Undefiniertes Symbol 'frmMain'
-
Hallo
Offenbar hast du den globalen Zeiger für deine Formklasse ausgeschaltet.
Ist auch kein Problem, denn da die Methode setZiffer zu TfrmMain gehört, solltest du sowieso besser this nehmen. Sinnvoll wäre this auch für den Owner.segment[i]=new TShape(this); ... segment[i]->Parent=this;
bis bald
akari
-
Danke akari, nun funktioniert's.
Weißt du, ob der globale Zeiger standardmäßig in BCB 6 deaktiviert ist?
-
Hallo
Soweit ich weiß nicht. In den Projektoptionen kann man zwar die automatische Erstellung der Standard-Foruminstanz abschalten, aber der global definierte Zeiger für diese Instanz bleibt erhalten (und ist dann nicht initialisiert). Der Zeiger sollte eigentlich im Header des Forms deklariert werden.
bis bald
akari