Eigenschaft bei eigener Kompo immer false?



  • Hi Leute.

    Folgendes: In einer Kompo von mir gibt es die Eigenschaft Down.

    // Header
    private:
    
    	bool fDown;
    
    protected:
    
    	void __fastcall SetDown( bool );
    
    __published:
    
    	__property bool Down = { read = fDown, write = SetDown };
    

    Wenn ich diese Eigenschaft jetzt aber waehrend der Laufzeit abfrage ist sie immer false. Nach ein bisschen rumprobieren habe ich jetzt einfach mal fDown public gemacht, und was ist passiert? Down war zur Laufzeit immer true...
    Wie kann das sein? Was bitte ist denn falsch? Oder woran kann das liegen?

    Danke im vorraus fuer alle Antworten.

    MfG Aoeke



  • mach in property auch default 'rein (false oder true)

    setz im Constructor die Variable AUF GENAU DENSELBEN Wert!



  • Aoeke schrieb:

    Wenn ich diese Eigenschaft jetzt aber waehrend der Laufzeit abfrage ist sie immer false.

    Heist immer der ist auch gleich nachdem du den Wert neu gesetzt hast?

    Edit:
    Zitate bitte auf das Notwendigste beschränken. Danke!



  • ja ich kenne das problem hab selber schon komponente entwickelt mit bcb5...

    irgendwas interpretiert der cbuilder da immer falsch, sodass teilweise falsche werte bei den booleans rauskommen...

    wie folgt habe ich es gelöst:

    // Header
     __property bool AutoSize = {read = ReadAutoSize, write = SetAutoSize, default=true, stored = true};
    
    //Source
    
    //Konstruktor
    
      FAutoSize = true;
      SetAutoSize(FAutoSize);
    
    // überladene Loaded Methode
    
    SetAutoSize(FAutoSize);
    

    d.h. du setzt die property am anfang und erneut am ende, bevor die form angezeigt wird...



  • Hallo....
    Nach so vielen Tagen antworte ich jetzt doch noch.
    Also Gast2003 hat mich auf die Idee gebracht, einfach mal

    __property bool Down = { read = GetDown, write = SetDown };
    

    anstatt

    __property bool Down = { read = fDown, write = SetDown };
    

    zu schreiben. Sprich, fuer read der Eigenschaft auch eine Funktion zu verwenden. Und siehe da, es funktioniert. Und das ist nicht nur bei bool Eigenschaften.. Bei so ziemlich vielen hatte das vorher nicht geklappt... Jetzt habe ich jedenfalls bei all meinen Eigenschaften eine Funktion benutzt und bin zufrieden. 😃
    Danke fuer die Antworten.
    MfG Aoeke



  • hättest du es so wie deraltenburger gemacht, hättest du es viel einfacher haben können...



  • Mist und ich war der Meinung, dass ich das schonmal probiert hatte und das es nicht funktioniert hatte.... Naja, jetzt ist es zu spaet. Hauptsache es funzt. 😃


Anmelden zum Antworten