Thread in einem MDI Programm



  • Hi, ich habe da mal eine Frage zu Threads in MDI Anwendungen.

    Und zwar habe ich eine Childfenster das mehrfach angelegt werden kann. In diesem Fenster gibt es eine TListView. Der Thread wird durch enen Button aus jedem Fenster aufgerufen und soll Daten verarbeiten und im ListView anzeigen.

    Da es theoretisch beliebig viele Chieldfenster geben kann die gleichzeitig offen sind und das Fenster durch ein Menü wo die Einträge dynamisch nach einer Liste angelegt werden, die auch erweiterbar sein soll, wollte ich nicht statisch für jedes Fenster ein Formular anlegen bzw einen eigenen Thread der nur auf das jeweilige Formular zugreift.

    Wie kann ich nun vom Thread aus erkennen welches Chieldfenster das richtige ist, da ja eigentlich immer der gleiche Name des Listviews ist, wenn ich das Chieldfenster mehrfach aus meiner Vorlage aufrufe und :

    Chieldfenster->Listview->Items->Add();
    

    müsste doch in jedes, wenn überhaupt, Fenster die Liste reinschreiben.

    Sollte ich vielleicht z.B. das ListView beim aufruf des Threads übergeben oder das Handle des Fenster oder wie würdet Ihr sowas machen ?
    Vielleicht sollte ich auch die Chield Eigenschaften von TForm nutzen, um dem Thread zu sagen welches Chieldfenster gerade den Focus hat und Aktiv ist.

    Ich weiss da keine Lösung da ich noch nicht soviel mit MDI gemacht habe.
    Allerdings bräuchte ich jetzt den Thread um weiter zu kommen.

    Wäre also für jeden Vorschlag dankbar.



  • Hallo,

    du kannst auch per MDIChildren bzw. ActiveMDIChild auf die MDI-Fenster zugreifen

    for (int i = MDIChildCount - 1; i >= 0; i--)
    {
        if ((AnsiString)MDIChildren[i]->ClassName() == "TForm_WebEditor")
        {
            TForm_WebEditor *WebEditorChild = dynamic_cast<TForm_WebEditor*>(MDIChildren[i]);
            if (WebEditorChild) WebEditorChild->SaveFile();
        }
    }
    

Anmelden zum Antworten