tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
781
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Kharim Kharim ist offline Mitglied
    Registriert seit
    Dec 2004
    Beiträge
    12
    Hi Leute,

    ich will aus Jucks ein kleines Spiel programmieren...nach Art Buchstabensalat...also sowas wo man viele Buchstaben hat und Wörter finden muss.

    Für jeden Buchstaben will ich ein extra Editfeld nehmen....das Prob ist das ich jetzt 200 Editfelder hab. Theoretisch hab ich die Felder 1 bis 200...die Editfelder heißen auch Edit1 bis Edit200...Jetzt will ich per Schleife und Zufall (einige) Felder mit Buchstaben füllen.

    Theoretisch kann ich die Felder ja von 1 bis 200 durchzählen...nur wie übertrage ich das jetzt auf die einzelnen Editfelder? Muss ich da ne Liste schreiben...wenn das Feld dann das Editfeld, oder gibts da was Günstigeres?
     

  2. #2
    Test Test ist offline Mitglied Gold
    Registriert seit
    Jul 2003
    Beiträge
    181
    Mit Hilfe von "ComponentCount" bekommst du die Anzahl aller Componenten die auf deinem Formular sind. Diese Anzahl nutzt du in einer Schleife um mit Components[int Index] auf jedes Control zuzugreifen (z.B. auf den Namen).
     

  3. #3
    Kharim Kharim ist offline Mitglied
    Registriert seit
    Dec 2004
    Beiträge
    12
    hm...klingt gut.....wie sieht das dann im Quelltext aus Kann ich "ComponentCount" direkt verwenden..also >int anzahl=ComponentCount< oder wie?

    Was ist wenn ich auch noch andere Komponenten auf der Form habe Wie bekomme ich da raus, welcher Bereich die Editfelder sind?

    Edit: Hab mir das gerade etwas angesehen...ich weis jetzt wie ich das zu verwenden hab...und ich weis auch wie ich zur Not die Index der Editfelder bekomme (GetIndex oder so).

    Mein Problem ist aber im Moment noch folgendes:

    Wie komme ich vom Index auf die eigentliche Funktion der Komponente
    Ich kann zwar den Namen auf ein String laden...nur bringt mir das nix..da ich ja auf die Komponente will...also auf das übliche ->Text="xxx". Gibts irgendwas in die Richtung Componente[Index]->Text="xx" oder so
    Geändert von Kharim (13.07.05 um 10:26 Uhr)
     

  4. #4
    Test Test ist offline Mitglied Gold
    Registriert seit
    Jul 2003
    Beiträge
    181
    Einfach casten:
    Code :
    1
    
    TEdit * pEdit = dynamic_cast<TEdit*>(Components[iIndex]);
     

  5. #5
    Kharim Kharim ist offline Mitglied
    Registriert seit
    Dec 2004
    Beiträge
    12
    ähm....tschuldigung für meine dumme Frage, aber ich hab damit noch nicht direkt gearbeitet...das ist doch jetzt blos ne Zeigerdefinition, oder Wie wende ich das jetzt an
     

  6. #6
    Test Test ist offline Mitglied Gold
    Registriert seit
    Jul 2003
    Beiträge
    181
    Über pEdit kannst du nun auf alle Eigenschaften der jeweiligen Editbox zugreifen, z.B. den Text oder den Namen (musst halt vorher nur überprüfen ob pEdit nicht NULL ist).
     

  7. #7
    Kharim Kharim ist offline Mitglied
    Registriert seit
    Dec 2004
    Beiträge
    12
    Muss ich bei pEdit->.... irgendwie noch den Components[iIndex] übergeben?
    Oder muss ich den Zeiger bei jedem Wechsel der Editfelder neu definieren?
    Dann mit pEdit zugreifen und wieder neu definieren...usw......
     

  8. #8
    Test Test ist offline Mitglied Gold
    Registriert seit
    Jul 2003
    Beiträge
    181
    Wenn du auf eine andere Editbox zugreifen willst, musst du natürlich den Index ändern. Den Zeiger kannst du ja außerhalb der Schleife definieren und dann halt innerhalb der Schleife auf die jeweilige Editbox per Index umsetzen.
     

  9. #9
    Kharim Kharim ist offline Mitglied
    Registriert seit
    Dec 2004
    Beiträge
    12
    Aja, jetzt hab ich es....besten Dank!!
     

  10. #10
    gerd87 gerd87 ist offline Mitglied Gold
    Registriert seit
    Mar 2005
    Beiträge
    120
    Hallo,

    habe das gleiche Problem.
    Hab die lösung nicht ganz verstanden. Wie muss jetzt die ganze Schleife aussehen?
     

  11. #11
    ASD20054 ASD20054 ist offline Mitglied Bronze
    Registriert seit
    Nov 2005
    Beiträge
    49
    Hi,

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
      int iIndex = 0;
      int felder = 200; //Wie viele Editfelder?
     
      for (int i = 0; i < felder; i++)
      {
      TEdit * pEdit = dynamic_cast<TEdit*>(Components[iIndex]);
      pEdit->Text = "Dein Text";
      iIndex++;
      }

    MFG ASD20054
    Geändert von ASD20054 (24.05.06 um 14:21 Uhr)
     

  12. #12
    bau_house bau_house ist offline Rookie
    Registriert seit
    May 2006
    Beiträge
    6
    Hallo, ich habe auch noch eine Frage zu diesem Thema:

    wie kann ich die Anzahl eines bestimmten Typs von Komponenten bekommen?
    Ich möchte wissen, wieviele edit-Felder vorhanden sind. Die restlichen Komponenten interessieren mich nicht.

    Geht das auch über componentcount?
    Wenn ja, dann wie?

    Vielen Dank im voraus!
     

  13. #13
    ASD20054 ASD20054 ist offline Mitglied Bronze
    Registriert seit
    Nov 2005
    Beiträge
    49
    Hi,

    Code :
    1
    2
    3
    4
    5
    6
    7
    
      for(int i = 0; i<Form1->ComponentCount;i++) 
      {
        if(Form1->Components[i]->ClassNameIs("TEdit"))
        {
          Label1->Caption = "Es befinden sich "+IntToStr(i)+" Edit Felder auf der Form";
        }
      }

    MFG ASD20054
     

Ähnliche Themen

  1. Editfelder über Programmcode erstellen?
    Von Servior im Forum Borland CBuilder und VCL
    Antworten: 8
    Letzter Beitrag: 13.04.07, 16:11
  2. Eingabe über Editfelder in Tabellen
    Von Loreley24 im Forum Borland CBuilder und VCL
    Antworten: 0
    Letzter Beitrag: 08.04.05, 16:11
  3. Antworten: 5
    Letzter Beitrag: 31.12.04, 16:53
  4. wie lösche ich editfelder?
    Von mStein im Forum Delphi, Kylix, Pascal
    Antworten: 1
    Letzter Beitrag: 13.04.04, 13:08
  5. c++ Editfelder
    Von KAY im Forum C/C++
    Antworten: 8
    Letzter Beitrag: 01.05.03, 15:41