Как мне получить значение Font.Style и Font.Color в виде строки, я хотел бы присвоить его заголовку компонента Label, но style и color не являются строковыми величинами.
Есть масса способов это сделать, но я использую следующий способ:
Code: |
const fsTextName: array[TFontStyle] of string[11] = ('fsBold', 'fsItalic', 'fsUnderline', 'fsStrikeOut'); fpTextName: array[TFontPitch] of string[10] = ('fpDefault','fpVariable','fpFixed'); |
Позже, в коде, я так использую эти имена:
Code: |
var TFPitch: TFontPitch; TFStyle: TFontStyle; FString: String; ...
FString := ''; for TFStyle := fsBold to fsStrikeOut do if TFStyle in Canvas.Font.Style then Fstring := Fstring+fsTextName[TFStyle]+','; if FString<>'' then dec(FString[0]); { убираем лишний разделитель ',' } something := FString;
FString := fpTextName[Canvas.Font.Pitch]; something := FString; |
Автор: Dennis Passmore
Примерно также нужно поступить и с именованными цветами типа TColor.
Примечание Vit: Описанный здесь способ относится скорее к тем которые указывают как не надо делать. Эта задача решается намного изящнее здесь:
Code: |
procedure GetEnumNameList(Pti: PTypeInfo; AList: TStrings; X: Integer); {(********************************************************** Will return in AList string version of an enumerated type less the first X characters . eg X = 4 and type eXORBuySell = ( XOR_BUY, XOR_SELL );
GetEnumNameList(TypeInfo(eXORBuySell), ComboBox1.Items, 4);
Now ComboBox1.Items[0] = 'BUY' and ComboBox1.Items[1] = 'SELL' ************************************************************)} var I: Integer; begin AList.Clear; with GetTypeData(pti)^ do for I := MinValue to MaxValue do AList.Add(Copy(GetEnumName(pti, I), X + 1, 255)); end; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!