Mengen sind eine praktische Sache. Sie kommen zwar innerhalb der VCL nicht so oft vor, aber manchmal doch an entscheidender Stelle. Als Beispiel für eine Menge dient hier die Eigenschaft Styles der Schriftart, die beispielsweise in einem TMemo oder TRichEdit Objekt gesetzt werden kann und die für die Darstellung des Schriftstiles zuständig ist (bold, kursiv,..)
Das Einstellen im Objektinspektor ist einfach. Programmgesteuert gibt es ein paar kleine Hürden.
Grundsätzlich gib es 3 Methoden des Zugriffes:
Die in den Fontstyles verwendete Menge heisst TFontStyles. Von dieser legen wir uns eine eigene Menge an
TFontStyles mystyle;
Nun weisen wir dieser Menge die von uns gewünschten Element zu. Das geschieht mit dem << Operator. Im folgenden wollen wir erreichen, dass die Schrift bold und italic ist:
mystyle<<fsBold<<fsItalic;
Die Menge enthält nun die von uns gewünschten Stile. Nun mussen wir diese Stile unserer TMemo oder TRichEdit Komponente zuweisen. Hier für eine TMemo1 Komponente:
TMemo1->Font->Style=mystyles;
Nun wird der Text in der gewünschten Form ausgegeben. Nun wollen wir das der Stil italic nicht mehr unseren Text ziert. Das entfernen eine Elementes aus der Menge geschiet mit dem >> Operator
mystyle>>fsItalic; TMemo1->Font->Style=mystyles;
entfernt den italic Stil und weist der Komponete die neuen Angaben zu. Manchmal kann es nützlich sein, die Menge komplett zu löschen:
mystyle.Clear();
oder zu wissen ob ein bestimmtes Element gesetzt ist:
bool test=mystyles.Contains(fsItalic); if(test) //ist enthalten
Für eine schnelle Änderung kann das Mengenfeld der Komponente mit einer temporären Menge geändert werden:
TMemo1->Font->Style=TFontStyles()<<fsBold;
Dies ist jedoch nur für das setzen von Elementen sinnvoll.
Noch kürzer ist folgende Methode:
TMemo1->Font->Style=TMemo1->Font->Style<<fsBold;
oder
TMemo1->Font->Style=TMemo1->Font->Style>>fsBold;
Aus den obigen Ausführungen geht hervor, dass leider die naheliegende Lösung
TMemo1->Font->Style<<fsBold
nicht funktioniert. Diese Code wird zwar compiliert und führt zu keinem Fehler, bewrikt aber leider auch nichts.