Einer Komponente eine Eigenschaft hinzufügen



  • Hallo,

    ich habe mir von TButton eine Komponenete Button2 abgeleitet und der
    Komponente eine Eigenschaft hinzugefügt über die sich eine unsigned int
    Variable lesen und beschreiben lässt.

    class PACKAGE TButton2 : public TButton
    {
    private:
              unsigned int Vpointer;
    __published:
    	__property   unsigned int pointer={read=Vpointer,write=Vpointer};
    protected:
    
    public:
    	__fastcall TButton2(TComponent* Owner);
    
    };
    

    Button2 hat nun im Objektinspektor die Eigenschaft pointer.
    Will ich nun pointer einen Wert geben z.B. 10, kommt die Fehlermeldung
    "Wert muß zwischen 0 und -1 liegen.



  • nehme ich den Datentyp unsigned short Vpointer funktioniert es.
    Hat Irgendjemand eine Ahnung?

    Wie realisiert man eine eine Auswahliste einer Eigenschaft z.B.
    ImeMode bei TEdit, wählt man dieses Feld im Objektinspektor an,
    öffnet sich eine Liste mit möglichen Parametern.



  • Hallo

    ich kann das Verhalten bei unsigned int und unsigned short bestätigen, aber nicht erklären.

    Wie realisiert man eine eine Auswahliste einer Eigenschaft z.B.
    ImeMode bei TEdit, wählt man dieses Feld im Objektinspektor an,
    öffnet sich eine Liste mit möglichen Parametern.

    Indem man statt einen reinem int (egal welchen Subtypes) einem speziellen enum-Typ erstellt und verwendet.

    bis bald
    akari



  • akari schrieb:

    Hallo

    Indem man statt einen reinem int (egal welchen Subtypes) einem speziellen enum-Typ erstellt und verwendet.

    bis bald
    akari

    Ich würde aber gerne eine Auswahl vom Datentyp AnsiString haben, mit enum komme
    ich da nicht weiter.

    z.B "com1","com2"....
    Ich könnte natürlich auch ein enum Port{com1,com2,....}, generieren und
    dann in der Klasse den AnsiString zuordnen.



  • Hallo

    wozu brauchst du eine Auflistung von AnsiStrings?
    Wenn du das enum zusammensetzt, werden die Literalwerte als Auswahl angezeigt, nicht die Integerwerte. Du kannst also im OI mit Klartext arbeiten. Und es gibt bei den Schnittstellen ja nicht viele individuelle Möglichkeiten.
    Du kannst ja immer noch ein statisches Array definieren, das für jeden Wert aus dem enum einem passenden AnsiString bereitstellt.

    bis bald
    akari


Log in to reply