Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Felder von Steuerelementen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
06.03.2006, 22:58 Uhr
theosoft



Guten abend!

Kennt jemend eine Möglichkeit Felder (Arrays) von Komponenten zu verwenden?
z. B.:

C++:
TButton *myButton[10];  // .. oder so ähnlich für myButton[0] bis myButton[9]


thx, theosoft
--
ifS (immer fröhliches Schaffen)
theosoft
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.03.2006, 23:01 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


kannst du die Frage ein bisschen mehr konkretisieren?

Ich mutmaße mal du willst einfach ein array von 10 Buttons haben, da aber noch nicht klar ist wieviel speicher die im Ram verballern funzt myButton[10] nicht unbedingt. (wobei eigentlich müsste das auch klappen)

Deshalb legst du ein Array von 10 Pointern auf Buttons an... mit new kannst du dann für jeden dieser Pointer ein Objekt vom Typ TButton allokieren...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.03.2006, 23:21 Uhr
theosoft



... danke, aber ich kriegs nicht hin.

Versuche ich die Deklaration bei den von der IDE verwaltete Komponenten
, kommt sofort der Fehler "Falsche Felddeklaration"

Bei den Anwenderdeklarationen kann ich das Feld deklarieren, aber der Kompiler meldet:
[C++ Fehler] Unit1.cpp(20): E2248 Standardkonstruktor zum Initialisieren des Arrayelements vom Typ 'TButton' nicht gefunden.

theosoft
--
ifS (immer fröhliches Schaffen)
theosoft
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.03.2006, 01:40 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


naja wenn es keinen standardkonstruktor für eine TButton gibt dann kannst du auch keinen aufrufen

also bleibt nur die Lösung wie ich diese oben beschrieben habe


C++:
TButton *myButton[10];
for(int i = 0 ;i <10;++i)
myButton[i] = new TButton(....); // Wie auch immer der Konstruktor aussieht den du da aufrufst


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 07.03.2006 um 01:40 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.03.2006, 07:40 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)


Wenn du im Builder Hilfe für eine Funktion brauchst, dann musst du noch nicht mal in die Online-Hilfe gucken, um die erwarteten Parameter zu finden. Wenn du "TButton(" (ohne die Anführungsstriche) eingibst und kurz wartest, dann blendet der Builder ein Fenster mit allen möglichen Parametern ein; das solltest dir aber nichts neues sein

Wenn du dann siehst, dass die möglichen Parameter wie folgt lauten (zumindest im BCB 6):

C++:
TComponent *AOwner
void * ParentWindow
const TButton &

Dann weißt du schon mal, wie du den Konstruktor beispielhaft aufrufen kannst:

C++:
for(int cnt = 0; cnt < 10; ++cnt)   {
   myButton[cnt] = new TButton(Form1); // Form1 kann variieren
   // Evtl. noch "sichtbar machen" der Buttons:
   // myButton[cnt]->Parent = Form1;
}

Dieser Post wurde am 07.03.2006 um 07:42 Uhr von Reyx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.03.2006, 10:29 Uhr
theosoft



yep, vielen Dank!

Wie kann ich mir (besser: wer kann mir) klarmachen, dass erst das

C++:
myButton[cnt]->Parent = Form1;

den Button sichtbar macht?

... jedenfalls meine erste Frage ist super beantwortet!

thx, theosoft
--
ifS (immer fröhliches Schaffen)
theosoft

Dieser Post wurde am 07.03.2006 um 10:31 Uhr von theosoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.03.2006, 13:02 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)


Ganz einfach: Die Komponente, die du mit "new TButton..." erzeugst, ist optisch an keine Form gebunden. Das Parent-Statement gibt sozusagen an, worin die Komponente (in diesem Form der Button) enthalten ist. Du kannst z.B. jederzeit einen Button durch myButton->Parent = Form2; einer anderen Form zuweisen, oder z.B. auch einem Panel (oder genereller: Jeder von TWinControl abgeleitete Komponente).

Die Parent-Eigenschaft "sagt" einer Komponente sozusagen, auf welcher anderen Komponente sie sich befindet. Genauere Informationen dazu findest du in der Online-Hilfe vom BCB unter dem Stichwort "TControl::Parent".

Das du auch beim Konstruktor schon Form1 übergibst hat andere Hintegründe. Wenn du dir mal die Hilfe zu TButton::TButton() ansiehst, weißt du auch warum: Die hier als Parameter übergebene Komponente ist für die Speicherbereinigung der Komponente verantwortlich, also dafür, dass der für sie allokierte Speicher bei Bedarf wieder sauber freigegeben wird.

Dieser Post wurde am 07.03.2006 um 13:47 Uhr von Reyx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
07.03.2006, 21:35 Uhr
theosoft



i see

Danke söööööööööööön!
--
ifS (immer fröhliches Schaffen)
theosoft
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: