Edit befehle zusammenfassen



  • Hallo zusammen,

    ich möchte folgendes VERMEIDEN.

    Edit1->visible->false;
    Edit2->visible->false;
    Edit3->visible->false;
    Edit4->visible->false;

    geht das eleganter?????
    lieber würde ich das ganze per Schleife über eine Funktion mit Start und Endwert laufen lassen, sozusagen automatisiert.....mit weniger Schreibarbeit.

    dazu habe ich mir folgendes überlegt:

    //------------------------------------------
    char Ed[]="Edit";
    int x = 1;

    char destString[512];

    _snprintf(destString,512,"%s%d",Ed,x);

    Edit4->Text = destString;
    destString->Text = "funktioniert leider nicht"; //in desString steht jetzt Edit1 aber es funktioniert trotzdem nicht.....
    //------------------------------------------

    Naja, wie immer funktioniert es nicht..... Hat vielleicht jemand eine Idee???
    Danke Cascoin



  • TEdit *edit;
    for(int i=0; i<ControlCount; i++)
     {
        edit = dynamic_cast<TEdit*>(Controls[i]);
        if(!edit)
         continue;
        edit->Visible = false;
    }
    

    Oder wenn die Edits aufn Panel liegen:

    TEdit *edit;
    for(int i=0; i<Panel1->ControlCount; i++)
     {
        edit = dynamic_cast<TEdit*>(Panel1->Controls[i]);
        if(!edit)
         continue;
        edit->Visible = false;
    }
    

    mfg



  • Wobei es auch ein Blick in die FAQ hier getan hätte...



  • Hi,
    erstmal tausend dank....hammergeil......

    ja sorry, hast recht....hab grad nochmal nachgeschaut.....war echt was in den faqs...aber mit anderem namen.

    jetzt wollt ich noch fragen wie man das zu ner funktion baut????
    probier schon die ganze zeit rum und kriegs nicht hin..... 😡
    bin ziemlich neu in c++....
    naja, wenn jemand kurz zeit hat danke...wenn nicht auch net so schlimm...

    merci nochmal cascoin



  • und was soll die Funktion machen?

    greetz KN4CK3R



  • naja,
    das man halt praktisch anstatt "ControlCount" nen x definiert und dann über das x eine bestimmt Anzahl an Editfenster ausgebelendet werden....

    Ich wollte die funktion dann in eine andere .cpp datei ausgliedern und dann im projekt nur noch beispielsweise das steht:

    Ausblenden (int x);

    (wobei x wie gesagt die obere grenze der editfelder sein soll die ausgeblendet wird)

    ich hoffe das ist einigermaßen verständlich.

    cascoin.



  • void ausblenden(int x)
    {
      TEdit *edit;
      int i = 0;
      for(int i = 0; i < Form->ControlCount; i++)
      {
        edit = dynamic_cast<TEdit*>(Form->Controls[i]);
        if(!edit)
          continue;
        if(i < x)
        {
          edit->Visible = false;
          i++;
        }
        else
          break;
      }
    }
    

    greetz KN4CK3R



  • vielen dank......
    das war mein fehler: Form->ControlCount

    echt super eure hilfe.....

    bis zum nächsten mal!!!

    cascoin


Anmelden zum Antworten