Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Während Laufzeit Objekt "machen" und in Funktion verwenden.

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
27.12.2004, 22:17 Uhr
~BennyB
Gast


Ich habe folgendes Problem


C++:
//***FormOpen
//...
  TCheckBox *NewButton[2][150];
  TScrollBox *NewBox[30];

  TScrollBox *FrameBox = new TScrollBox;

  FrameBox->Parent = Form1;

  for (i=0;;i++)
  {
    NewBox[i] = new TScrollBox;
    NewBox[i]->Parent = FrameBox;
    for (k=0;k<150;k++)
    {
      NewButton[0][k];
      NewButton[0][k]->Parent = NewBox[i];
    }
  }
//...

//***OnClick

//...
  Form1->NewBox[0]->NewButton[0][10] //... geht nicht
  NewBox[0]->NewButton[0][10] //... geht nicht
  NewButton[0][10] //... geht auch nicht



Wie kann ich die NewButton[0][x] ansprechen?

Grüße Benny
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.12.2004, 22:18 Uhr
~BennyB
Gast


Ups

C++:
//Meinte natürlich

//*** OnClick
//...
   Form1->FrameBox->NewBox[0]->NewButton[0][10] //... geht nicht

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.12.2004, 10:17 Uhr
~Reyx
Gast


Hallo,
Wenn ich mich nicht irre erstellst du Zeiger auf die Buttons. Diese willst du dann aber verwenden ohne ihnen vorher den erforderlichen Speicher zu reservieren (new).

Bei der Box machst du dass doch auch, warum bei den Buttons nicht?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.12.2004, 12:55 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ich kenn mich mit dem ganzen borlandsteuerlementen nicht aus aber


C++:
for (i=0;;i++)


diese schleife wird vermutlich nicht das tun was du möchtest ich tippe mal stark das hier


C++:
for (i=0;i<30;i++)


laufen soll...

davon abgesehen rufst du innerhalb dieser schleife den defaultkontruktor auf (so der was wirklich in deinem zusammenhang sinnvolles tut) ich hoffe das ist an der stelle auch so gewollt...

dann kommt die innerei schleife

C++:
for (k=0;k<150;k++)
{
      NewButton[0][k];
      NewButton[0][k]->Parent = NewBox[i];
}


da die äusser anscheinend 30 mal durchlaufen werden soll darfst du diese schleife nicht als innere verwenden da musst du ne eigene draus machen sonst läuft der die sinnlos 30 mal durch...

irgendwie willst du da auch das parrent dieser buttons die boxen sein lassen wobei du hier unterschiedliche anzahlen hast, und wie reyx schon sagte hast du für diese buttons auch kein speicher allokiert es handelt sich bisher einfach nur um ein mehrfach-pointerarray
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.12.2004, 13:12 Uhr
~BennyB
Gast


OK, das habe ich vergessen, es geht aber trotzdem nicht.
Er erkennt mir nichtmal

Form1->FrameBox
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.12.2004, 13:15 Uhr
~BennyB
Gast



Code:
for (i=0;i<30;i++)


laufen soll...

Das mit

Code:
for (i=0;;i++)

war gewollt, ich habe ein break in der schleife noch mit drin, sie soll garnicht 30 mal durchlaufen, nur wenn sie "voll" wird.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
29.12.2004, 13:21 Uhr
~BennyB
Gast


Also ich hab jetzt nochmal rumprobiert.

In meiner FormOpen erstell ich die Objekte während der Laufzeit, dort kann ich die Objekte auch ansprechen.

In der Funktion OnClick kann ich diese nicht mehr ansprechen, er kennt die Objekte nicht.


C++:
//FormOpen

Form1->FrameBox // geht

//OnClick

Form1->FrameBox // FrameBox kein Element von Form1
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
30.12.2004, 14:59 Uhr
~Reyx
Gast


Wenn du die Instanzen im FormOpen erzeugst sind sie ja auch nur lokale Instanzen, die bei verlassen der Funktion oder außerhalb davon nicht existieren!

Deklarier die Instanzen doch einfach als Member der Form (in der zugehörigen Header-Datei) und weise ihnen dann ihren Speicher zu.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.01.2005, 00:37 Uhr
~Chefkoch
Gast


Ich hab nun etwa das selbe Problem, kann aber mit deiner Antwort leider nix anfangen Reyx ;)
Folgendes soll bei nem ButtonClick auf der Form2 ausgeführt werden:


C++:
TTabSheet *tabsheet= new TTabSheet(Form1->PageControl1);
       tabsheet->Parent = Form1->PageControl1;
       tabsheet->PageControl = Form1->PageControl1;
      
        TMemo *memo = new TMemo(Form1);
        tabsheet->InsertControl(memo);
        memo->Align = alClient;
        memo->Name="Memo"+IntToStr(x);


Wie bekomme ichs nun hin, dass ich von Außerhalb drauf zugreifen kann?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.01.2005, 11:04 Uhr
Th



Du mußt in der Header-Datei Member-Variablen hinzufügen, z.B.


C++:
class TForm1  // benenn deine eigenen Formulare besser um
{
public:

        // ... hier steht schon einiges vom BCB erzeugtes

private:
     TTabSheet *m_tabsheet;
     TMemo *m_memo;  

}




Nun kannst du in allen Methoden auf "m_tabsheet" und "m_memo" zugreifen.


C++:
       m_tabsheet= new TTabSheet(Form1->PageControl1);
       m_tabsheet->Parent = Form1->PageControl1;
       m_tabsheet->PageControl = Form1->PageControl1;
      
       m_memo = new TMemo(Form1);
       m_tabsheet->InsertControl(m_memo);
       m_memo->Align = alClient;
       m_memo->Name="Memo"+IntToStr(x);



Also keine lokalen Variablen mehr verwenden, wenn du sie in mehreren Methoden (bzw. Event-Routinen) benötigst...
 
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: