CPropertySheet: wie kommt man an die IDs von den CPropertyPages



  • Hallo

    Ich habe eine Dialogfeldanwendung und darin wird mittels eines CPropertySheets und mehreren CPropertyPages eine Tabliste realisiert. Nun möchte ich, sobald im CPropertySheet auf "OK" geklickt wird die Daten der CPropertyPages "einsammmeln" und dachte, dass ich dies mit den den IDs der Steuerelemente der CPropertyPages mache. Nur leider funktioniert dies nicht, weil lau GetLastError "die Kennung der Steuerelemente nicht gefunden wurde" Ich habe es per GetDlgItemText probiert und wollte nun nach Alternativen fragen. Ich hoffe, dass ich mich verständlich ausgedrückt habe.

    chrische



  • Das Geheimnis

    virtual BOOL CPropertyPage::OnApply( )
    

    liefert Dir der ClassWizard.

    Gruss, Gio



  • Hallo

    Ich habe das Problem jetzt anderweitig gelöst. Trotzdem habe ich keine Ahnung, wie deine Antwort bei meinem Problem helfen könnte und wäre über Aufklärung dankbar.

    chrische



  • chrische5 schrieb:

    Trotzdem habe ich keine Ahnung, wie deine Antwort bei meinem Problem helfen könnte und wäre über Aufklärung dankbar.

    Ich habe keine Ahnung, was es an dem MSDN Eintrag zu OnApply nicht zu verstehen gibt. 😕



  • Hallo

    Und trotzdem habe ich keine Ahnung, wie man dann an die IDs kommt. Wie man auf den Tastendruck reagiert war nicht meine Frage.

    chrische



  • In jeder Property-Page die OnApply() überladen. Wenn im Sheet "OK" oder "Übernehmen" geklickt wird, dann wird diese für jede Property-Page aufgerufen. Dort machst Du dann einen "UpdateData(..)" (oder wie auch immer Du die Daten handhabst), und gut.

    Wo liegt das (Verständis-)Problem 😕

    Gruss, Gio



  • Was willst Du denn jetzt?

    chrische5 schrieb:

    Nun möchte ich, sobald im CPropertySheet auf "OK" geklickt wird die Daten der CPropertyPages "einsammmeln"

    oder

    chrische5 schrieb:

    wie man dann an die IDs kommt

    ???????

    Ich vermute mal, Du hast versucht aus dem CPropertySheet auf die Resource-IDs aus den CPropertyPages zuzugreifen. Da reicht ein einfaches GetDlgItemText() natürlich nicht, da das ja auf die IDs der Controls des CPropertySheets zugreift. Zum "Einsammeln" der Daten hättest Du per CPropertySheet::GetPageCount() und CPropertySheet::GetPage() durch die CPropertyPages iterieren müssen und ein GetPage()->GetDlgItemText() hätte dann wahrscheinlich auch funktioniert. Das habe ich aber selbst nicht ausprobiert, denn ich benutze OnApply() um Daten aus den Pages zu persistieren.



  • Hallo

    jencas schrieb:

    Was willst Du denn jetzt?

    chrische5 schrieb:

    Nun möchte ich, sobald im CPropertySheet auf "OK" geklickt wird die Daten der CPropertyPages "einsammmeln"

    oder

    chrische5 schrieb:

    wie man dann an die IDs kommt

    ???????

    Ich vermute mal, Du hast versucht aus dem CPropertySheet auf die Resource-IDs aus den CPropertyPages zuzugreifen. Da reicht ein einfaches GetDlgItemText() natürlich nicht, da das ja auf die IDs der Controls des CPropertySheets zugreift. Zum "Einsammeln" der Daten hättest Du per CPropertySheet::GetPageCount() und CPropertySheet::GetPage() durch die CPropertyPages iterieren müssen und ein GetPage()->GetDlgItemText() hätte dann wahrscheinlich auch funktioniert. Das habe ich aber selbst nicht ausprobiert, denn ich benutze OnApply() um Daten aus den Pages zu persistieren.

    Du hast das Problem genau erkannt. Wie gesagt, vielleicht habe ich mich etwas umständlich ausgedrückt. Ich habe es nun über Memberfunktionen der einzelnen Pages gemacht, die aufgerufen werden, sobald auf dem Sheet OK geklickt wird.

    Vielen Dank für eure Hilfe.

    chrische


Anmelden zum Antworten