Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Namen hoch zählen

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 < [ 2 ]
000
08.03.2006, 11:38 Uhr
~Itschi
Gast


Ich hab bei meinem GUI mehrere Panels die ich alle einer gleichen Funktion zuweisen will. Die Panel haben doch immer namen wie Panel1, Panel2, ...
Kann man die nicht in einer Schleife hoch zählen.

so ungefähr:

for(int i = 0; i < 20; i++) {
funktion(Panel[i]);
}

Danke im vorraus!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.03.2006, 11:55 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
Entwicklungssystem? Ansonst ist der Ansatz schon richtig.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 08.03.2006 um 11:56 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.03.2006, 19:13 Uhr
theosoft



yep, das hochzählen würde so gehen, wenn du ein Feld von Panels hättest.
Wie das geht findest du hier:
www.fun-soft.de/showtopic.php?threadid=14492&time=1141772159
mfg theosoft
--
ifS (immer fröhliches Schaffen)
theosoft

Dieser Post wurde am 08.03.2006 um 19:15 Uhr von theosoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.03.2006, 10:31 Uhr
~Itschi
Gast


Danke hab das soweit hingegriegt, wie kann ich aber die hoch zählen die ich schon erstellt hab?
Also wenn ich die schon eingefügt hab. Sonst muß ich Positionen, Text, Größe ... immer eingeben und das ist dann auch nicht weniger zu schreiben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.03.2006, 19:28 Uhr
kronos
Quotenfisch
(Operator)


Willst du uns nicht das API verraten?
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.03.2006, 11:24 Uhr
~Itschi
Gast


Ist eine ganz normale GUI Anwendung vom Borland C++ Builder 5. Und ich tue da einige Panels einfügen. Ich will die Position von denen einer Funktion über geben. Müsste das aber für alle machen also:
funktion(Panel1->Top, Panel1->Left);
funktion(Panel2->Top, Panel2->Left);
.
.
.
funktion(Panel20->Top, Panel20->Left);

und damit ich das einfacher machen kann und leichter änder will ich das so in eine Schleife schreiben so irgendwie:

for(int i = 1; i <= 20; i++) {
funktion(Panel[i]->Top, Panel[i]->Left);
}

Ist jetzt alles klar?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
15.03.2006, 12:36 Uhr
kronos
Quotenfisch
(Operator)


Keine Ahnung was bei Borland eine "ganz normale GUI Anwendung" ist (WinAPI, Qt, GTK...??).
Aber wenn ich dein Problem richtig verstehe, hast du 'nen Haufen Variablen, die mit fortlaufenden Nummern enden. Für deine Schleife brauchst du aber 'nen Array:

C++:
Panel P[20];
P[0]=CreateNewPanel();
/* ... */
P[19]=CreateNewPanel();
/* ...deine Schleife... */


Wenn die Variablen aber als Panel1, Panel2 usw. feststehen, wirst du nicht drum herum kommen sie alle einzeln entweder 'nem Array zuzuweisen oder deiner funktion zu übergeben. Variablen-Namen können nur vom Präprozessor manipuliert werden und der kann keine Schleifen.
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>

Dieser Post wurde am 15.03.2006 um 12:41 Uhr von kronos editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
15.03.2006, 12:47 Uhr
theosoft



Mit dem Borland C++ Builder 5 finde ich keine Möglichkeit mit Unterstützung der IDE zur Entwurfszeit Felder von Komponenten zu erzeugen.
So bleibt - imho - nur die Möglichkeit zur Laufzeit Felder (Arrays) zu erzeugen wie oben mehrfach beschrieben.
--
ifS (immer fröhliches Schaffen)
theosoft
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
15.03.2006, 21:04 Uhr
theosoft



... oder, wie es kronos oben vorschlägt:

Zitat:
... 'nem Array zuzuweisen ...

das könnte bei den Deklarationen in der Haederdatei etwa so aussehen:

C++:
TPanel *Panel1;
TPanel *Panel2;
...
TPanel *Panel20;
...
TPanel *Panels[20];

und evt. im Konstruktor so:

C++:
Panels[0] = Panel1;
Panels[1] = Panel2;
...
Panels[19] = Panel20;
...
// und dann kann dein Funktionsaufruf so aussehen:
for(int i = 1; i <= 20; i++)
{
  foo(Panels[i]->Top, Panels[i]->Left);
  ...
}

--
ifS (immer fröhliches Schaffen)
theosoft
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
15.03.2006, 21:08 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)


-> (nicht böse sein, Pablo )

Schau dir mal TForm::Components und TForm::ComponentCount an. Damit kannst du bequem alle deinem Form unterteilten Komponenten durchwandern.


C++:
for(int cnt = 0; cnt < Form1->ComponentCount; ++cnt)    {
    if(AnsiString(Form1->Components[cnt]->ClassName()) == "TPanel")  {
        ShowMessage("Panel gefunden!");
    }
}


Über Components[cnt]->Name kannst du dann übrigens auch ganz bequem bestimmte Komponenten ausfiltern oder ganz viele andere tolle Sachen machen ...

Dieser Post wurde am 15.03.2006 um 21:19 Uhr von Reyx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: