Neue Komponente hat keine Event-Handler
-
Hallo zusammen.
Ich habe eine neue Komponente (*TColorListBox) im
C++ Builder 5 Prof. installiert.Leider ist es so, dass ich im Objektinspektor keine Ereignisse
(Event-Handler) zu der ColorListBox sehe.
Die Seite ist komplett leer.Was kann das sein?
Viele Grüsse
Martin*Quelle:
http://www.bridgespublishing.com/articles/issues/9805/Owner-drawn_list_boxes.htm
-
poste mal deine Häda
-
Danke für deine Antwort
Hier die komplette h-Datei
Bei einer anderen Komponente (rechtsbündiges Editfeld),
sind alle Event-Handler wie beim Standard TEdit vorhanden.
Leider bei der ColorListBox nicht.
Beide h-Dateien (rEdit und ColorListBox) ähneln sich aber von den Parametern.//---------------------------------------------------------------------------
#ifndef ColorListBoxH
#define ColorListBoxH
//---------------------------------------------------------------------------
#include <vcl\SysUtils.hpp>
#include <vcl\Controls.hpp>
#include <vcl\Classes.hpp>
#include <vcl\Forms.hpp>
#include <vcl\StdCtrls.hpp>#include <vector>
//---------------------------------------------------------------------------
class PACKAGE TColorListBox : public TCustomListBox
{
private:
std::vector<TColor> FColors;__property TColor Colors[int nIndex] =
{read=GetColor, write=SetColor};protected:
void __fastcall MeasureItem(int Index, int &Height);
void __fastcall DrawItem(int Index, const Windows::TRect
&Rect, TOwnerDrawState State);
public:
__fastcall TColorListBox(TComponent* Owner);virtual void __fastcall SetColor(int Index, TColor clr );
virtual TColor __fastcall GetColor(int Index );__published:
};
//---------------------------------------------------------------------------
#endif
-
Du hast die Kompo von TCustomListBox abgeleitet. Bei allen "Custom"- Klasen sind die Eigenschaften als protected deklariert.
Wenn man diese Eigenschaften publishen möchte macht man es so:class .... { private: //.. public: //.. __published: __property Color; __property OnClick; __property Align; // usw
-
Hey vielen Dank!
Die Ereignisse sind nun sichtbar.Kann ich mir die restlichen Events und
Eigeschaften der TCustomListBox irgendwo
raus kopieren und in die ColorListBox.h
einfügen?
-
hallo,
ja kannst du und zwar wenn du im editor die strg-taste drückst und mit der maus die entsprechende vorgängerklasse klickst, dann landest du genau an der stelle in der vcl wo die header deklariert ist, also auch die propertys. allerdings findet der code-browser nur was, wenn die richtigen symboleinstellungen eingestellt sind (ist glaub bei vorgabe so...)...
mfg
murph
-
oder rechte Maustaste / Deklaration suchen..
-
Hi,
eigentlich recht aber die Hilfe! Wenn du die Deklarationen kopierst definierst du ja selbst ein Ereignis und du musst dich um den Aufruf kümmern! Du brauchst aber nur__property + Ereignisname aus der Hilfe!
Ereignisse die erst bei TCustomListBox definiert werden, kannst due / musst du auch so einfügen! Nicht einfach de Definition mit read/write Methoden o.ä. kopieren!
MFG
Alexander Sulfrian
-
Sehr gut.
Vorgängerklasse markieren und Mausklick hat mich
an die richtige Stelle gebracht.
Hab dann nur alle properties kopiert und in der
ColorListBox.h eingefügt.Jetzt läuft der Laden.
Ich bin begeistert.
Danke und bis zum nächsten MalMfg martin