Komponenten werden nicht erkannt
-
Hey
Ich versuche gerade ein Tic-Tac-Toe zu programmieren. Beim ersten Versuch
einfach 9 Panels mit onClick Funktionen verwendet und alles klappte. Danach
meinte mein Lehrer ich soll versuchen ein zweidimensionales Array zu verwenden
und die Panels im Konstruktor erstellen lassen. Soweit klappt es auch noch.
Mir werden auf der Form 9 Panels angezeigt. Allerdings schaffe ich es nicht
die Panels per onClick anzusteuern.Hier mal mein Quellcode. Hoffe das jemand Rat weiß
Das ist die Headerdatei:
//--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // Von der IDE verwaltete Komponenten TPanel *Panel; void __fastcall PanelClick(TObject *Sender); private: // Anwender-Deklarationen public: // Anwender-Deklarationen __fastcall TForm1(TComponent* Owner); TPanel* P[3][3]; void __fastcall P1Click(TObject *Sender); void __fastcall P2Click(TObject *Sender); void __fastcall P3Click(TObject *Sender); void __fastcall P4Click(TObject *Sender); void __fastcall P5Click(TObject *Sender); void __fastcall P6Click(TObject *Sender); void __fastcall P7Click(TObject *Sender); void __fastcall P8Click(TObject *Sender); void __fastcall P9Click(TObject *Sender); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif
und Hier der Quellcode:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { for(int x=0;x<3;x++) { for(int y=0;y<3;y++) { P[x][y] = new TPanel (this); P[x][y]->Parent = Panel; P[x][y]->Top = 5 + x*105; P[x][y]->Left = 5 + y*105; P[x][y]->Height = 100; P[x][y]->Width = 100; P[x][y]->Name = "P" +IntToStr(x*3+y+1); P[x][y]->Caption = IntToStr(x*3+y+1); P[x][y]->BorderStyle = bsSingle; P[x][y]->Color = clGrayText; P[x][y]->Font->Size = 48; P[x][y]->Tag = x*3+y+1; } } } //--------------------------------------------------------------------------- void __fastcall TForm1::P1Click(TObject *Sender) { } //---------------------------------------------------------------------------
Wenn ich versuche in der P1Click-Funktion die Caption auf ein X oder O zu ändern
bekomme ich die Fehlermeldung, dass P1 undefiniert ist.Gruß Nutsguhl92
-
Es sieht aber auch so aus, als ob Du im falschen Unterforum wärst. Dieses TForm-Zeugs hat wenig mit Standard C++ zu tun. Wenn Du wissen willst, wie du "die Caption" änderst (was auch immer Du damit meinst), bist Du auf jeden Fall falsch hier.
-
Mir ist klar wie ich die Caption ändere.
Das Problem ist, dass die Panels erst wenn das Programm startet
erstellt werden und ich, wenn ich versuche die Panels, die beim Programmstart erzeugt werden verwenden kann, da keine Funktion bei mir funktioniert.
-
Nun mußt du leider solange warten, bis dich ein netter Moderator ins Borland-Forum verschiebt.
In der Zwischenzeit kannst du ja nochmal deinen ersten Beitrag ein wenig hübscher gestalten (code-tags).
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum VCL (C++ Builder) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Nutsguhl92 schrieb:
Mir ist klar wie ich die Caption ändere.
Na dann zeig mal.
-
schau mal in den FAQ unter "Komponenten benutzen" -> "zur Laufzeit erstellen, anzeigen und Events zuweisen"