F
@Sunday
Vielen Dank für den Brocken den du mir hingeworfen hast. Das hab ich gebraucht, aber manchmal sieht man vor lauter Events das Event nicht.
Für alle die auch solche Probleme haben stell ich hier mal kurz die Lösung ins Netz. Da das Problem ja häufiger auftritt.
//---------------------------------------------------------------------------
// MyKompo.h
//---------------------------------------------------------------------------
#ifndef MyKompoH
#define MyKompoH
#include <vcl.h> //-- für TPanel
class TMyKompo : public TPanel
{
public:
__fastcall TMyKompo(TComponent* Owner); // Konstruktor
__fastcall ~TMyKompo(); // Destruktor
__published:
__property OnKeyPress;
__property OnKeyDown;
void __fastcall KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift);
void __fastcall WMGetDlgCode(TMessage &Msg);
protected:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_GETDLGCODE, TMessage, WMGetDlgCode);
END_MESSAGE_MAP(TPanel)
};
#endif
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// MyKompo.cpp
//---------------------------------------------------------------------------
#pragma hdrstop
#include "MyKompo.h"
//-- KONSTRUKTOR
__fastcall TMyKompo::TMyKompo(TComponent* Owner): TPanel(Owner)
{
Parent = dynamic_cast<TForm*>(Owner);
TForm *Formular = (TForm*)Owner;
Color = clGreen;
Align = alClient;
// Formular->KeyPreview = true;
Formular->ActiveControl = this;
OnKeyDown = KeyDown; //-- Event zuweisen
}
//-- DESTRUKTOR
__fastcall TMyKompo::~TMyKompo()
{
}
//-- Message Handler
void __fastcall TMyKompo::KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Key == VK_RIGHT)
{
ShowMessage ("Rechts");
}
else
{
ShowMessage ("Nix");
}
}
//-- Windows bescheid sagen
void __fastcall TMyKompo::WMGetDlgCode(TMessage &Msg)
{
// pfeiltasten sollen mit verarbeitet werden
Msg.Result = DLGC_WANTARROWS;
}
#pragma package(smart_init)
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// und nun noch in das Form
//---------------------------------------------------------------------------
TMyKompo *MeineKompo;
MeineKompo = new TMyKompo(this);
// und etwas später
delete MeineKompo;
MeineKompo = 0;
// der Ordnung halber
Danke an alle die geholfen haben