TBDGrid->Options funktioniert nicht richtig



  • Hallo,
    mir ist aufgefallen, dass TDBGrid->Options unter bestimmten Bedingungen nicht funktioniert.

    Ich habe eine neue Klasse von TDBGrid abgeleitet um an die protected Eigenschaften Row u DataLink zu gelangen

    // neueKlasse.h
    class TDBGridExA : public TDBGrid {
    // [...]
    public:
      int getRow(void);                  //Zugriff auf TCustomDBGrid::Row (protected) ermöglichen
      TGridDataLink* getDataLink(void);  //Zugriff auf TCustomDBGrid::DataLink (protected) ermöglichen
    // [...]
    };
    
    // neueKlasse.cpp 
    [...]
    
    // Unit1.h
    class TForm1 : public TForm {
    // [...]
    public:		
      TDBGridExA* myDBGridExA;
    // [...]
    };
    
    // Unit1.cpp
    // [...]
    //im Konstruktor erzeuge ich ein Objekt der abgleiteten Klasse
    __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner){
      myDBGridExA = new TDBGridExA(this);
      myDBGridExA->Parent = this;
    [...]
    // dann möchte ich die Spalten fixieren, sie dürfen ihre Größe nicht ändern
      myDBGridExA->Options = myDBGridExA->Options >> dgColumnResize; //das geht leider nicht !! :confused: 
    }
    

    Compiliert man das Programm zeigt sich, dass die Maßnahme "TDBGrid->Options >> dgColumnResize" nicht zum gewünschten Ergebnis führt. Es passiert schlichtweg gar nichts. Das ist natürlich blöd, da gerade diese Options einen wichtigen Teil zur Steuerung des DBGrids beitragen.
    Wenn man mit dem Debugger nach der Anweisung TDBGrid->Options >> dgColumnResize die TDBGrid->Options ansieht wird dgColumnResize korrekt aus dem Set entfernt, allerdings ohne sich im fertigen Programm auszuwirken.
    Warum ist das so? Dieses Erscheinungsbild ist nur dann festzustellen, wenn man das Objekt zur Laufzeit dynamisch erstellt.

    Wird das gleiche Objekt mit dem OI statisch mit der oben dargestellten Klasse als feste Komponente erstellt funktioniert TDBGrid->Options wie es soll?

    Hat da jemand eine Erklärung?



  • Hallo

    Die Erklärung hast du doch schon selber gegeben : Es gibt offenbar Optionen die nur Auswirkungen beim Compileren haben, nicht mehr zur Laufzeit.

    bis bald
    akari



  • Hallo @akari,
    Deine Antwort ist zwar hinsichtlich meiner Fragestellung okay. Sie reicht mir aber nicht aus.

    Ich frage deshalb nochmal nach:
    Wenn ein TDBGrid Objekt dynamisch erstellt wird, verhält TDBGrid->Options falsch.
    Erstellt man das gleiche Objekt statisch, funktioniert TDBGrid->Options korrekt.

    Ist das ein Fehler des BCB6, den es bei allen Objekten mit Set zu berücksichtigen gilt, oder ist das nur auf TDBGrid oder TStringGrid beschränkt?
    Wenn ja, ist dieser Fehler bekannt und gibt es hierzu eine Abstellmaßnahme?


Anmelden zum Antworten