Festlegen von Textparametern in FireMonkey

Aus RAD Studio
Wechseln zu: Navigation, Suche

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.

Siehe auch