ďťż

Ładny brzuch

Witam wszystkich.
Tworze komponent dziedziczony z TEdit umożliwiający wpisywanie tylko i wyłącznie cyfr.
TProEdit1.h
//--------------------------------------------------------------------------- #ifndef ProEdit1H #define ProEdit1H //--------------------------------------------------------------------------- #include <SysUtils.hpp> #include <Controls.hpp> #include <Classes.hpp> #include <Forms.hpp>         #include <StdCtrls.hpp> //--------------------------------------------------------------------------- class PACKAGE TProEdit1 : public TEdit { private:    void __fastcall WMChar(TWMKey& Msg); protected: public:        __fastcall TProEdit1(TComponent* Owner); __published:                           BEGIN_MESSAGE_MAP           MESSAGE_HANDLER(WM_CHAR, TWMKey, WMChar); //wywoływanie komunikatu onkeypress END_MESSAGE_MAP(TEdit) }; //--------------------------------------------------------------------------- #endif
ProEdit1.cpp
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "ProEdit1.h" //-------------------------------------------------- #pragma package(smart_init) //--------------------------------------------------------------------------- static inline void ValidCtrCheck(TProEdit1 *) {        new TProEdit1(NULL); }                           //--------------------------------------------------------------------------- __fastcall TProEdit1::TProEdit1(TComponent* Owner)        : TEdit(Owner) { } //--------------------------------------------------------------------------- void __fastcall TProEdit1::WMChar(TWMKey& Msg) {  char Key = Msg.CharCode;   if (!(isdigit(Key) || Key == VK_BACK || Key == DecimalSeparator))   {      Msg.CharCode = 0;   }   else   {     if ((Key == DecimalSeparator) && (this->Text.Pos(DecimalSeparator) > 0))     {        Msg.CharCode = 0;     }   } } namespace Proedit1 {        void __fastcall PACKAGE Register()        {                 TComponentClass classes[1] = {__classid(TProEdit1)};                 RegisterComponents("Moje", classes, 0);        } } //---------------------------------------------------------------------------
A mój problej jest następujący:
Po wstawieniu mojego komponentu na Formę i skompilowaniu oraz naciśnięciu jakiegokolwiek znaku z klawiatury w Edicie nic sie nie zmienia.

Próbowałem też zrobić tak:

ProEdit1.cpp
this->onkeypress = Key; void __fastcall TProEdit1::Key(TObject *Sender, char &Key) {   if (!(isdigit(Key) || Key == VK_BACK || Key == DecimalSeparator))   {     Key = 0;   }   else   {     if ((Key == DecimalSeparator) && (this->Text.Pos(DecimalSeparator) > 0))     {        Key = 0;     }   } }
i wszystko działało dopuki nie utworzyło sie w Projekcie zdarzenia onkeypress

Prosiłbym o małe wytłumaczenie dlaczego tak sie dzieje

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •