CPropertySheet (CTabCtrl) Reiter dynamisch ein/ausblenden?



  • Hallo zusammen!

    War schon eine weile nicht mehr hier, aber wie ich sehe blüht die Programierergemeinde immer noch prächtig! 😃 👍

    Ich habe wiedermal ein, wie ich denke, unmögliches Problem. 😡
    Und zwar sind auf einem CPropertySheet, was ja nichts anderes ist als ein CTabCtrl, ein paar Tabs, die immer da sind, und ein paar, von welchen immer nur eins sichtbar sein soll.

    Nun habe ich kein Bock jedesmal alle Pages neu aufzubauen, was recht häufig vorkommt, da das so Art Detail-Ansichten sind.

    Gibt es eine Möglichkeit die unnötigen Pages einfach auszublenden? So dass sie zwar da sind, aber nicht sichtbar? Und dann nach bedarf das eine wieder auszublenden, und das andere einzublenden? 😕

    Suche hat leider nichts dergleichen gebracht. 😞

    Vielen Dank!



  • CPropertyPage (die einzelnen Seiten) ist von CWnd abgeleitet - also könntest du deren ShowWindow()-Methode verwenden (SW_HIDE versteckt das Fenster, SW_SHOW zeigt es wieder an).



  • Ja, prinzipiel richtig, aber er versteckt den Inhalt des Fensters, aber nicht den Reiter. Der soll aber auch weg.



  • Schon mal versucht, den per SetItemSize() auf 0/0 zu verkleinern? Etwas besseres fällt mir auf Anhieb auch nicht ein.

    Oder du reservierst dir einen Tab für variablen Inhalt und benennst ihn je nach Status deiner Anwendung um (geht nur, wenn immer genau einer deiner Tab's angezeigt werden soll).



  • Das klingt schon besser!
    Ich habe tatsächlich nur einen Variablen Tab. Aber wie wechsle ich den Inhalt eines Tabs?



  • Das klingt schon besser!
    Ich habe tatsächlich nur einen Variablen Tab. Aber wie wechsle ich den Inhalt eines Tabs?



  • Versuch's mal mit SetItem() (wobei ich mir nicht ganz sicher bin, WIE die Property-Sheet die Verbindung zwischen Tab-Item und Property-Page kontrolliert)



  • Eigentlich musst Du doch nur im entsprechenden CTabCtrl die Reiter neu setzten.
    Die einzige Verbindung zwischen CPropertySheet und CTabCtrl ist doch die Nachricht OnSelChange() des TabCtrl (jedenfalls ist das bei mir so 😉 ), d.h die Ansichten sollten eh schon immer da sein!? Du könntest also in OnSelChange den Namen des aktuellen Reiters ermitteln und den entsprechenden Dialog anzeigen. Damit bist Du unabhängig von den Reitern im CTabCtrl und kannst diese nach Bedarf neu anordnen.


Anmelden zum Antworten