Design Frage



  • Hallo,
    ich habe eine Klasse Screen, welche eine Ansammlung von ScreenObjects, das sind auf dem bildschirm anzeigbare Objekte, verwaltet. Des weiteren habe ich eine Klasse System, welche den aktuellen Screen automatisch anzeigt und aktualisiert. Außerdem habe ich eine Funktion: framfunc, welche jedes Frame einmal aufgerufen wird und das System aktualisiert und anzeigt.

    Das Ganze ist nun so gedacht, dass ich in der main einfach einige Screens mit ihren ScreenObjcts erstelle. Diese werden dann komplett automatisch angezeigt etc..

    Nun ist mein Problem, wie kann ich bewirken, dass zum Beispiel ein Button(abgeleitet von ScreenObject) den aktuellen Screen wechseln kann. Wie kann der Button auf den Screen zugreifen, ohne dass ich ihm einen Pointer auf den Screen übergeben muss, auf den er wechseln soll?
    Anders ausgedrückt, wie kann ich überll auf alle erstellten Screen zugreifen, ohne diese als globale Objekte erstellen zu müssen? (das mit den globalen Objekten wiederstrebt mir irgendwie)
    Meine jetzige Idee ist, jeden Screen bei der Erstellung in System zu registrieren. Dann habe ich aber das Problem, der identifizierung der Screens. Ich muss ja in der funktion eines Buttons explizit einen bestimmten Screen ansprechen können. Vergebe ich auomatisch Ids für die Screens, so weiß ich nicht, welcher Screen welche Id bekommt. Übergibt der Benuter bei der Konstruktion der Screen eine Id / einen Namen, so muss ich prüfen, ob diese schon vorhanden ist und sie müssen nicht mehr durchnummerriert sein, das heißt, ich kann sie nicht mehr einfach in einem array mit konstanter Zugriffszeit speichern. hier könne ich natürlich vom Benutzer verlangen, dass er die Nummern fortlaufend vergibt, aber das ist meinen Meinung nach zu benutzerunfreundlich.

    Wie würdet ihr dieses Problem lösen? Was gibt es sonst noch für Möglichkeiten?

    P.S.: Hoffentlich habe ich mich verständlich ausgedrückt!



  • Hallo

    du wirst nicht drumherum kommen, den Zielscreen irgendwo zu übergeben.
    Wo du die möglichen Screens auflistet, ist eine andere Sache, ich würde in System eine Liste davon verwalten.
    Das kommt natürlich auch darauf an, wie der Benutzer Button und Zielscreen auswählen soll. Normalerweise hat man immer einen Zeiger auf das gerade fokusierte Control/Screen.

    bis bald
    akari


Anmelden zum Antworten