TImage[feld] möglich ?



  • Hallo Leute,
    ich habe da mal eine frage wie kann diesen code verkürzen?
    ----------------------------------------------------
    const String Pfad = "C:\\bild\" ;

    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    Image1->Picture->LoadFromFile(Pfad + "1.JPG");
    Image2->Picture->LoadFromFile(Pfad + "1.JPG");
    Image3->Picture->LoadFromFile(Pfad + "1.JPG");
    Image4->Picture->LoadFromFile(Pfad + "1.JPG");
    Image5->Picture->LoadFromFile(Pfad + "1.JPG");
    Image6->Picture->LoadFromFile(Pfad + "1.JPG");
    Image7->Picture->LoadFromFile(Pfad + "1.JPG");
    Image8->Picture->LoadFromFile(Pfad + "1.JPG");
    }
    -----------------------------------------------------
    ich habe mit den folgenden code ausprobiert:
    -----------------------------------------------------
    for (int x = 0;x<9;x++)
    {
    Image[x]->Picture->LoadFromFile (Pfad+ "1.JPG");
    }
    -----------------------------------------------------
    leider kein erfolg!
    hat jemand eine idee?

    dank im vorraus! 🙂



  • Hi,

    for(int i = 0; i<Form1->ComponentCount;i++)
        {
            if(Form1->Components[i]->ClassNameIs("TImage"))
            {
                dynamic_cast<TImage*>(Form1->Components[i])->LoadFromFile(...);
            }
        }
    

    versuchs mal damit
    EDIT: das geht allerdings nur, wenn du in alle images das gleiche bild laden willst. ansonsten kannste ja in den Image->Tag irgendwas reinschreiben, sodass nur in die images das bild geladen wird, bei denen der Tag = 1 ist oder so.



  • hallo tuxmann,
    ich habe mit deiner varriante ausprobiert.
    nun ernte in folgende fehlermeldung :"LoadFromFile ist kein Element von TImage"



  • Augen auf!
    Da fehlte ein Wort das du aus deinem eigenen Beispiel schon kennst:

    dynamic_cast<TImage*>(Form1->Components[i])->Picture->LoadFromFile("1.bmp");
    


  • die lösung von tuxman funktioniert zwar, ist aber nicht gerade resourcenfreundlich..
    ich würde dir empfehlen ein array von TImage zu erstellen.
    währe dan auch einfacher zu handhaben.

    und darüber steht auch schon genug in der [url=http://www.c-plusplus.net/forum/viewtopic-var-t-is-39305.html]FAQ
    [/url]
    mfg
    BigNeal



  • const String Pfad = "C:\\bild\" ;

    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::FormCreate(TObject Sender)
    {
    for(int i = 0; i<Form1->ComponentCount;i++)
    {
    if(Form1->Components[i]->ClassNameIs("TImage"))
    {
    dynamic_cast<TImage
    >(Form1->Components[i])->LoadFromFile(Pfad + "1.jpg");
    }
    }
    }

    so sieht mein code aus so wie es von tuxman empfohlen wurde.
    dennoch kommt die fehlermeldung "LoadFromFile ist kein Element von TImage!
    ich werd daraus nicht schlau 😕

    muss ich vielleicht dynamic_cast vorher definieren oder so??? 😕



  • lese mal alle postings nochmals genau durch.
    benutze die BCB-Hilfe

    mfg
    BigNeal



  • Ohne "->Picture" wird es nicht gehen!



  • Nicht immer alles verraten, lesen & verstehen ist wichtig 😃



  • Also jetzt habe noch einmal mit tuxmans variante versucht.
    es funktioniert.
    ich danke aber alle die eine antwort geschrieben haben.
    ich glaube muss mal wenig mit der c++ teorie beschäftigen.
    ich habe auch im FAQ über Array was gefunden.
    Nachmals danke 😃


Anmelden zum Antworten