Festlegen von Textparametern in FireMonkey
Inhaltsverzeichnis
Nach oben zu FireMonkey-Anwendungsdesign
FireMonkey stellt in der Klasse TTextSettings und der Schnittstelle ITextSettings ein universelles Tool zum Verwalten der Parameter für das Erscheinungsbild der Textobjekte bereit.
Visuelle Textparameter
Die Klasse TTextSettings deklariert die Eigenschaften TFont.Family, TFont.Size, TFont.Style, FontColor, HorzAlign, VertAlign, Trimming, WordWrap und FontColorForState, die visuelle Parameter der Textdarstellung festlegen, und Methoden zum Verwalten dieser Eigenschaften in Komponenten, die Textobjekt rendern. Die Klasse TTextSettings definiert Features, die das Festlegen der Darstellung des Ausgabetextes in Komponenten ermöglichen. Zum Beispiel können Sie Folgendes schreiben:
Delphi:
Label1.TextSettings.FontColor := MyColor;
C++:
Label1->TextSettings->FontColor = MyColor;
Dieser Code setzt die published Eigenschaft TLabel.FontColor des TLabel-Typobjekts, das eigentlich die Eigenschaft TTextSettings.FontColor erbt. Um jedoch die TTextSettings-Eigenschaften verwenden zu können, müssen Sie zuerst den Typ der Komponente (TLabel in diesem Beispiel) kennen.
Verwenden des ITextSettings-Interface
Das Interface ITextSettings deklariert Methoden und Eigenschaften zum Verwalten von visuellen Parametern der Textdarstellung in TTextSettings-Textobjekten unabhängig von bestimmten Typen, die die Komponenten enthalten.
Klassen, die die TTextSettings-Textobjekte TMemo, TCustomEdit, TTextControl und deren Nachkommen verwenden, verfügen über die public Eigenschaft TextSettings vom Typ TTextSettings und implementieren das Interface ITextSettings. Mit den in ITextSettings deklarierten Methoden und Eigenschaften können Sie in TTextSettings deklarierte Textdarstellungs-Eigenschaften in einem vom Komponententyp unabhängigen Stil verwalten.
Möglicherweise kennen Sie den speziellen Typ eines Textobjekts in einer Komponente nicht. Ein Textobjekt kann beispielsweise den Typ TText oder TTextControl haben. Diese Klassen verfügen über die Farbeigenschaften Color bzw. FontColor. Zum Setzen einer dieser Eigenschaften müssen Sie im Allgemeinen zuerst den Typ einer Objektinstanz ermitteln und dann den Farbtyp wie folgt umwandeln:
if Obj is TText then TText(Obj).Color := MyColor else if Obj is TTextControl then TTextControl(Obj).FontColor := MyColor;
Mit dem Interface ITextSettings kann diese Aufgabe viel einfacher und allgemeiner durchgeführt werden:
Delphi:
procedure TForm12.Button1Click(Sender: TObject);
var
Settings: ITextSettings;
Instance: TComponent;
I: Integer;
begin
Instance := Button1;
for I := 0 to ChildrenCount - 1 do
begin
Instance := Children[I];
if IInterface(Instance).QueryInterface(ITextSettings, Settings) = S_OK then
begin
// using ITextSettings methods and properties:
// TextSettings: TTextSettings,
// DefaultTextSettings,
// StyledSettings
// to change properties of text objects
Settings.TextSettings.BeginUpdate;
try
Settings.TextSettings.Font.Size := 18;
if TStyledSetting.Size in Settings.StyledSettings then
Settings.StyledSettings := Settings.StyledSettings - [TStyledSetting.Size]
// show Font.Size := 18
else
Settings.StyledSettings := Settings.StyledSettings + [TStyledSetting.Size];
// restore showing Font.Size loaded from a style
finally
Settings.TextSettings.EndUpdate;
end;
end;
end;
end;
C++:
void __fastcall TForm1::Button1Click(TObject *Sender) {
_di_ITextSettings Settings;
TComponent* Instance = new TComponent(Form1);
int I;
Instance = Button1;
for (I = 0; I < ChildrenCount ; I++) {
Instance = Children->Items[I];
if (Instance->GetInterface(Settings)) {
Settings->TextSettings->BeginUpdate();
try {
Settings->TextSettings->Font->Size = 18;
if (Settings->StyledSettings.Contains(TStyledSetting::Size)) {
Settings->StyledSettings =
Settings->StyledSettings >> TStyledSetting::Size;
}
else {
Settings->StyledSettings =
Settings->StyledSettings << TStyledSetting::Size;
}
}
catch (Exception* e) {
Settings->TextSettings->EndUpdate();
}
Settings->TextSettings->EndUpdate();
}
}
}
Sie können einfach das Interface-Typobjekt ITextSettings in die Variable Settings
abrufen. Bei Erfolg sollte der Rückgabewert von Settings
nicht nil
sein. In diesem Fall ist der spezielle Typ von Instance
nicht wichtig. Wichtig ist, dass das abgerufene Interface-Objekt IInterface(Instance)
die folgenden Eigenschaften enthält: TextSettings, DefaultTextSettings, StyledSettings. Mit diesen Eigenschaften können Sie Texteigenschaften aller Typen der TTextSettings-Textobjekte ändern.
Verwenden der Eigenschaft StyledSettings
Denken Sie beim Ändern der Textdarstellungs-Eigenschaften der TTextSettings-Typobjekte daran, dass beim Ändern des Wertes einer Eigenschaft (der TextSettings.Font.Size
-Eigenschaft in vorherigen Beispiel) die eigentliche Änderung der Ansicht des Objekts nur ausgeführt wird, wenn die Eigenschaft ITextSettings.StyledSettings nicht die Konstante TStyledSetting.Size enthält. Die Tabelle "Verhältnis zwischen TStyledSetting-Konstanten und TTextSettings-Eigenschaften" zeigt die TStyledSetting-Konstanten, die die Behandlung der TTextSettings-Textdarstellungs-Eigenschaften steuern.