TRzCheckBox empfängt CN_COMMAND Message nicht



  • huch, schon wieder ne Frage... 🙈

    eigentlich wollt ich nur kurz über eine Funktion den Checked-Zustand einer CheckBox verändern, ohne dass die ein OnKlick Event abfeuert.

    Hab dazu ne neue Komponente erstellt und von einer RaizeCheckBox (TRzCheckBox) abgeleitet. Dort wollt ich dann die CN_COMMAND Message abfangen, um zu prüfen, ob der Nutzer die CheckBox angeklickt hat oder nicht, und dann zu meiner eigenen OnClick Methode weiterleiten, die nicht ausgelöst wird, wenn der Zustand programmseitig geändert wird.

    Mit ner "normalen" TCheckBox der VCL funktioniert das auch. Tja, aber bei der von Raize nicht, bis ich dann gemerkt hab, dass die gar kein CN_COMMAND kriegt.
    Jetzt ist die Frage wieso? Und viel wichtiger, wie kann ich das ändern bzw. gibts da nen anderes Makro was gesendet wird?

    Ich bin aus der Doku von Raize nicht wirklich schlauer geworden, aber zumindest konnte ich verfolgen, dass TCheckBox und TRzCheckBox als ersten gemeinsamen Vorfahr TWinControl haben.

    hier noch bisschen Code, damit's nich ganz so leer is.. 😉 :

    class PACKAGE TmyCheckBox : public TRzCheckBox
    
    void __fastcall TmyCheckBox::Dispatch(void *Message)
    {
    	switch  (((PMessage)Message)->Msg)
    	{
    		case CN_COMMAND:
    			CNCommand(*((TMessage*)Message));
    			break;
    
    		default:
    			TRzCheckBox::Dispatch(Message);
    			break;
    	}
    }
    
    //---------------------------------------------------------------------------
    void __fastcall TmyCheckBox::CNCommand(TMessage& Msg)
    {
    	if (HIWORD(Msg.WParam) == BN_CLICKED)
    	{
    	  //aufruf meiner OnClick Methode...
    	}
    	TRzCheckBox::Dispatch(&Msg);
    }
    //---------------------------------------------------------------------------
    

Anmelden zum Antworten