Announcement

Collapse
No announcement yet.

Form1->Edit1->Text= ....

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

  • Form1->Edit1->Text= ....

    Hallo,

    unter Borland C++ gibt es ja folgende Syntax:

    Form1->Edit1->Text = "test";

    Ist es eigentlich auch möglich es in dieser Form zu schreiben?:

    for(int i=0; i<10; i++){
    Form1->Edit[i]->Text="test";
    }

    Bei mir klappt das so leider nicht. Kennt jemand das Problem oder kann mir erklären wie das geht?

    Der Compiler scheint das in im Edit nicht zu mögen :-(

    Gruss
    Sven

  • #2
    Hallo Sven!

    Vielleicht liegt es an dem Edit<b>[i]</b> anstatt Edit1 Edit2 usw.<br> Oder meinst du bereits mit "das in" das i? Hast du die Edits dynamisch erzeugt? Wenn nicht, kann das so nicht klappen.

    Gruß Irmgar

    Comment


    • #3
      Hallo,

      upps, Tippfehler :-)
      Genau das meinte ich. Aber es muss doch eine möglichkeit geben, das so oder so ähnlich zu lösen.

      Gruss
      Sve

      Comment


      • #4
        Hallo Sven!

        Wenn du die Edits nicht dynamisch erzeugt hast, sondern zur Entwurfszeit, musst du alles mit ComponentCount bzw. ControlCount abklappern.

        z.B.

        for(int x=0;x<Form1->ControlCount;x++)<br>

        <br>{TEdit *edit = dynamic_cast<TEdit *>(Form1->Controls[x]);<br>
        if(edit)<br>
        { edit->Text="...";
        }
        }<br>
        oder so in der Art.

        Gruß Irmgar

        Comment


        • #5
          Hi Sven,
          so kann das natürlich nicht gehen.

          Edit1 ist eigentlich nur ein Name den der Compiler natürlich nur als solchen erkennen kann. Mit Edit[i] kannst du nur etwas aufrufen, was du dynamisch erzeugt hat und dann wäre das ein Array mit Name Edit, das mehrere Elemente besitzt, auf die du zugreifen kannst. Wenn du z.B. Die Objekte Edit1-Edit10 auf deinem Form hast, kannst du nur über den Namen zugreifen, wenn du die Adresse des Objektes mit dem Name "Edit1" suchst. Das kannst du mit der Funktion Form1->FindChildControl("Edit1") erreichen. Du kannst aber nur die Children eines Objektes suchen. Wenn du also die Objekte Edit1 usw. auf einem Panel plaziert hast mußt du mit Panel1->FindChildControl("Edit1") suchen.
          <PRE>
          Bsp.:
          for (int i=1; i<=10;i++)
          (TEdit*)Panel1->FindChildControl("Edit"+IntToStr(i))->Text = "Hallo";
          </PRE>

          Bye - Pete

          Comment


          • #6
            Hallo,

            vielen, vielen Dank. Nun bin ich etwas schlauer und weiss, wie ich es in Zukunft realisieren werde.

            Sve

            Comment

            Working...
            X