defaultwerte in enum



  • Hallo,

    wollte wissen ob man bei enums auch sowas wie defaultwerte bestimmen kann:

    enum Farben{Rot, Gelb, Blau};
    ...
    class MyClass
    {
    __property Farben Farbe=(...);
    ...
    };
    
    MyClass* Somthing=new TMyClass();
    int a=2000;
    Something->Farbe=(Farben)a; //Jetzt steht in Farbe z.B.-17
    

    Für sowas würde ich gerne einen Defaultwert bestimmen.

    Vielen Dank für eure Hilfe
    Michael



  • gabs da nicht bei Properties nebst read=, write= auch ne "default=" anweisung? Kann mich da dunkel an sowas erinnern...



  • in der property default=XYZ zu setzen bewirkt nur das der wert wenn die komponente zur designzeit eingebunden wird mit einem initialwert belegt ird, für den fall das zu laufzeit eine ungültige farbe eingegeben wird musst du schon eine writemethode schreiben die das dann abfängt.

    enum {
        cRed,
        cBlue,
        ...,
        cBlack
    }
    
    int FColorVal;
    
    void __fastcall SetColor(int Farbwert);
    
    __property int Farbe = (read = FColorVal, write = SetColor, default = cBlue};
    
    // -> .cpp
    
    void __fastcall ClassXYZ::SetColor(int Farbwert)
    {
        if (Farbwert > cBlack || Farbwert < cRed) FColorVal = cBlue;
        else FColorVal = Farbwert;
    }
    


  • Am besten arbeitest Du direkt mit TColor, weil Du da im Endeffekt sowieso nicht dran vorbeikommst. Und da sind schon jede Menge Farbwerte vordefiniert: clBlack, clRed usw. usw. usw.



  • danke,

    hab den default jetzt halt in der SetRoutine bestimmt. (Kann mich eh nicht an TColor halten, weil ich benutzerdefinierte Enums brauche).
    MfG
    Michael


Anmelden zum Antworten