Announcement

Collapse
No announcement yet.

Nummer Komponenten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Nummer Komponenten

    Hallo,

    Ist es möglich die nummer von Komponenten mit ein Array zu bearbeiten

    zB.

    Edit1->Text = "blabla";

    wird

    Edit[x]->Text = "blabla";

    wobei zB. x von 1 bis 15 lauft ?

    Danke,

  • #2
    Ja!
    Code:
    for(int b=0; b < Form1->ComponentCount; b++)
        if (Form1->Components[b]->ClassNameIs("TEdit"))
        {
          dynamic_cast<TEdit*>(Form1->Components[b])->Text =Was du willst
        }

    Comment


    • #3
      ja, wenn du

      - die vergebenen Zeiger der Komponenten in ein Array überführst

      oder

      - die Komponenten dynamisch erzeugst und dabei ein Array aufbaust

      oder


      - du von TForm -> Components und ComponentCount Eigenschaft nutzt um ALLE Komponenten deiner Form durchzugehen. Dann kannst du prüfen, ob es sich um ein TEdit handelt und beispielsweise von diesem den Namen auslesen und dann den Text ändern

      Dein obiger Code funktioniert so NICHT
      Christian

      Comment


      • #4
        Tausend mahl Danke!

        Das soll mich VIEL arbeit aus Hande nehmen

        Comment


        • #5
          Möglichkeiten hast Du 2.

          Entweder Dynamisch oder wenn die Menge klar ist,
          deklariere ein Array und beim start füllst du dieses.
          Beispiel:
          .h
          EdM1-7 sind im Designer angelegte Edits
          TEdit *ESN[7]; // du kannst hier auch mit void arbeiten, mußt dann aber casten
          .cpp -> init
          // edit
          ESN[0] = EdM1;
          ESN[1] = EdM2;
          ESN[2] = EdM3;
          ESN[3] = EdM4;
          ESN[4] = EdM5;
          ESN[5] = EdM6;
          ESN[6] = EdM7;

          oder dynamisch
          .h
          TLedPanel *ledP[TESTANZ]; // 120

          .cpp // create
          for( int i = 0; i < TESTANZ; i++ )
          {
          ledP[i] = new TLedPanel(this);
          ledP[i]->Width = w;
          ledP[i]->Parent = PR;
          ledP[i]->Nr = i+1;
          ledP[i]->Caption = "";
          ledP[i]->rNr = DIORNUM[i][3]; // relaisnummer merken
          ledP[i]->dioNr = i;
          IM->GetBitmap( 0,ledP[i]->LedOff );
          IM->GetBitmap( 1,ledP[i]->LedYellow );
          IM->GetBitmap( 2,ledP[i]->LedGreen );
          IM->GetBitmap( 3,ledP[i]->LedRed );
          ledP[i]->LedIndex = 0;
          ledP[i]->OnClick = PR->OnClick;
          ledP[i]->OnDblClick = PR->OnDblClick;
          } // for
          position setzen
          // x richtung
          nr = 0;
          for( int i = 0; i < 5; i++ )
          {
          int x = (i*w)+(i*ax)+begx;
          // y richtung
          for( int j = 0; j < 25 ; j++, nr++ )
          {
          int y = (j*22)+(j*ay)+begy;
          ledP[nr]->Top = y;
          ledP[nr]->Left = x;
          if( i == 4 && j == 19 )
          break;
          } // for
          } // for
          // set
          nr = 0;
          ax = (Width-(3*w1)-20)/2;
          for( int i = 0; i < 3; i++ )
          {
          int x = (i*w1)+(i*ax)+begx;
          // y richtung
          for( int j = 0; j < 25 ; j++, nr++ )
          {
          int y = (j*22)+(j*ay)+begy;
          ledS[nr]->Top = y;
          ledS[nr]->Left = x;
          if( i == 2 && j == 21 )
          break;
          } // for
          } // for

          mfg
          Fred

          Comment


          • #6
            Hallo

            Ich habe z.B. 5 TEdit Komponenten. Aber wie kann Ich bekommen das TEdit1 = 1 TEdit2 = 2 TEdit3 = 3 TEdit4 = 4 TEdit5 = 5 in Form1->Components[b]->ClassNameIs("TEdit") array. Jetz bekomm Ich z.B. 1, 4, 7, 8, 9.

            Danke

            Comment


            • #7
              In dem du sie wie gewünscht benennst
              Christian

              Comment


              • #8
                Nein, die TEdit Komponent Namen sind TEdit1,2,3,4,5, dass ist ok.
                aber wann Ich var [b] von TEdits in TMemo anzeig dann sind die TEdit Komponenten nicht genummert wie 1,2,3,4,5
                Auch habe ich in Unit1.h die Tedit definiert am platz 1,2,3,4,5.

                Comment

                Working...
                X