<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Andreeah</id>
	<title>RAD Studio - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Andreeah"/>
	<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/de/Spezial:Beitr%C3%A4ge/Andreeah"/>
	<updated>2026-08-30T20:36:21Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Ein_erster_Blick_auf_die_IDE_-_Index_(IDE-Tutorial)&amp;diff=172086</id>
		<title>Ein erster Blick auf die IDE - Index (IDE-Tutorial)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Ein_erster_Blick_auf_die_IDE_-_Index_(IDE-Tutorial)&amp;diff=172086"/>
		<updated>2014-09-23T14:42:44Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Tutorial: Die IDE für {{Delphi}} und {{CBuilder}} verwenden}}&lt;br /&gt;
{{f|radstudio|&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Lesen Sie auch das Hilfethema mit demselben Namen &#039;&#039;&#039;[[Ein erster Blick auf die IDE]]&#039;&#039;&#039; für einen Überblick der Elemente der IDE.&amp;lt;/blockquote&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Themen==&lt;br /&gt;
* [[Startansicht (IDE-Tutorial)|Startansicht und Willkommensseite]]&lt;br /&gt;
* [[Symbolleisten (IDE-Tutorial)|Symbolleisten]]&lt;br /&gt;
* [[Tools - Index (IDE-Tutorial)|Tools]]&lt;br /&gt;
** [[Optionen für eine erleichterte Bedienung (IDE-Tutorial)|Optionen für eine erleichterte Bedienung]]&lt;br /&gt;
** [[Formular-Designer (IDE-Tutorial)|Formular-Designer]]&lt;br /&gt;
** [[Tool-Palette (IDE-Tutorial)|Tool-Palette]]&lt;br /&gt;
** [[Objektinspektor (IDE-Tutorial)|Objektinspektor]]&lt;br /&gt;
** [[Projektverwaltung (IDE-Tutorial)|Projektverwaltung]]&lt;br /&gt;
** [[Datei-Browser (IDE-Tutorial)|Datei-Browser]]&lt;br /&gt;
** [[Strukturansicht (IDE-Tutorial)|Strukturansicht]]&lt;br /&gt;
** [[Der Quelltext-Editor - Index (IDE-Tutorial)|Der Quelltext-Editor]]&lt;br /&gt;
*** [[Navigation durch den Quelltext (IDE-Tutorial)|Navigation durch den Quelltext]]&lt;br /&gt;
*** [[Formatieren des Quellcodes (IDE-Tutorial)|Formatieren des Quellcodes]]&lt;br /&gt;
*** [[Code-Folding (IDE-Tutorial)|Code-Folding]]&lt;br /&gt;
*** [[Änderungsbalken (IDE-Tutorial)|Änderungsbalken]]&lt;br /&gt;
*** [[Blockkommentare (IDE-Tutorial)|Blockkommentare]]&lt;br /&gt;
*** [[Live-Vorlagen (IDE-Tutorial)|Live-Vorlagen]]&lt;br /&gt;
*** [[Sync-Bearbeitungsmodus (IDE-Tutorial)|Sync-Bearbeitungsmodus]]&lt;br /&gt;
*** [[Code Insight (IDE-Tutorial)|Code Insight]]&lt;br /&gt;
*** [[Refactoring (IDE-Tutorial)|Refactoring]]&lt;br /&gt;
*** [[Tastatur-Makros (IDE-Tutorial)|Tastatur-Makros]]&lt;br /&gt;
*** [[To-Do-Listen (IDE-Tutorial)|To-Do-Listen]]&lt;br /&gt;
* [[Versionsverwaltung (IDE-Tutorial)|Versionsverwaltung]]&lt;br /&gt;
* [[Integration von Versionskontrollsystemen in der IDE (IDE-Tutorial)|Subversion-Integration in der IDE]]&lt;br /&gt;
* [[Daten-Explorer (IDE-Tutorial)|Daten-Explorer]]&lt;br /&gt;
* [[Objektablage (IDE-Tutorial)|Objektablage]]&lt;br /&gt;
* [[IDE Insight (IDE-Tutorial)|IDE Insight]]	&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==	&lt;br /&gt;
* [[{{Product}} – Interaktive Einführungen]] {{f|radstudio|&lt;br /&gt;
* &#039;&#039;&#039;[[Ein erster Blick auf die IDE]]&#039;&#039;&#039; in [[Einführung in {{Variables|Product}}]]}}&lt;br /&gt;
[[Category:{{Delphi}}]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Tour of the IDE Index (IDE Tutorial)]]&lt;br /&gt;
[[fr:Présentation de l&#039;EDI - Index (tutoriel de l&#039;EDI)]]&lt;br /&gt;
[[ja:IDE の概要（IDE チュートリアル）：インデックス]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=FireMonkey-Funktion_%22Status_speichern%22&amp;diff=172082</id>
		<title>FireMonkey-Funktion &quot;Status speichern&quot;</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=FireMonkey-Funktion_%22Status_speichern%22&amp;diff=172082"/>
		<updated>2014-09-23T14:27:45Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16374&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|FireMonkey-Anwendungshandbuch}}&lt;br /&gt;
&lt;br /&gt;
Die {{FM}}-Funktion &#039;&#039;&#039;Status speichern&#039;&#039;&#039; ermöglicht das Speichern von Daten, die den Status der Anwendung vor dem Schließen beschreiben. Mit den Daten des &#039;&#039;&#039;Speichern-Status&#039;&#039;&#039; kann der Zustand der Anwendung nach einem Neustart wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
==Funktionsweise von Geräten ohne die Funktion &amp;quot;Status speichern&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
Wenn sich auf mobilen Geräten, insbesondere auf Android-Plattformen, eine Anwendung im Hintergrund befindet, könnte das Betriebssystem den Prozess abbrechen. Dies kann aufgrund bestimmter Bedingungen erfolgen, wie z. B. wenig Arbeitsspeicher oder einfach, weil zu viele Prozesse ausgeführt werden. In diesem Fall verbleiben die vom Benutzer eingegebenen Informationen nicht in der Anwendung.&lt;br /&gt;
&lt;br /&gt;
Auf Android wird durch Aktivieren der Option &#039;&#039;&#039;Aktionen nicht speichern&#039;&#039;&#039; unter &#039;&#039;&#039;Einstellungen &amp;amp;gt; Entwickleroptionen&#039;&#039;&#039; die Anwendung neu gestartet, wenn die Home-Taste gedrückt und dann zurück zur Anwendung gewechselt wird. Alle zuvor eingegeben Daten sind dann verloren.&lt;br /&gt;
&lt;br /&gt;
Um dieses Problem zu beheben, stellt Android einen besonderen Speicher, &amp;quot;SaveState&amp;quot;, zur Verfügung, in dem der Status der Anwendung gespeichert und wiederhergestellt werden kann, wenn die Anwendung neu gestartet wird. Die Speicherung dieses Status ist nur &amp;quot;temporär&amp;quot;; wenn Sie die Anwendung manuell oder über den Task-Manager schließen und dann erneut starten, ist der vorherige &amp;quot;temporäre&amp;quot; Status verloren.&lt;br /&gt;
&lt;br /&gt;
Nach dem Neustart einer Anwendung wäre es praktisch, wenn die Anwendung in demselben Zustand verbliebe, in dem sie sich vor dem Versetzen in den Hintergrund befunden hat. &lt;br /&gt;
&lt;br /&gt;
==Funktion &amp;quot;Status speichern&amp;quot; in {{FM}}==&lt;br /&gt;
&lt;br /&gt;
Die {{FM}}-Funktion &#039;&#039;&#039;Status speichern&#039;&#039;&#039; ermöglicht das Speichern von Daten mit dem Status der Anwendung vor dem Schließen. Mit den Daten des &#039;&#039;&#039;Speichern-Status&#039;&#039;&#039; kann der Zustand der Anwendung nach einem Neustart wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Speichern-Status&#039;&#039;&#039; kann Informationen, wie aktive Registerkarte, in Steuerelementen enthaltener Text, Auswahl von Kontrollkästchen, Kalenderdatum, aktuell ausgewählter Eintrag usw., sowie weitere Daten enthalten.&lt;br /&gt;
&lt;br /&gt;
Die {{FM}}-Funktion &#039;&#039;&#039;Status speichern&#039;&#039;&#039; implementiert einen Mechanismus zur Verarbeitung des temporären &amp;quot;SaveState&amp;quot;-Android-Mechanismus und des persistenten &#039;&#039;&#039;Speichern-Status&#039;&#039;&#039;, indem Daten auf der Festplatte gespeichert werden. Auf Nicht-Android-Plattformen emuliert diese Funktion einen temporären &#039;&#039;&#039;Speichern-Status&#039;&#039;&#039;, bei dem Dateien an temporären Speicherorten und der persistente Status an dem gewünschten Speicherort gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
Das Verhalten dieser Funktion auf Desktop-Plattformen entspricht dem Verhalten auf mobilen Plattformen, d. h., der &#039;&#039;&#039;Speichern-Status&#039;&#039;&#039; speichert den Anwendungsstatus. Es ist aber nicht gewährleistet, dass die Speicherung persistent ist; wenn Sie beispielsweise die temporäre Datei, in der diese Informationen gespeichert sind, auf Windows löschen, startet die Anwendung neu, ohne den Status wiederherzustellen, den sie vor dem Schließen hatte.&lt;br /&gt;
&lt;br /&gt;
Für die Behandlung des Speicherns dieser Daten stellt TForm das Ereignis [[lib_de:FMX.Forms.TCommonCustomForm.OnSaveState|OnSaveState]] bereit: alle Formulardaten sollten während dieses Ereignisses gespeichert werden, damit sie beim Neustart der Anwendung wiederhergestellt werden können.&lt;br /&gt;
&lt;br /&gt;
Von [[lib_de:FMX.Forms.TCommonCustomForm|TCommonCustomForm]] abgeleitete {{FM}}-Formulare, wie [[lib_de:FMX.Forms.TForm|TForm]] und [[lib_de:FMX.Forms3D.TForm3D|TForm3D]], verfügen über die Eigenschaft [[lib_de:FMX.Forms.TCommonCustomForm.SaveState|SaveState]] mit dem Typ [[lib_de:FMX.Forms.TFormSaveState|TFormSaveState]] zur Verwaltung des &#039;&#039;&#039;Speichern-Status&#039;&#039;&#039;. Die Klasse &#039;&#039;&#039;TFormSaveState&#039;&#039;&#039; stellt Methoden und Eigenschaften zur Verwaltung des &#039;&#039;&#039;Speichern-Status&#039;&#039;&#039; des Formulars bereit, Die Klasse verwendet den Dienst [[lib_de:FMX.Platform.IFMXSaveStateService|IFMXSaveStateService]], der die erforderliche Funktionalität für das [[lib_de:FMX.Platform.IFMXSaveStateService.GetBlock|Ermitteln]] und [[lib_de:FMX.Platform.IFMXSaveStateService.SetBlock|Setzen]] des &#039;&#039;&#039;Speichern-Status&#039;&#039;&#039; auf der Zielplattform definiert.&lt;br /&gt;
&lt;br /&gt;
===Speicher-Stream===&lt;br /&gt;
&lt;br /&gt;
In der Eigenschaft [[lib_de:FMX.Forms.TFormSaveState.Stream|SaveState.Stream]] wird der Speicher-Stream als [[lib_de:System.Classes.TMemoryStream|TMemoryStream]] gespeichert. Diese Eigenschaft kann jederzeit gelesen und/oder geschrieben werden, obwohl:&lt;br /&gt;
&lt;br /&gt;
* Das &#039;&#039;&#039;Schreiben&#039;&#039;&#039; von Daten in den [[lib_de:FMX.Forms.TFormSaveState.Stream|Stream]] vorzugsweise während des Ereignisses [[lib_de:FMX.Forms.TCommonCustomForm.OnSaveState|OnSaveState]] erfolgen sollte.&lt;br /&gt;
* Das &#039;&#039;&#039;Lesen&#039;&#039;&#039; von Daten aus dem [[lib_de:FMX.Forms.TFormSaveState.Stream|Stream]] vorzugsweise während des Ereignisses [[lib_de:FMX.Forms.TCommonCustomForm.OnCreate|OnCreate]] erfolgen sollte.&lt;br /&gt;
&lt;br /&gt;
Sie können Hilfsklassen, wie [[lib_de:System.Classes.TBinaryReader|TBinaryReader]] und [[lib_de:System.Classes.TBinaryWriter|TBinaryWriter]], mit diesem Stream als Parameter verwenden, um das Speichern von Informationen, wie numerische oder String-Werte, zu unterstützen.&lt;br /&gt;
&lt;br /&gt;
Sie können auch global auf diese Funktion zugreifen, ohne das [[lib_de:FMX.Forms.TCommonCustomForm|TCommonCustomForm]] wiederherzustellen. Sie können von der Plattform den Dienst [[lib_de:FMX.Platform.IFMXSaveStateService|IFMXSaveStateService]] anfordern und mit dessen Methoden die &#039;&#039;&#039;Speichern-Status&#039;&#039;&#039;-Daten speichern und laden.&lt;br /&gt;
&lt;br /&gt;
===Speicherort und -name===&lt;br /&gt;
&lt;br /&gt;
Die Eigenschaft [[lib_de:FMX.Forms.TFormSaveState.StoragePath|SaveState.StoragePath]] ermöglicht die Angabe eines &amp;quot;Speicherpfades&amp;quot; für den &#039;&#039;&#039;Speichern-Status&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Wenn &#039;&#039;&#039;StoragePath&#039;&#039;&#039; leer ist (Vorgabe), ist der &#039;&#039;&#039;Speichern-Status&#039;&#039;&#039; temporär und verwendet entweder vom Betriebssystem bereitgestellte Funktionen (wie &amp;quot;SaveState&amp;quot; auf Android) oder einen temporären Speicherort. &lt;br /&gt;
&lt;br /&gt;
Die Daten verbleiben dort, wenn die Aktivität vom Betriebssystem neu gestartet wird, gehen aber auf mobilen Plattformen verloren, wenn die Anwendung manuell vom Benutzer beendet wird. Auf anderen Plattformen werden die Daten an einem temporären Speicherort gespeichert und bleiben verfügbar, bis diese temporären Dateien gelöscht werden (auf Windows beispielsweise bei einer Festplattenbereinigung).&lt;br /&gt;
&lt;br /&gt;
* Wenn &#039;&#039;&#039;StoragePath&#039;&#039;&#039; nicht leer ist (sondern beispielsweise auf [[lib_de:System.IOUtils.TPath.GetHomePath|TPath.GetHomePath]] gesetzt ist), dann ist der &#039;&#039;&#039;Speichern-Status&#039;&#039;&#039; persistent und wird auf der Festplatte an diesem Speicherort gespeichert.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;Speichern-Status&#039;&#039;&#039;-Daten verbleiben während der Ausführung unverändert, und Sie können so lange Informationen daraus wiederherstellen, bis Sie diese Daten explizit mit [[lib_de:System.Classes.TMemoryStream.Clear|SaveState.Stream.Clear]] löschen. Wenn Sie die Daten mit &#039;&#039;&#039;SaveState.Stream.Clear&#039;&#039;&#039; löschen oder [[lib_de:FMX.Platform.IFMXSaveStateService.SetBlock|IFMXSaveStateService.SetBlock]] mit auf &amp;lt;span class=&amp;quot;codeInline&amp;quot;&amp;gt;nil&amp;lt;/span&amp;gt; gesetzten Blockdaten aufrufen, werden die Daten aus dem temporären Speicher entfernt bzw. bei der persistenten Speicherung wird die Datei gelöscht.&lt;br /&gt;
&lt;br /&gt;
Es wird empfohlen, für temporäre und persistente Status die Eigenschaft [[lib_de:FMX.Forms.TFormSaveState.Name|SaveState.Name]] auf einen gewünschten Namen oder Dateinamen, wenn sie sich auf der Festplatte befinden, zu setzen. Wenn die Eigenschaft &#039;&#039;&#039;Name&#039;&#039;&#039; leer gelassen wird, erstellt das Formular einen Namen und hängt eine Kombination aus Anwendungsnamen, Klassennamen und Formularnamen an.&lt;br /&gt;
&lt;br /&gt;
==Hinzufügen des Speichern-Status zu Anwendungen==&lt;br /&gt;
&lt;br /&gt;
So verwenden Sie die Funktion &#039;&#039;&#039;Status speichern&#039;&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt; Erstellen Sie eine neue [[Geräteübergreifende Anwendung|geräteübergreifende Anwendung]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Ziehen Sie eine [[lib_de:FMX.Edit.TEdit|TEdit]]-Komponente auf das Formular.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Wählen Sie das Formular aus, doppelklicken Sie auf das Ereignis [[lib_de:FMX.Forms.TCommonCustomForm.OnCreate|OnCreate]], und fügen Sie den folgenden Code hinzu: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;l s=&amp;quot;delphi&amp;quot; /&amp;gt;&#039;&#039;&#039;{{Delphi}}:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure TForm1.FormCreate(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
  R: TBinaryReader;&lt;br /&gt;
begin&lt;br /&gt;
  if SaveState.Stream.Size &amp;gt; 0 then&lt;br /&gt;
  begin&lt;br /&gt;
    // Recover previously typed text in Edit1 control.&lt;br /&gt;
    R := TBinaryReader.Create(SaveState.Stream);&lt;br /&gt;
    try&lt;br /&gt;
      Edit1.Text := R.ReadString;&lt;br /&gt;
    finally&lt;br /&gt;
      R.Free;&lt;br /&gt;
    end;&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;l e=&amp;quot;delphi&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l s=&amp;quot;cpp&amp;quot; /&amp;gt;&#039;&#039;&#039;C++:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void __fastcall TForm1::FormCreate(TObject *Sender)&lt;br /&gt;
{&lt;br /&gt;
	TBinaryReader *R;&lt;br /&gt;
	if (SaveState-&amp;gt;Stream-&amp;gt;Size &amp;gt;0) {&lt;br /&gt;
		// Recover previously typed text in Edit1 control.	&lt;br /&gt;
		R = new TBinaryReader(SaveState-&amp;gt;Stream, TEncoding::UTF8, false);&lt;br /&gt;
		try {&lt;br /&gt;
			Edit1-&amp;gt;Text = R-&amp;gt;ReadString();&lt;br /&gt;
		} __finally {&lt;br /&gt;
			R-&amp;gt;Free();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;l e=&amp;quot;cpp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Wählen Sie im [[Formular-Designer|Formular-Designer]] das Formular aus, doppelklicken Sie auf das Ereignis [[lib_de:FMX.Forms.TCommonCustomForm.OnSaveState|OnSaveState]], und fügen Sie den folgenden Code hinzu: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;l s=&amp;quot;delphi&amp;quot; /&amp;gt;&#039;&#039;&#039;{{Delphi}}:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure TForm1.FormSaveState(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
  W: TBinaryWriter;&lt;br /&gt;
begin&lt;br /&gt;
  SaveState.Stream.Clear;&lt;br /&gt;
  // Current state is only saved when something was edited.&lt;br /&gt;
  // If nothing has changed, the state will be removed this way.&lt;br /&gt;
  if Edit1.Text.Length &amp;gt; 0 then&lt;br /&gt;
  begin&lt;br /&gt;
    // Save typed text in Edit1 control.&lt;br /&gt;
    W := TBinaryWriter.Create(SaveState.Stream);&lt;br /&gt;
    try&lt;br /&gt;
      W.Write(Edit1.Text);&lt;br /&gt;
    finally&lt;br /&gt;
      W.Free;&lt;br /&gt;
    end;&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;l e=&amp;quot;delphi&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l s=&amp;quot;cpp&amp;quot; /&amp;gt;&#039;&#039;&#039;C++:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void __fastcall TForm1::FormSaveState(TObject *Sender)&lt;br /&gt;
{&lt;br /&gt;
	TBinaryWriter *W;&lt;br /&gt;
	SaveState-&amp;gt;Stream-&amp;gt;Clear();&lt;br /&gt;
	// Current state is only saved when something was edited.&lt;br /&gt;
	// If nothing has changed, the state will be removed this way.&lt;br /&gt;
	if (Edit1-&amp;gt;Text.Length() &amp;gt;0) {&lt;br /&gt;
		// Save typed text in Edit1 control.&lt;br /&gt;
		W = new TBinaryWriter(SaveState-&amp;gt;Stream);&lt;br /&gt;
		try {&lt;br /&gt;
			W-&amp;gt;Write(Edit1-&amp;gt;Text);&lt;br /&gt;
		} __finally {&lt;br /&gt;
			W-&amp;gt;Free();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;l e=&amp;quot;cpp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Codefragment sind die Speichern-Daten temporär, und &#039;&#039;&#039;Edit1&#039;&#039;&#039; behält weiterhin seinen Text, auch wenn die Anwendung neu gestartet wird. Da dieser &#039;&#039;&#039;Speichern-Status&#039;&#039;&#039; temporär ist, werden die Speichern-Daten gelöscht, wenn die Anwendung auf mobilen Geräten (manuell) geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Damit diese Speichern-Daten persistent werden, fügen Sie die folgende Codezeile am Anfang des Ereignisses &#039;&#039;&#039;FormCreate&#039;&#039;&#039; ein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l s=&amp;quot;delphi&amp;quot; /&amp;gt;&#039;&#039;&#039;{{Delphi}}:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
SaveState.StoragePath := TPath.GetHomePath;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Stellen Sie sicher, dass &#039;&#039;&#039;System.IOUtils&#039;&#039;&#039; in der uses-Klausel enthalten ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l e=&amp;quot;delphi&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l s=&amp;quot;cpp&amp;quot; /&amp;gt;&#039;&#039;&#039;C++:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
SaveState-&amp;gt;StoragePath = System::Ioutils::TPath::GetHomePath(); &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Stellen Sie sicher, dass &#039;&#039;&#039;#include &amp;amp;lt;System.IOUtils.hpp&amp;amp;gt;&#039;&#039;&#039; in der Header-Datei enthalten ist. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;l e=&amp;quot;cpp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie die Anwendung auf einer Windows Vista-Plattform oder später ausführen, wird eine temporäre Datei mit dem Namen &#039;&#039;&#039;~Anwendungsname_FM_Klassenname_Formularname.TMP&#039;&#039;&#039; (wie z. B. &#039;&#039;&#039;~SaveStateCodeSnippet_FM_TForm1_Form1.TMP&#039;&#039;&#039;) in folgendem [[lib_de:System.IOUtils.TPath.GetHomePath|Stammpfad]] gespeichert: &#039;&#039;&#039;C:\Benutzer\&amp;amp;lt;Benutzername&amp;amp;gt;\AppData\Roaming&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Erstellen einer FireMonkey-Anwendung|Erstellen einer {{FM}}-Anwendung]]&lt;br /&gt;
* [[FireMonkey-Anwendungshandbuch|{{FM}}-Anwendungshandbuch]]&lt;br /&gt;
* [[lib_de:FMX.Forms.TCommonCustomForm.OnSaveState|OnSaveState]]&lt;br /&gt;
* [[lib_de:System.IOUtils.TPath.GetHomePath|GetHomePath]]&lt;br /&gt;
* [[lib_de:FMX.Platform.IFMXSaveStateService|IFMXSaveStateService]]&lt;br /&gt;
&lt;br /&gt;
[[Category:XE7]]&lt;br /&gt;
[[Category:FMX]]&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:FireMonkey Save State]]&lt;br /&gt;
[[fr:Fonctionnalité Enregistrer l&#039;état de FireMonkey]]&lt;br /&gt;
[[ja:FireMonkey の状態保存]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Tutorial:_Implementieren_Ihrer_ersten_RAD_Server-Client-Anwendung&amp;diff=172055</id>
		<title>Tutorial: Implementieren Ihrer ersten RAD Server-Client-Anwendung</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Tutorial:_Implementieren_Ihrer_ersten_RAD_Server-Client-Anwendung&amp;diff=172055"/>
		<updated>2014-09-19T09:08:50Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16467&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|EMS-Client-Anwendung}}&lt;br /&gt;
&lt;br /&gt;
Sie können eine EMS-Client-Anwendung für die Verbindung mit einem EMS-Server über die vom [[EMS-Server|EMS-Server]] bereitstellte REST-API erstellen. Um auf die EMS-Serverressourcen und -informationen aus der EMS-Datenbank zuzugreifen, können Sie die [[EMS Administrative API|integrierte API]] oder Ihre [[Erweitern des EMS-Servers|benutzerdefinierte API-Ressource ]] verwenden.&lt;br /&gt;
&lt;br /&gt;
Für dieses Tutorial benötigen Sie in Ihrer EMS-Client-Anwendung die folgenden Komponenten:&lt;br /&gt;
&lt;br /&gt;
* Mit der Komponente &#039;&#039;&#039;[[lib_de:REST.Backend.EMSProvider.TEMSProvider|TEMSProvider]]&#039;&#039;&#039; wird die Verbindung mit dem EMS-Server eingerichtet.&lt;br /&gt;
* Mit der Komponente &#039;&#039;&#039;[[lib_de:REST.Backend.EndPoint.TBackendEndpoint | TBackendEndpoint]]&#039;&#039;&#039; wird auf eine bestimmte Methode EMS-Ressourcenendpunkts aus Ihrer EMS-Client-Anwendung zugegriffen (eine der REST-API-Methoden des EMS-Servers). Eine EMS-Client-Anwendung ruft den [[lib_de:REST.Backend.EndPoint.TBackendEndpoint | TBackendEndpoint]] auf, um JSON vom EMS-Server abzurufen (GET) oder auf dem EMS-Server einzutragen (POST).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Hinweis&#039;&#039;&#039;: Jede [[lib_de: REST.Backend.EndPoint.TBackendEndpoint | TBackendEndpoint]]-Komponente ist für den Zugriff auf einen EMS-Ressourcenendpunkt konfiguriert. Fügen Sie genauso viele [[lib_de: REST.Backend.EndPoint.TBackendEndpoint | TBackendEndpoint]]-Komponenten hinzu wie Methoden der EMS-Ressourcenendpunkte vorhanden sind, auf die zugegriffen werden soll.&lt;br /&gt;
&lt;br /&gt;
Um einen Aufruf eines REST-API-Endpunkts durchzuführen, müssen Sie in der Eigenschaft &#039;&#039;&#039;[[EMS-Client-Anwendung#	Verwenden der Komponente TBackendEndpoint|Method]]&#039;&#039;&#039; der &#039;&#039;&#039;[[lib_de: REST.Backend.EndPoint.TBackendEndpoint | TBackendEndpoint]]&#039;&#039;&#039;-Komponente die passende Methode auswählen. &lt;br /&gt;
&lt;br /&gt;
==Erstellen eines EMS-Clients==&lt;br /&gt;
&lt;br /&gt;
# Erstellen Sie eine neue &#039;&#039;&#039;[[Geräteübergreifende Anwendung|geräteübergreifende Anwendung]]&#039;&#039;&#039;:&lt;br /&gt;
#* Für &#039;&#039;&#039;{{Delphi}}&#039;&#039;&#039;: Öffnen Sie {{Menu|Datei &amp;amp;gt; Neu &amp;amp;gt; Geräteübergreifende Anwendung - {{Delphi}}}}&lt;br /&gt;
#* Für &#039;&#039;&#039;C++&#039;&#039;&#039;: Öffnen Sie {{Menu|Datei &amp;amp;gt; Neu &amp;amp;gt; Geräteübergreifende Anwendung - {{CBuilderUI}}}}&lt;br /&gt;
# Suchen Sie in der [[Tool-Palette|Tool-Palette]] die Komponente [[lib_de:REST.Backend.EMSProvider.TEMSProvider|TEMSProvider]], und ziehen Sie sie auf das [[lib_de:FMX.Forms.TForm|Formular]].&lt;br /&gt;
# Konfigurieren Sie im [[Objektinspektor|Objektinspektor]] die &#039;&#039;&#039;EMS-Serverparameter&#039;&#039;&#039; gemäß der &#039;&#039;&#039;[[Einrichten des EMS-Servers|EMS-Serverkonfiguration]]&#039;&#039;&#039;:&lt;br /&gt;
#* &#039;&#039;&#039;URLHost&#039;&#039;&#039;: &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt; &lt;br /&gt;
#* &#039;&#039;&#039;URLPort&#039;&#039;&#039;: &amp;lt;code&amp;gt;8080&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &#039;&#039;&#039;URLProtocol&#039;&#039;&#039;: &amp;lt;code&amp;gt;http&amp;lt;/code&amp;gt;&lt;br /&gt;
#:[[File:EMSServerConnection.png]]  &lt;br /&gt;
# Klicken Sie auf die Schaltfläche &#039;&#039;&#039;Verbindung testen&#039;&#039;&#039;. Wenn die Verbindung erfolgreich hergestellt werden konnte, wird eine Meldung mit der aktuellen Version des EMS-Servers angezeigt.&lt;br /&gt;
#:[[File:InfoVersionEMSServer.png]]&lt;br /&gt;
# Im [[Fenster des EMS-Servers|Fenster des EMS-Servers]] wird im Protokollbereich die Versionsanforderung angezeigt.&lt;br /&gt;
#:[[File:InfoVersionEMSServerLog.png]]&lt;br /&gt;
&lt;br /&gt;
==Aufrufen einer Methode eines Ressourcenendpunkts==&lt;br /&gt;
&lt;br /&gt;
Sie können anhand von REST-API-Aufrufen aus Ihrer EMS-Client-Anwendung die Ressourcenendpunkte des EMS-Servers aufrufen, um Daten abzurufen oder festzulegen.&lt;br /&gt;
&lt;br /&gt;
Verwenden Sie dazu entweder die Endpunktmethoden der [[EMS Administrative API|EMS Administrative API]] vom EMS-Server oder die [[Erweitern des EMS-Servers|benutzerdefinierten Ressourcenendpunkte]], die die Funktionalität des EMS-Servers erweitern.&lt;br /&gt;
&lt;br /&gt;
# Legen Sie in Ihrer &#039;&#039;&#039;EMS-Client-Anwendung&#039;&#039;&#039; eine &#039;&#039;&#039;[[lib_de:REST.Backend.EndPoint.TBackendEndpoint | TBackendEndpoint]]&#039;&#039;&#039;-Komponente auf dem Formular ab.&lt;br /&gt;
# Legen Sie im [[Objektinspektor|Objektinspektor]] zur Verwendung der EMS-Serverressource die folgenden Parameter des &#039;&#039;&#039;[[lib_de:REST.Backend.EndPoint.TBackendEndpoint | TBackendEndpoint]]&#039;&#039;&#039; fest:&lt;br /&gt;
#* &#039;&#039;&#039;Provider&#039;&#039;&#039;. Wählen Sie in der Dropdown-Liste den Namen der &#039;&#039;&#039;TEMSProvider&#039;&#039;&#039;-Komponente (&amp;lt;code&amp;gt;EMSProvider1&amp;lt;/code&amp;gt;) aus.&lt;br /&gt;
#* &#039;&#039;&#039;Resource&#039;&#039;&#039;: &amp;lt;code&amp;gt;Version&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &#039;&#039;&#039;ResourceSuffix&#039;&#039;&#039;: Belassen Sie dieses Feld für dieses Tutorial leer.&lt;br /&gt;
#* &#039;&#039;&#039;Method&#039;&#039;&#039;: &amp;lt;code&amp;gt;rmGET&amp;lt;/code&amp;gt; &lt;br /&gt;
#:[[File:TBackendEndpointConfiguration.png]]&lt;br /&gt;
# Wenn die Parameter ordnungsgemäß festgelegt sind, erhalten Sie beim Testen der Konfiguration der [[lib_de:REST.Backend.EndPoint.TBackendEndpoint | TBackendEndpoint]]-Komponente vom EMS-Server eine Erfolgsmeldung. Führen Sie eine der beiden Aktionen aus:&lt;br /&gt;
#* Klicken Sie im [[Objektinspektor|Objektinspektor]] auf &#039;&#039;&#039;Ausführen&#039;&#039;&#039;.&lt;br /&gt;
#* Klicken Sie mit der rechten Maustaste auf die Komponente [[lib_de: REST.Backend.EndPoint.TBackendEndpoint | TBackendEndpoint]], und wählen Sie &#039;&#039;&#039;Ausführen&#039;&#039;&#039; aus.&lt;br /&gt;
#:[[File:TBackendEndpointResponse.png]]&lt;br /&gt;
# Im Protokollbereich im [[Fenster des EMS-Servers|Fenster des EMS-Servers]] wird die Versionsanforderung angezeigt.&lt;br /&gt;
#:[[File:UsersGetEMSServerLog.png]]&lt;br /&gt;
&lt;br /&gt;
==Visuelles Binden Ihrer Daten==&lt;br /&gt;
&lt;br /&gt;
Sie können die Antwortdaten (vom EMS-Server) visuell an eine Komponente in Ihrer EMS-Client-Anwendung binden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;Öffnen Sie den [[LiveBindings-Designer|LiveBindings-Designer]], um die Antwortdaten für Ihre EMS-Client-Anwendung visuell zu binden. Wählen Sie {{Menu|Ansicht &amp;amp;gt; LiveBindings-Designer}}.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Klicken Sie im [[LiveBindings-Designer|LiveBindings-Designer]] mit der rechten Maustaste auf die Eigenschaft Response.JSONText der [[lib_de: REST.Backend.EndPoint.TBackendEndpoint | TBackendEndpoint]]-Komponente, und wählen Sie die Option &#039;&#039;&#039;Mit neuem Steuerelement verknüpfen&#039;&#039;&#039; aus, um die Antwort an eine neue [[lib_de:FMX.Memo.TMemo|TMemo]]-Komponente zu binden.&lt;br /&gt;
:[[File:EMSClientDesignView.png|600px]] [[File:EMSClientLiveBindingDesigner.png|600px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Ziehen Sie eine [[lib_de:FMX.StdCtrls.TLabel|TLabel]]-Komponente auf das Formular.&lt;br /&gt;
* Setzen Sie im [[Objektinspektor|Objektinspektor]] die Eigenschaft &#039;&#039;&#039;Text&#039;&#039;&#039; auf &amp;lt;code&amp;gt;EMS Server Version&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Legen Sie eine [[lib_de:FMX.StdCtrls.TButton|TButton]]-Komponente auf dem Formular ab.&lt;br /&gt;
* Setzen Sie im [[Objektinspektor|Objektinspektor]] die Eigenschaft &#039;&#039;&#039;Text&#039;&#039;&#039; auf &amp;lt;code&amp;gt;GetVersion&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Erstellen Sie das OnClick-Ereignis der TButton-Komponente (doppelklicken Sie darauf), und fügen Sie den folgenden Code hinzu:&lt;br /&gt;
&amp;lt;l s=&amp;quot;delphi&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;{{Delphi}}&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
    BackendEndpoint1.Execute;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;l e=&amp;quot;delphi&amp;quot; /&amp;gt;&amp;lt;l s=&amp;quot;cpp&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;C++&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void __fastcall TForm1::Button1Click(TObject *Sender)&lt;br /&gt;
{&lt;br /&gt;
    BackendEndpoint1-&amp;gt;Execute();&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;l e=&amp;quot;cpp&amp;quot; /&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Erzeugen Sie Ihre Anwendung, und führen Sie sie aus.&lt;br /&gt;
:[[File:EMSClientExecution.png|500px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[EMS-Server|EMS-Server]]&lt;br /&gt;
* [[Erweitern des EMS-Servers|Erweitern des EMS-Servers]]&lt;br /&gt;
* [[EMS Administrative API|EMS Administrative API‎]]&lt;br /&gt;
* [[Übersicht über EMS-Ressourcen|Übersicht über EMS-Ressourcen]]&lt;br /&gt;
* [[JSON|JSON]]&lt;br /&gt;
* [[Überblick zu REST]]&lt;br /&gt;
&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
[[Category:XE7]]&lt;br /&gt;
&lt;br /&gt;
[[en:Tutorial: Implementing Your First EMS Client Application]]&lt;br /&gt;
[[fr:Tutoriel : Implémentation de votre première application client EMS]]&lt;br /&gt;
[[ja:チュートリアル：初めての EMS クライアント アプリケーションを実装する]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=DBMS-Umgebungsberichte_(FireDAC)&amp;diff=172043</id>
		<title>DBMS-Umgebungsberichte (FireDAC)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=DBMS-Umgebungsberichte_(FireDAC)&amp;diff=172043"/>
		<updated>2014-09-18T07:17:26Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16453&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Debuggen und Support (FireDAC)}}&lt;br /&gt;
&lt;br /&gt;
In diesem Thema werden die verschiedenen &#039;&#039;&#039;FireDAC&#039;&#039;&#039;-Überprüfungs- und Berichtsoptionen in Datenbankmanagementsystemen (DBMS) erläutert. Diese &#039;&#039;&#039;FireDAC&#039;&#039;&#039;-Berichte stellen die Methoden zur Aufzeichnung aller notwendigen Details der Benutzerumgebung bereit, wodurch die vom Benutzer, Entwickler und Kundensupport benötigte Zeit zum Erkennen und Lösen von Problemen erheblich reduziert wird.&lt;br /&gt;
&lt;br /&gt;
Möglichkeiten von &#039;&#039;&#039;FireDAC&#039;&#039;&#039;:&lt;br /&gt;
* Verwenden von &#039;&#039;&#039;[[FDExplorer]]&#039;&#039;&#039; oder &#039;&#039;&#039;[[FDAdministrator]]&#039;&#039;&#039; – Erstellen eines Berichts über Ihre persistente Verbindungsdefinition.&lt;br /&gt;
* Verwenden des &#039;&#039;&#039;TFDConnection-Entwurfszeiteditors&#039;&#039;&#039; – Erstellen eines detaillierten Berichts über eine Verbindungsdefinition.&lt;br /&gt;
* Verwenden von &#039;&#039;&#039;Code&#039;&#039;&#039; – Integrieren von Berichtsfunktionen in Anwendungen mithilfe von {{Delphi}}-Code.&lt;br /&gt;
&lt;br /&gt;
DBMS-Anwendungen schlagen im Allgemeinen aus folgenden Gründen fehlt:&lt;br /&gt;
* Fehlende DBMS-Client-Bibliotheken.&lt;br /&gt;
* Falsche Version des DBMS-Clients, -Servers oder von beidem.&lt;br /&gt;
* Falsche Konfiguration der Verbindungsdefinition.&lt;br /&gt;
* Kompatibilitätsprobleme, wie Unicode-Unterstützung.&lt;br /&gt;
&lt;br /&gt;
Mit den Überprüfungs- und Berichtsoptionen von &#039;&#039;&#039;FireDAC&#039;&#039;&#039; können Sie die Ursache von Problemen schnell ermitteln.&lt;br /&gt;
&lt;br /&gt;
==Verwenden von FDExplorer==&lt;br /&gt;
&lt;br /&gt;
Das Hilfsprogramm &#039;&#039;&#039;[[FDExplorer]]&#039;&#039;&#039; ist das Haupttool zum Verwalten der zentralisierten persistenten Verbindungsdefinitionen.&lt;br /&gt;
&lt;br /&gt;
Führen Sie &#039;&#039;&#039;[[FDExplorer]]&#039;&#039;&#039; &amp;lt;!--entweder über das Delphi-IDE-Menü (&amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Tools &amp;amp;gt; FireDAC &amp;amp;gt; Explorer&#039;&#039;&#039;&amp;lt;/font&amp;gt;) oder das Startmenü von FireDAC aus--&amp;gt;, um einen detaillierten Bericht über Ihre persistente Verbindungsdefinition zu erstellen. Wählen Sie eine Verbindungsdefinition aus der Hierarchie auf der linken Seite aus. Klicken Sie rechts auf die Seite &#039;&#039;&#039;Info&#039;&#039;&#039;, um den detaillierten Umgebungsbericht für die Verbindung anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
Der Bericht enthält die folgenden Abschnitte:&lt;br /&gt;
* &#039;&#039;&#039;Connection definition parameters&#039;&#039;&#039; – alle Parameter der Verbindungsdefinition.&lt;br /&gt;
* &#039;&#039;&#039;FireDAC info&#039;&#039;&#039; – Einzelheiten über das FireDAC-Build.&lt;br /&gt;
* &#039;&#039;&#039;Client info&#039;&#039;&#039; – Informationen über die DBMS-Client-Software, falls diese ordnungsgemäß installiert ist, sodass sie von FireDAC geladen werden kann. Andernfalls erhalten Sie eine Fehlermeldung.&lt;br /&gt;
* &#039;&#039;&#039;Session info&#039;&#039;&#039; – Informationen über den DBMS-Server und die Benutzersitzung, falls FireDAC die Verbindung erfolgreich öffnen kann. Andernfalls erhalten Sie eine Fehlermeldung.&lt;br /&gt;
&lt;br /&gt;
Die folgende Abbildung zeigt den Bericht für eine SQLite-Verbindungsdefinition. In diesem Fall wurde die DBMS-Client-Software geladen, und die Verbindung wurde aktiviert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Reports1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Verwenden des TFDConnection-Entwurfszeiteditors==&lt;br /&gt;
Der Entwurfszeit-Editor der Komponente &#039;&#039;&#039;TFDConnection&#039;&#039;&#039; stellt die Umgebung zum Verwalten von temporären Verbindungsparametern dar. Doppelklicken Sie beim Entwurf auf eine beliebige TFDConnection-Komponente. Daraufhin wird vom FireDAC-Package das Dialogfeld &#039;&#039;&#039;Connection Editor&#039;&#039;&#039; angezeigt.&lt;br /&gt;
&lt;br /&gt;
Um einen detaillierten Bericht der Verbindungsdefinition anzuzeigen, wie weiter oben beschrieben, klicken Sie auf die Seite &#039;&#039;&#039;Info&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Wenn die &#039;&#039;&#039;TFDConnection&#039;&#039;&#039;-Komponente nicht verbunden ist, wird zum Abrufen der Serverdaten versucht, eine temporäre Verbindung zu einem DBMS herzustellen.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die folgende Abbildung zeigt den Ergebnisbericht.&lt;br /&gt;
&lt;br /&gt;
[[File:Reports2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--==Integrieren von Berichtsfunktionen in Anwendungen mithilfe von Delphi-Code==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FireDAC&#039;&#039;&#039; bietet verschiedene Möglichkeiten, um die DBMS-Laufzeitumgebungsinformationen in ein Projekt einzufügen.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Verwenden von {{Delphi}}-Code===&lt;br /&gt;
&lt;br /&gt;
Sie können den DBMS-Bericht direkt durch Aufruf der Methode [[lib_de:FireDAC.Comp.Client.TFDCustomConnection.GetInfoReport|TFDConnection.GetInfoReport]] starten:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
 procedure TMainForm.Button1Click(Sender: TObject);&lt;br /&gt;
 begin&lt;br /&gt;
   FDConnection1.GetInfoReport(mmInfo.Lines);&lt;br /&gt;
 end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Methode ist wie folgt deklariert:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
 procedure GetInfoReport(AList: TStrings; AItems: TFDInfoReportItems);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Werte des &amp;lt;code&amp;gt;AItems&amp;lt;/code&amp;gt;-Flags bedeuten Folgendes:&lt;br /&gt;
* &amp;lt;code&amp;gt;riConnDef&amp;lt;/code&amp;gt; – Verbindungsdefinitionsparameter in den Bericht einbeziehen.&lt;br /&gt;
* &amp;lt;code&amp;gt;riFireDAC&amp;lt;/code&amp;gt; – FireDAC-Build-Info in den Bericht einbeziehen.&lt;br /&gt;
* &amp;lt;code&amp;gt;riClientLog&amp;lt;/code&amp;gt; – Ladeprotokoll des DBMS-Clients einbeziehen.&lt;br /&gt;
* &amp;lt;code&amp;gt;riClient&amp;lt;/code&amp;gt; – DBMS-Client-Info in den Bericht einbeziehen.&lt;br /&gt;
* &amp;lt;code&amp;gt;riSessionHints&amp;lt;/code&amp;gt; – Potenzielle Inkompatibilitäten von FireDAC, DBMS-Client und Server einbeziehen.&lt;br /&gt;
* &amp;lt;code&amp;gt;riSession&amp;lt;/code&amp;gt; – DBMS-Sitzungs-Info in den Bericht einbeziehen.&lt;br /&gt;
* &amp;lt;code&amp;gt;riTryConnect&amp;lt;/code&amp;gt; – Verbindung zu einem DBMS versuchen, falls noch keine Verbindung besteht.&lt;br /&gt;
* &amp;lt;code&amp;gt;riKeepConnected&amp;lt;/code&amp;gt; – Wenn die Methode eine Verbindung hergestellt hat, diese Verbindung aktiv halten.&lt;br /&gt;
* &amp;lt;code&amp;gt;AList&amp;lt;/code&amp;gt; – Zielstringliste zum Anfügen an den Bericht.&lt;br /&gt;
&lt;br /&gt;
Siehe das Demoprojekt &amp;amp;lt;FireDAC&amp;amp;gt;\Samples\Comp Layer\TFDConnection\InfoReport.&lt;br /&gt;
&lt;br /&gt;
==Ermitteln der FireDAC-Build-Nummer==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie die FireDAC-Build-Nummer anzeigen möchten (z. B. im Dialogfeld &amp;quot;About&amp;quot;), verwenden Sie einfach &amp;lt;code&amp;gt;CONST C_FD_Version&amp;lt;/code&amp;gt; aus der Unit &#039;&#039;&#039;&amp;lt;code&amp;gt;FireDAC.Stan.Const&amp;lt;/code&amp;gt;&#039;&#039;&#039;. Beispiel:&lt;br /&gt;
&lt;br /&gt;
  C_FD_Version = &#039;8.0.5 (Build 3365)&#039;;&lt;br /&gt;
&lt;br /&gt;
==Ermitteln der DBMS-Version==&lt;br /&gt;
&lt;br /&gt;
Um die Versionsnummer des DBMS-Clients und/oder -Servers zu ermitteln (z. B., um eine Funktion in Ihrer Anwendung zu aktivieren oder zu deaktivieren), verwenden Sie die Komponente &#039;&#039;&#039;TFDConnection&#039;&#039;&#039; und öffnen die Verbindung. Verwenden Sie dann das folgende Codebeispiel, das zeigt, wie auf die physischen Metadaten zugegriffen wird:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
 procedure TMainForm.Button2Click(Sender: TObject);&lt;br /&gt;
 var&lt;br /&gt;
   oMetaIntf: IFDPhysConnectionMetadata;&lt;br /&gt;
 begin&lt;br /&gt;
   // Get client and server versions&lt;br /&gt;
   oMetaIntf := FDConnection1.ConnectionMetaDataIntf;&lt;br /&gt;
   try&lt;br /&gt;
     ShowMessage(Format(&#039;Client version: %.10d; Server version: %.10d&#039;,&lt;br /&gt;
       [oMetaIntf.ClientVersion, oMetaIntf.ServerVersion]));&lt;br /&gt;
   finally&lt;br /&gt;
     oMetaIntf:= nil; // always release the interface before you close the connection&lt;br /&gt;
   end;&lt;br /&gt;
 end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Unit &#039;&#039;&#039;&amp;lt;code&amp;gt;FireDAC.Stan.Const&amp;lt;/code&amp;gt;&#039;&#039;&#039; finden Sie viele vordefinierte DBMS-Versionsnummern:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;cvOracleXXX&#039;&#039;&#039; – für Oracle&lt;br /&gt;
* &#039;&#039;&#039;mvMySQLXXX&#039;&#039;&#039; – für MySQL&lt;br /&gt;
* &#039;&#039;&#039;svMSSQLXXX&#039;&#039;&#039; – für MSSQL&lt;br /&gt;
* &#039;&#039;&#039;svSQLiteXXX&#039;&#039;&#039; – für SQLite&lt;br /&gt;
* &#039;&#039;&#039;svPGSQLXXX&#039;&#039;&#039; – für PostgreSQL&lt;br /&gt;
* &#039;&#039;&#039;ivIBXXX&#039;&#039;&#039; – für InterBase&lt;br /&gt;
* &#039;&#039;&#039;ivFBXXX&#039;&#039;&#039; – für Firebird&lt;br /&gt;
&lt;br /&gt;
Die DBMS-Version wird in FireDAC durch einen LongWord-Wert dargestellt, der aus 5 Zifferngruppen besteht. Jede Gruppe umfasst 2 Ziffern (die äußerst linke Gruppe kann auch nur aus einer Ziffer bestehen).&lt;br /&gt;
&lt;br /&gt;
mvMySQL032321 = 0323210000 entspricht zum Beispiel 3.23.21.0.0. Dadurch wird ein direkter Vergleich einer Client- oder Serverversion mit einer Konstante ermöglicht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
 if oMetaIntf.ServerVersion &amp;gt;= mvMySQL050000 then begin&lt;br /&gt;
   // execute MySQL 5.0 or higher specific SQL&lt;br /&gt;
 end&lt;br /&gt;
 else begin&lt;br /&gt;
   // execute pre-MySQL 5.0 SQL&lt;br /&gt;
 end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Ablaufverfolgung und Überwachung (FireDAC)|Ablaufverfolgung und Überwachung]]&lt;br /&gt;
* [[FDExplorer]]&lt;br /&gt;
&lt;br /&gt;
==Beispiel==&lt;br /&gt;
* &amp;lt;FireDAC&amp;gt;\Samples\Comp Layer\TFDConnection\InfoReport&lt;br /&gt;
&lt;br /&gt;
[[Category:FireDAC]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:DBMS Environment Reports (FireDAC)]]&lt;br /&gt;
[[fr:Rapports d&#039;environnement SGBD (FireDAC)]]&lt;br /&gt;
[[ja:DBMS 環境レポート（FireDAC）]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Debuggen_und_Support_(FireDAC)&amp;diff=172042</id>
		<title>Debuggen und Support (FireDAC)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Debuggen_und_Support_(FireDAC)&amp;diff=172042"/>
		<updated>2014-09-18T07:15:59Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16453&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|FireDAC}}&lt;br /&gt;
In den folgenden Themen wird das Debuggen von FireDAC-Anwendungen beschrieben.&lt;br /&gt;
&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot; &lt;br /&gt;
! &#039;&#039;&#039;Thema&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Beschreibung&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot; |[[DBMS-Umgebungsberichte (FireDAC)|DBMS-Umgebungsberichte]]&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot; |In diesem Thema werden die verschiedenen FireDAC-Überprüfungs- und Berichtsoptionen in DBMS-Umgebungen erläutert. Derartige Berichte sind für den Kundensupport und das Entwicklungsteam äußerst wichtig.&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot; |[[Ablaufverfolgung und Überwachung (FireDAC)|Ablaufverfolgung und Überwachung]]&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot; | In diesem Thema werden die Ablaufverfolgungs- und Überwachungsmöglichkeiten von FireDAC beschrieben, aus denen sich das Haupttool zum Debuggen von FireDAC-Anwendungen zusammensetzt und die zeigen, wie Anwendungen mit Datenbanken kommunizieren.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
[[Category:FireDAC]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Debugging and Support (FireDAC)]]&lt;br /&gt;
[[fr:Débogage et support (FireDAC)]]&lt;br /&gt;
[[ja:デバッグとサポート（FireDAC）]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Fragen_zu_MS_Access_(FireDAC)&amp;diff=172028</id>
		<title>Fragen zu MS Access (FireDAC)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Fragen_zu_MS_Access_(FireDAC)&amp;diff=172028"/>
		<updated>2014-09-17T10:10:35Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16451&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|FAQ (FireDAC)}}&lt;br /&gt;
Dieses Thema enthält eine Liste mit Fragen und Antworten zu MS Access.&lt;br /&gt;
&lt;br /&gt;
==F1: Ich erhalte den Fehler &amp;quot;N Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.&amp;quot; Was bedeutet das?==&lt;br /&gt;
&lt;br /&gt;
A: Höchstwahrscheinlich verweist Ihre SELECT-Abfrage auf Spalten, die in der Tabelle nicht vorhanden sind.&lt;br /&gt;
&lt;br /&gt;
==F2: Ich kann [[lib_de:FireDAC.Phys.MSAcc.TFDPhysMSAccessDriverLink|TFDPhysMSAccessDriverLink]] in meiner Android-Datenbankanwendung nicht verwenden. Ich versuche, eine MS Access-Datenbank zu verwenden.==&lt;br /&gt;
&lt;br /&gt;
A: MS Access-Datenbankverbindungen werden nur unter Windows unterstützt, und es gibt keine MS Access-Unterstützung für Android oder iOS. &amp;lt;br /&amp;gt;&lt;br /&gt;
{{f|datasnap|Zurzeit unterstützt FireDAC auf Android nur InterBase-, SQLite- und DataSnap-Verbindungen.&lt;br /&gt;
|&lt;br /&gt;
Zurzeit unterstützt FireDAC auf Android nur InterBase und SQLite-Verbindungen.}} &lt;br /&gt;
&lt;br /&gt;
Weitere Informationen finden Sie unter:&lt;br /&gt;
* [[Komponenten (FireDAC)]]&lt;br /&gt;
* [[Datenbanken (FireDAC)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:FireDAC]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:MS Access Questions (FireDAC)]]&lt;br /&gt;
[[fr:Questions relatives à MS Access (FireDAC)]]&lt;br /&gt;
[[ja:Microsoft Access に関する質問（FireDAC）]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Einf%C3%BChrung_in_die_FireMonkey-Bibliothek&amp;diff=172025</id>
		<title>Einführung in die FireMonkey-Bibliothek</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Einf%C3%BChrung_in_die_FireMonkey-Bibliothek&amp;diff=172025"/>
		<updated>2014-09-17T09:55:29Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16451&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|FireMonkey-Anwendungshandbuch}}&lt;br /&gt;
&lt;br /&gt;
==FMX-Komponenten==&lt;br /&gt;
&lt;br /&gt;
Die {{FM}}-Komponentenbibliothek und die {{FM}}-Laufzeitbibliothek können in sechs Hauptzweige unterteilt werden:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{FM}}-Grundelemente&#039;&#039;&#039;, wie [[lib_de:FMX.Objects.TLine|TLine]] und [[lib_de:FMX.Objects.TText|TText]], sind von [[lib_de:FMX.Objects.TShape|TShape]] abgeleitet.&lt;br /&gt;
* &#039;&#039;&#039;Mit Stilen versehene {{FM}}-Steuerelemente&#039;&#039;&#039;, wie [[lib_de:FMX.StdCtrls.TPanel|TPanel]] und [[lib_de:FMX.StdCtrls.TToolBar|TToolbar]], sind von [[lib_de:FMX.Controls.TStyledControl|TStyledControl]] abgeleitet.&lt;br /&gt;
* &#039;&#039;&#039;{{FM}}-3D-Steuerelemente&#039;&#039;&#039;, wie [[lib_de:FMX.Controls3D.TCamera|TCamera]], [[lib_de:FMX.Objects3D.TMesh|TMesh]] und [[lib_de:FMX.Objects3D.TShape3D|TShape3D]], sind von [[lib_de:FMX.Controls3D.TControl3D|TControl3D]] abgeleitet.&lt;br /&gt;
*&#039;&#039;&#039;Nicht streambare Klassen&#039;&#039;&#039;, wie [[lib_de:System.Classes.TList|TList]] und [[lib_de:System.Classes.TThread|TThread]], sind von [[lib_de:System.TObject|TObject]] abgeleitet. &lt;br /&gt;
*:Diese Klassen sind Teil der [[Verwenden der RTL (Laufzeitbibliothek)|RTL]].&lt;br /&gt;
*&#039;&#039;&#039;Streambare Klassen&#039;&#039;&#039;, wie [[lib_de:FMX.Graphics.TGradient|TGradient]] und [[lib_de:System.Classes.TStrings|TStrings]], sind von [[lib_de:System.Classes.TPersistent|TPersistent]] abgeleitet.&lt;br /&gt;
*:Diese Klassen sind Teil der [[Verwenden der RTL (Laufzeitbibliothek)|RTL]].{{f|datasnap|&lt;br /&gt;
*&#039;&#039;&#039;Nicht visuelle Datenbankkomponenten&#039;&#039;&#039;, wie [[lib_de:Datasnap.DBClient.TClientDataSet|TClientDataSet]] und [[lib_de:Data.Bind.DBScope.TBindScopeDB|TBindScopeDB]], sind von [[lib_de:System.Classes.TComponent|TComponent]] abgeleitet.&lt;br /&gt;
*:Diese Komponenten sind zur Entwurfszeit, aber nicht zur Laufzeit sichtbar. }}&lt;br /&gt;
&lt;br /&gt;
==[[lib_de:FMX|Liste der FMX-Units]]==&lt;br /&gt;
&lt;br /&gt;
Eine vollständige Liste der FMX-Units, die die {{FM}}-Bibliothek bilden, finden Sie unter &#039;&#039;&#039;[[lib_de:FMX|FMX-Unit-Liste]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[FireMonkey-Anwendungsdesign|FireMonkey-Anwendungsdesign]]&lt;br /&gt;
* [[FireMonkey-Komponentenbibliothek|FireMonkey-Komponentenbibliothek]] (mit Diagrammen)&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Einfuhrung in die FireMonkey-Bibliothek}}&lt;br /&gt;
[[Category:XE2]]&lt;br /&gt;
[[Category:FMX]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Introducing the FireMonkey Library]]&lt;br /&gt;
[[fr:Introduction à la bibliothèque FireMonkey]]&lt;br /&gt;
[[ja:FireMonkey ライブラリの導入]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Serialisieren_von_Benutzerobjekten&amp;diff=171839</id>
		<title>Serialisieren von Benutzerobjekten</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Serialisieren_von_Benutzerobjekten&amp;diff=171839"/>
		<updated>2014-09-05T10:27:47Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16310&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|DataSnap-Anwendungen entwickeln}}&lt;br /&gt;
&lt;br /&gt;
Es ist jetzt möglich, mit JSON-Objekten benutzerdefinierte Objekte zwischen Client- und Servermethoden zu übergeben.&lt;br /&gt;
&lt;br /&gt;
Das Paradigma basiert auf dem Marshaling von Benutzerobjekten in JSON-Objekte und dann auf der Gegenseite zurück in Benutzerobjekte. DataSnap stellt in der Unit &#039;&#039;DBXJSONReflect&#039;&#039; mit der Klasse [[lib_de:Data.DBXJSONReflect.TTypeMarshaller|TTypeMarshaller]] eine generische Serialisierungsfolge bereit. Benutzerobjekte können auf Basis einer Reihe von [[lib_de:Data.DBXJSONReflect.TConverter|Konverter]]- und [[lib_de:Data.DBXJSONReflect.TReverterEvent|Reverter]]-Klassen in eine äquivalente Repräsentation und dann zurück in Benutzerinstanzen umgewandelt werden.&lt;br /&gt;
&lt;br /&gt;
[[lib_de:Data.DBXJSONReflect.TJSONMarshal|TJSONMarshal]] und [[lib_de:Data.DBXJSONReflect.TJSONUnMarshal|TJSONUnMarshal]] sind zwei Implementierungen der Serialisierung auf Basis von JSON-Objekten: Benutzerobjekte werden in äquivalente JSON-Objekte und diese wieder zurück in Benutzerobjekte umgewandelt.&lt;br /&gt;
&lt;br /&gt;
Nicht alle benutzerdefinierten Objekte können nur auf Basis von Marshaling-Klassen serialisiert werden. Sie müssen eventuell mit benutzerdefinierten Konvertern für über RTTI nicht korrekt serialisierbare Benutzerfelder erweitert werden. Eine Konvertierung kann einem Typ oder einem Feld der Benutzerklasse zugeordnet werden. Es gibt vier Konvertertypen für jede Kategorie, die in der folgenden Tabelle aufgeführt sind:&lt;br /&gt;
&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot; cellpadding=&amp;quot;5&amp;quot; &lt;br /&gt;
! Beschreibung &lt;br /&gt;
! Feld &lt;br /&gt;
! Typ&lt;br /&gt;
|- &lt;br /&gt;
| Konvertierung in einen String&lt;br /&gt;
| [[lib_de:Data.DBXJSONReflect.TStringConverter|TStringConverter]]&lt;br /&gt;
| [[lib_de:Data.DBXJSONReflect.TTypeStringConverter|TTypeStringConverter]]&lt;br /&gt;
|- &lt;br /&gt;
| Konvertierung in ein Objekt&lt;br /&gt;
| [[lib_de:Data.DBXJSONReflect.TObjectConverter|TObjectConverter]]&lt;br /&gt;
| [[lib_de:Data.DBXJSONReflect.TTypeObjectConverter|TTypeObjectConverter]]&lt;br /&gt;
|- &lt;br /&gt;
| Konvertierung in ein String-Array&lt;br /&gt;
| [[lib_de:Data.DBXJSONReflect.TStringsConverter|TStringsConverter]]&lt;br /&gt;
| [[lib_de:Data.DBXJSONReflect.TTypeStringsConverter|TTypeStringsConverter]]&lt;br /&gt;
|- &lt;br /&gt;
| Konvertierung in ein Objekt-Array&lt;br /&gt;
| [[lib_de:Data.DBXJSONReflect.TObjectsConverter|TObjectsConverter]]&lt;br /&gt;
| [[lib_de:Data.DBXJSONReflect.TTypeObjectsConverter|TTypeObjectsConverter]]&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
Das Konverter/Reverter-Prinzip basiert auf der Datenumwandlung in eine Repräsentation, aus der die Instanz wiederhergestellt werden kann. Sie können zwischen der Konvertierung einer komplexen Datenstruktur in einen einfachen String, der zerlegt und wieder zurückkonvertiert werden kann, oder einem komplizierteren aber effizienteren Verfahren auswählen. Angenommen, eine Objektkollektion soll serialisiert werden. Eine Möglichkeit dazu wäre, jedes Element in einen String umzuwandeln und alle Strings mit einem eindeutigen Trennzeichen zu verketten. Ein effizienterer Weg ist die Konvertierung der Kollektion in ein Objekt-Array. Der Reverter erhält dieses Array als Eingabe und kann die komplexe Kollektion wiederherstellen.&lt;br /&gt;
&lt;br /&gt;
Das Codebeispiel auf dieser Seite wurde zum leichteren Verständnis in Blöcke unterteilt. Das Beispiel ist Teil eines {{Product}-Bibliothek-Projekts, das Sie erstellen müssen, damit das Beispiel ausgeführt werden kann, und Sie Ergebnisse sehen können. Der Code auf dieser Seite sollte im selben Quellcode (.pas-Datei) wie das Hauptformular des Projekts enthalten sein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Delphi&amp;quot;&amp;gt;&lt;br /&gt;
 {$R *.res}&lt;br /&gt;
 &lt;br /&gt;
 uses&lt;br /&gt;
   SysUtils, Classes,JSON,DBXJSON, DBXJSONReflect;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das folgende Codebeispiel zum Serialisieren von benutzerdefinierten Typen veranschaulicht dieses Vorgehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Delphi&amp;quot;&amp;gt;&lt;br /&gt;
 type&lt;br /&gt;
 TForm1 = class(TForm)&lt;br /&gt;
 Memo1: TMemo;&lt;br /&gt;
 Button1: TButton;&lt;br /&gt;
 procedure Button1Click(Sender: TObject);&lt;br /&gt;
 procedure MainProc;&lt;br /&gt;
&lt;br /&gt;
 private&lt;br /&gt;
  { Private declarations }&lt;br /&gt;
 public&lt;br /&gt;
  { Public declarations }&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
   TAddress = record&lt;br /&gt;
     FStreet: String;&lt;br /&gt;
     FCity: String;&lt;br /&gt;
     FCode: String;&lt;br /&gt;
     FCountry: String;&lt;br /&gt;
     FDescription: TStringList;&lt;br /&gt;
   end;&lt;br /&gt;
 &lt;br /&gt;
   TPerson = class&lt;br /&gt;
   private&lt;br /&gt;
     FName: string;&lt;br /&gt;
     FHeight: integer;&lt;br /&gt;
     FAddress: TAddress;&lt;br /&gt;
     FSex: char;&lt;br /&gt;
     FRetired: boolean;&lt;br /&gt;
     FChildren: array of TPerson;&lt;br /&gt;
     FNumbers: set of 1..10;&lt;br /&gt;
   public&lt;br /&gt;
     constructor Create;&lt;br /&gt;
     destructor Destroy; override;&lt;br /&gt;
 &lt;br /&gt;
     procedure AddChild(kid: TPerson);&lt;br /&gt;
   end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dem Beispiel werden die folgenden Variablen verwendet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Delphi&amp;quot;&amp;gt;&lt;br /&gt;
 var&lt;br /&gt;
   m: TJSONMarshal;&lt;br /&gt;
   unm: TJSONUnMarshal;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Deklarationen der &#039;&#039;TPerson&#039;&#039;-Klassen-Member:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Delphi&amp;quot;&amp;gt;&lt;br /&gt;
 constructor TPerson.Create;&lt;br /&gt;
 begin&lt;br /&gt;
   inherited;&lt;br /&gt;
   FAddress.FDescription := TStringList.Create;&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 destructor TPerson.Destroy;&lt;br /&gt;
 begin&lt;br /&gt;
   &lt;br /&gt;
   FAddress.FDescription.Free;&lt;br /&gt;
  inherited;&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 procedure TPerson.AddChild(kid: TPerson);&lt;br /&gt;
 begin&lt;br /&gt;
   SetLength(FChildren, Length(FChildren) + 1);&lt;br /&gt;
   FChildren[Length(FChildren) - 1] := kid;&lt;br /&gt;
 end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Beispiel enthält komplexe Kollektionstypen ([[lib_de:System.Classes.TStringList|TStringList]]), Mengen, Arrays und Records. &#039;&#039;FNumbers&#039;&#039; soll ein transientes Feld (Vorgabe für Mengen) sein.&lt;br /&gt;
&lt;br /&gt;
Die Hauptprogrammprozedur:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Delphi&amp;quot;&amp;gt;&lt;br /&gt;
 procedure TForm1.MainProc;&lt;br /&gt;
 var&lt;br /&gt;
   person,newperson: TPerson;&lt;br /&gt;
   kid: TPerson;&lt;br /&gt;
   JSONString: String;&lt;br /&gt;
 &lt;br /&gt;
 begin&lt;br /&gt;
   m := TJSONMarshal.Create(TJSONConverter.Create);&lt;br /&gt;
   unm := TJSONUnMarshal.Create;&lt;br /&gt;
 &lt;br /&gt;
   { For each complex field type, we will define a converter/reverter pair. We will individually deal&lt;br /&gt;
     with the &amp;quot;FChildren&amp;quot; array, the &amp;quot;TStringList&amp;quot; type, and the &amp;quot;FAddress&amp;quot; record. We will transform&lt;br /&gt;
     the array type into an actual array of &amp;quot;TPerson&amp;quot;, as illustrated below. }&lt;br /&gt;
 &lt;br /&gt;
   m.RegisterConverter(TPerson, &#039;FChildren&#039;, function(Data: TObject; Field: String): TListOfObjects&lt;br /&gt;
   var&lt;br /&gt;
     obj: TPerson;&lt;br /&gt;
     I: Integer;&lt;br /&gt;
 &lt;br /&gt;
   begin&lt;br /&gt;
     SetLength(Result, Length(TPerson(Data).FChildren));&lt;br /&gt;
     I := Low(Result);&lt;br /&gt;
     for obj in TPerson(Data).FChildren do&lt;br /&gt;
     begin&lt;br /&gt;
       Result[I] := obj;&lt;br /&gt;
       Inc(I);&lt;br /&gt;
     end;&lt;br /&gt;
   end);&lt;br /&gt;
 &lt;br /&gt;
   { The implementation is quite straightforward: each child &amp;quot;TPerson&amp;quot; is appended to a predefined&lt;br /&gt;
     type instance &amp;quot;TListOfObjects&amp;quot;. Later on, each of these objects will be serialized by the same&lt;br /&gt;
     marshaller and added to a &amp;quot;TJSONArray&amp;quot; instance. The reverter will receive as argument a&lt;br /&gt;
     &amp;quot;TListOfObjects&amp;quot; being oblivious of the &amp;quot;TJSONArray&amp;quot; used for that. }&lt;br /&gt;
 &lt;br /&gt;
   { For &amp;quot;TStringList&amp;quot;, we will have a generic converter that can be reused for other marshal instances.&lt;br /&gt;
     The converter simply returns the array of strings of the list. }&lt;br /&gt;
 &lt;br /&gt;
   { Note that this converter is not really needed here because the TStringList converter is already&lt;br /&gt;
     implemented in the Marshaller. }&lt;br /&gt;
 &lt;br /&gt;
   m.RegisterConverter(TStringList, function(Data: TObject): TListOfStrings&lt;br /&gt;
   var&lt;br /&gt;
     i, count: integer;&lt;br /&gt;
 &lt;br /&gt;
   begin&lt;br /&gt;
     count := TStringList(Data).Count;&lt;br /&gt;
     SetLength(Result, count);&lt;br /&gt;
     for I := 0 to count - 1 do&lt;br /&gt;
       Result[i] := TStringList(Data)[i];&lt;br /&gt;
   end);&lt;br /&gt;
 &lt;br /&gt;
   { Finally, the address record will be transformed into an array of strings, one for each record&lt;br /&gt;
     field with the description content at the end of it. }&lt;br /&gt;
 &lt;br /&gt;
   m.RegisterConverter(TPerson, &#039;FAddress&#039;, function(Data: TObject; Field: String): TListOfStrings&lt;br /&gt;
   var&lt;br /&gt;
     Person: TPerson;&lt;br /&gt;
     I: Integer;&lt;br /&gt;
     Count: Integer;&lt;br /&gt;
 &lt;br /&gt;
   begin&lt;br /&gt;
     Person := TPerson(Data);&lt;br /&gt;
     if Person.FAddress.FDescription &amp;lt;&amp;gt; nil then&lt;br /&gt;
       Count := Person.FAddress.FDescription.Count&lt;br /&gt;
     else&lt;br /&gt;
       Count := 0;&lt;br /&gt;
     SetLength(Result, Count + 4);&lt;br /&gt;
     Result[0] := Person.FAddress.FStreet;&lt;br /&gt;
     Result[1] := Person.FAddress.FCity;&lt;br /&gt;
     Result[2] := Person.FAddress.FCode;&lt;br /&gt;
     Result[3] := Person.FAddress.FCountry;&lt;br /&gt;
     for I := 0 to Count - 1 do&lt;br /&gt;
       Result[4+I] := Person.FAddress.FDescription[I];&lt;br /&gt;
   end);&lt;br /&gt;
 &lt;br /&gt;
   { It is easy to imagine the reverter&#039;s implementation, present below in bulk. }&lt;br /&gt;
 &lt;br /&gt;
   unm.RegisterReverter(TPerson, &#039;FChildren&#039;, procedure(Data: TObject; Field: String; Args: TListOfObjects)&lt;br /&gt;
   var&lt;br /&gt;
     obj: TObject;&lt;br /&gt;
     I: Integer;&lt;br /&gt;
 &lt;br /&gt;
   begin&lt;br /&gt;
     SetLength(TPerson(Data).FChildren, Length(Args));&lt;br /&gt;
     I := Low(TPerson(Data).FChildren);&lt;br /&gt;
     for obj in Args do&lt;br /&gt;
     begin&lt;br /&gt;
       TPerson(Data).FChildren[I] := TPerson(obj);&lt;br /&gt;
       Inc(I);&lt;br /&gt;
     end&lt;br /&gt;
   end);&lt;br /&gt;
 &lt;br /&gt;
   { Note that this reverter is not really needed here because the TStringList reverter is already&lt;br /&gt;
     implemented in the Unmarshaller. }&lt;br /&gt;
 &lt;br /&gt;
   unm.RegisterReverter(TStringList, function(Data: TListOfStrings): TObject&lt;br /&gt;
   var&lt;br /&gt;
     StrList: TStringList;&lt;br /&gt;
     Str: string;&lt;br /&gt;
 &lt;br /&gt;
   begin&lt;br /&gt;
     StrList := TStringList.Create;&lt;br /&gt;
     for Str in Data do&lt;br /&gt;
       StrList.Add(Str);&lt;br /&gt;
     Result := StrList;&lt;br /&gt;
   end);&lt;br /&gt;
 &lt;br /&gt;
   unm.RegisterReverter(TPerson, &#039;FAddress&#039;, procedure(Data: TObject; Field: String; Args: TListOfStrings)&lt;br /&gt;
   var&lt;br /&gt;
     Person: TPerson;&lt;br /&gt;
     I: Integer;&lt;br /&gt;
 &lt;br /&gt;
   begin&lt;br /&gt;
     Person := TPerson(Data);&lt;br /&gt;
     if Person.FAddress.FDescription &amp;lt;&amp;gt; nil then&lt;br /&gt;
       Person.FAddress.FDescription.Clear&lt;br /&gt;
     else if Length(Args) &amp;gt; 4 then&lt;br /&gt;
       Person.FAddress.FDescription := TStringList.Create;&lt;br /&gt;
 &lt;br /&gt;
     Person.FAddress.FStreet := Args[0];&lt;br /&gt;
     Person.FAddress.FCity := Args[1];&lt;br /&gt;
     Person.FAddress.FCode := Args[2];&lt;br /&gt;
     Person.FAddress.FCountry := args[3];&lt;br /&gt;
     for I := 4 to Length(Args) - 1 do&lt;br /&gt;
       Person.FAddress.FDescription.Add(Args[I]);&lt;br /&gt;
   end);&lt;br /&gt;
 &lt;br /&gt;
   { The test code is as follows. }&lt;br /&gt;
 &lt;br /&gt;
   person := TPerson.Create;&lt;br /&gt;
   person.FName := &#039;John Doe&#039;;&lt;br /&gt;
   person.FHeight := 167;&lt;br /&gt;
   person.FSex := &#039;M&#039;;&lt;br /&gt;
   person.FRetired := false;&lt;br /&gt;
   person.FAddress.FStreet := &#039;62 Peter St&#039;;&lt;br /&gt;
   person.FAddress.FCity := &#039;TO&#039;;&lt;br /&gt;
   person.FAddress.FCode := &#039;1334566&#039;;&lt;br /&gt;
   person.FAddress.FDescription.Add(&#039;Driving directions: exit 84 on highway 66&#039;);&lt;br /&gt;
   person.FAddress.FDescription.Add(&#039;Entry code: 31415&#039;);&lt;br /&gt;
 &lt;br /&gt;
   kid := TPerson.Create;&lt;br /&gt;
   kid.FName := &#039;Jane Doe&#039;;&lt;br /&gt;
   person.AddChild(kid);&lt;br /&gt;
 &lt;br /&gt;
   { Marshal the &amp;quot;person&amp;quot; as a JSONValue and display its contents. }&lt;br /&gt;
 &lt;br /&gt;
   JSONString := m.Marshal(person).ToString;&lt;br /&gt;
   Memo1.Lines.Clear;&lt;br /&gt;
   Memo1.Lines.Add(JSONString);&lt;br /&gt;
   Memo1.Lines.Add(&#039;-----------------------&#039;);&lt;br /&gt;
 &lt;br /&gt;
   { Unmarshal the JSONString to a TPerson class }&lt;br /&gt;
 &lt;br /&gt;
   newperson := unm.Unmarshal(TJSONObject.ParseJSONValue(JSONString)) as TPerson;&lt;br /&gt;
   Memo1.Lines.Add(newperson.FName);&lt;br /&gt;
   Memo1.Lines.Add(IntToStr(newperson.FHeight));&lt;br /&gt;
 &lt;br /&gt;
   { and so on for the other fields }&lt;br /&gt;
 end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und die Schaltfläche zum Aufrufen von &#039;&#039;&#039;MainProc&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Delphi&amp;quot;&amp;gt;&lt;br /&gt;
 procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;
 begin&lt;br /&gt;
   MainProc;&lt;br /&gt;
 end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die JSON-Zwischenrepräsentation für den Testcode in dem obigen Codebeispiel lautet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 {&amp;quot;type&amp;quot;:&amp;quot;Converter.TPerson&amp;quot;,&lt;br /&gt;
  &amp;quot;id&amp;quot;:1,&lt;br /&gt;
  &amp;quot;fields&amp;quot;:{&amp;quot;FName&amp;quot;:&amp;quot;John Doe&amp;quot;,&lt;br /&gt;
            &amp;quot;FHeight&amp;quot;:167,&lt;br /&gt;
            &amp;quot;FAddress&amp;quot;:[&amp;quot;62 Peter St&amp;quot;,&amp;quot;TO&amp;quot;,&amp;quot;1334566&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;Driving directions: exit 84 on highway 66&amp;quot;,&amp;quot;Entry code: 31415&amp;quot;],&lt;br /&gt;
            &amp;quot;FSex&amp;quot;:&amp;quot;M&amp;quot;,&lt;br /&gt;
            &amp;quot;FRetired&amp;quot;:false,&lt;br /&gt;
            &amp;quot;FChildren&amp;quot;:[{&amp;quot;type&amp;quot;:&amp;quot;Converter.TPerson&amp;quot;,&lt;br /&gt;
                          &amp;quot;id&amp;quot;:2,&lt;br /&gt;
                          &amp;quot;fields&amp;quot;:{&amp;quot;FName&amp;quot;:&amp;quot;Jane Doe&amp;quot;,&lt;br /&gt;
                                    &amp;quot;FHeight&amp;quot;:0,&lt;br /&gt;
                                    &amp;quot;FAddress&amp;quot;:[&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;],&lt;br /&gt;
                                    &amp;quot;FSex&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
                                    &amp;quot;FRetired&amp;quot;:false,&lt;br /&gt;
                                    &amp;quot;FChildren&amp;quot;:[]&lt;br /&gt;
                                   }&lt;br /&gt;
                         }&lt;br /&gt;
                        ]&lt;br /&gt;
           }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Erfolg der Serialisierung kann durch Sicherstellung, dass alle Felder serialisiert wurden, überprüft werden. Dazu wird Marshal-Methode &#039;&#039;HasWarnings&#039;&#039; überprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die Serialisierung löst zirkuläre Referenzen auf.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[lib_de:Data.DBXJSONReflect.TTypeMarshaller|TTypeMarshaller]]&lt;br /&gt;
* [[lib_de:Data.DBXJSONReflect.TConverter|TConverter]]&lt;br /&gt;
* [[lib_de:Data.DBXJSONReflect.TReverterEvent|TReverterEvent]]&lt;br /&gt;
* [[lib_de:Data.DBXJSONReflect.TJSONMarshal|TJSONMarshal]]&lt;br /&gt;
* [[lib_de:Data.DBXJSONReflect.TJSONUnMarshal|TJSONUnMarshal]]&lt;br /&gt;
* [[lib_de:Data.DBXJSONReflect.TMarshalUnmarshalBase.HasWarnings|HasWarnings]]&lt;br /&gt;
&lt;br /&gt;
[[Category:{{Delphi}}]]&lt;br /&gt;
[[Category:DataSnap-Referenz]]&lt;br /&gt;
&lt;br /&gt;
[[en:Serializing User Objects]]&lt;br /&gt;
[[fr:Sérialisation des objets utilisateur]]&lt;br /&gt;
[[ja:ユーザー オブジェクトのシリアル化]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Codeintensive_REST-Callback-Funktionen&amp;diff=171838</id>
		<title>Codeintensive REST-Callback-Funktionen</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Codeintensive_REST-Callback-Funktionen&amp;diff=171838"/>
		<updated>2014-09-05T10:27:11Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16310&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|DataSnap-REST}}&lt;br /&gt;
&lt;br /&gt;
Mit Heavyweight-Callback-Funktionen können Sie von einer Webseite aus JavaScript-Funktionen beim Server registrieren und durch Angabe der ID des Empfangskanals festlegen, bei welcher Bedingung sie benachrichtigt werden sollen. Dies ermöglicht einem schlanken Client fast unverzüglich Benachrichtigungen vom Server zu erhalten, ohne dass ständig Anfragen gesendet werden müssten, um Änderungen festzustellen.&lt;br /&gt;
&lt;br /&gt;
Für diese Benachrichtigungen vom Server müssen Sie zunächst die Serverkomponente und alle Serverklassenkomponenten in ein Datenmodulformular verschieben (oder an eine andere Position – außerhalb des Webmoduls –, wo diese Komponenten nur eine einzelne Instanz erstellen). Der Server hat Sende- und Benachrichtigungsfunktionen, die eine Kanal-ID und ein TJSONValue-&amp;quot;message&amp;quot;-Objekt übernehmen. Für die Benachrichtigung sind zusätzliche Parameter zum Festlegen der genauen Client-Callback-Funktion, an die die Meldung gesendet werden soll, erforderlich. Wenn Sie jedes Mal, wenn eine Memo-Komponente geändert wird, eine Meldung senden möchten, fügen Sie ein Ereignis für die Bearbeitung dieser Komponente hinzu und geben Folgendes in das Ereignis ein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 Val := TJSONString.Create(Memo1.Text);&lt;br /&gt;
 [DSServer].BroadcastMessage(&#039;MemoChannel&#039;, Val); //&#039;MemoChannel&#039; can be replaced by anything&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fügen Sie dann im Client-Code ein Formular mit einem Textbereich mit der ID &amp;quot;tarea&amp;quot; (oder ähnlich) ein, fügen Sie diesen JavaScript-Code hinzu, und stellen Sie sicher, dass der Code ausgeführt wird (beim Übertragen, beim Laden der Seite usw.):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 var channel = new ClientChannel(null, &amp;quot;MemoChannel&amp;quot;); //this matches the server&#039;s Channel ID&lt;br /&gt;
 var callback = new ClientCallback(channel, null,&lt;br /&gt;
   function(jsonValue) {&lt;br /&gt;
     if (jsonValue != null) {&lt;br /&gt;
       document.getElementById(&amp;quot;tarea&amp;quot;).value = jsonValue;&lt;br /&gt;
     }&lt;br /&gt;
     return true;&lt;br /&gt;
 });&lt;br /&gt;
 channel.connect(callback);&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beispielcode erstellt einen Textbereich in Ihrem Webbrowser, der immer mit dem in der Memo-Komponente auf dem Server eingegebenen Text synchron ist.&lt;br /&gt;
&lt;br /&gt;
In XE2 kann jetzt für JavaScript REST-Callbacks zusätzlich zu dem &#039;&#039;&#039;ServerChannelName&#039;&#039;&#039; des Kanals eine Liste mit zu überwachenden &#039;&#039;&#039;ServerChannelNames&#039;&#039;&#039; angegeben werden. Für den &#039;&#039;&#039;ClientCallback&#039;&#039;&#039;-Konstruktor steht ein optionaler Abschlussparameter zur Verfügung, der ein JSON-Array mit Kanalnamen angibt. Dieser Parameter kann auf ein leeres Array oder auf &#039;&#039;&#039;null&#039;&#039;&#039; gesetzt werden, wenn Sie keine weiteren zu überwachenden Kanalnamen angeben wollen.&lt;br /&gt;
&lt;br /&gt;
Dies ist wegen des von Browsern vorgeschriebenen Verbindungslimits besonders für JavaScript notwendig. Sie können ähnliches Verhalten anhand von Namenskonventionen für die Callback-IDs aller Clients simulieren. Der Server (nicht aber der Client) kann dann einen bestimmten Kanal UND eine Callback-ID weiterleiten. Das entspricht weitgehend Callbacks, die ihren eigenen Kanal überwachen. Es wird jedoch verhindert, dass Clients mehrere Callbacks auf demselben Kanal überwachen müssen. Zudem wird der Server eingeschränkt, da er den &#039;&#039;&#039;übergeordneten Kanal&#039;&#039;&#039; angeben muss.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[DataSnap-REST]]&lt;br /&gt;
&lt;br /&gt;
[[Category:{{Delphi}}]]&lt;br /&gt;
[[Category:DataSnap-Referenz]]&lt;br /&gt;
&lt;br /&gt;
[[en:REST Heavyweight Callbacks]]&lt;br /&gt;
[[fr:Rappels avancés REST]]&lt;br /&gt;
[[ja:REST 重量コールバック]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_6_-_Hinzuf%C3%BCgen_von_Eigenschaften_zum_%C3%84ndern_des_Erscheinungsbildes_der_Komponente&amp;diff=171504</id>
		<title>Schritt 6 - Hinzufügen von Eigenschaften zum Ändern des Erscheinungsbildes der Komponente</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_6_-_Hinzuf%C3%BCgen_von_Eigenschaften_zum_%C3%84ndern_des_Erscheinungsbildes_der_Komponente&amp;diff=171504"/>
		<updated>2014-08-28T11:57:39Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|Erstellen eines grundlegenden FireMonkey-Steuerelements}}&lt;br /&gt;
Sie können die &#039;&#039;&#039;TRegularPolygon&#039;&#039;&#039;-Komponente erweitern und Änderungen ihres Erscheinungsbildes ermöglichen. Sie können beispielsweise die Hintergrundfarbe ändern.&lt;br /&gt;
&lt;br /&gt;
Andere grundlegende {{FM}}-Komponenten verfügen typischerweise über die folgenden &#039;&#039;&#039;Eigenschaften für das Erscheinungsbild&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;Fill&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Stroke&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;StrokeCap&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;StrokeDash&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;StrokeJoin&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;StrokeThickness&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit Sie diese Eigenschaften verwenden können, müssen Sie sie als published-Eigenschaften erneut einführen.&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Interface&#039;&#039;&#039;-Abschnitt der &#039;&#039;&#039;TRegularPolygon&#039;&#039;&#039;-Komponente sollte folgendermaßen aussehen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
type&lt;br /&gt;
   TRegularPolygon = class(TShape)&lt;br /&gt;
   private&lt;br /&gt;
     { Private declarations }&lt;br /&gt;
     FNumberOfSides: Integer;&lt;br /&gt;
     FPath: TPathData;&lt;br /&gt;
     procedure SetNumberOfSides(const Value: Integer);&lt;br /&gt;
   protected&lt;br /&gt;
     { Protected declarations }&lt;br /&gt;
     procedure CreatePath;&lt;br /&gt;
     procedure Paint; override;&lt;br /&gt;
   public&lt;br /&gt;
     { Public declarations }&lt;br /&gt;
     constructor Create(AOwner: TComponent); override;&lt;br /&gt;
     destructor Destroy; override;&lt;br /&gt;
     function PointInObject(X, Y: Single): Boolean; override;&lt;br /&gt;
   published&lt;br /&gt;
     { Published declarations }&lt;br /&gt;
     property NumberOfSides: Integer read FNumberOfSides write SetNumberOfSides;&lt;br /&gt;
     property Fill;&lt;br /&gt;
     property Stroke;&lt;br /&gt;
     property StrokeCap;&lt;br /&gt;
     property StrokeDash;&lt;br /&gt;
     property StrokeJoin;&lt;br /&gt;
     property StrokeThickness;&lt;br /&gt;
   end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Erzeugen und installieren Sie das Package im &#039;&#039;&#039;Projektverwaltung&#039;&#039;&#039;. Kehren Sie zu &#039;&#039;&#039;TestRegularPolygonUnit&#039;&#039;&#039; zurück. Jetzt verfügen Sie über die Optionen zum Ändern des Erscheinungsbildes der neuen Komponente.&lt;br /&gt;
&lt;br /&gt;
[[image:Resized1727.png]]&lt;br /&gt;
&lt;br /&gt;
==Zurück==&lt;br /&gt;
* &#039;&#039;&#039; [[Schritt 5 - Testen der grundlegenden FireMonkey-Komponente]]&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Schritt 6 - Hinzufugen von Eigenschaften zum Andern des Erscheinungsbildes der Komponente}}&lt;br /&gt;
[[Category:FMX]]&lt;br /&gt;
[[Category:XE2]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Step 6 - Add Properties to Change the Look and Feel]]&lt;br /&gt;
[[fr:Etape 6 - Ajouter des propriétés pour changer l&#039;apparence]]&lt;br /&gt;
[[ja:ステップ 6 - ルック アンド フィールを変更するためのプロパティを追加する]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_5_-_Testen_der_grundlegenden_FireMonkey-Komponente&amp;diff=171503</id>
		<title>Schritt 5 - Testen der grundlegenden FireMonkey-Komponente</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_5_-_Testen_der_grundlegenden_FireMonkey-Komponente&amp;diff=171503"/>
		<updated>2014-08-28T11:56:32Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|Erstellen eines grundlegenden FireMonkey-Steuerelements}}&lt;br /&gt;
&lt;br /&gt;
Wenn Sie zurück zur Unit &#039;&#039;&#039;TestRegularPolygon&#039;&#039;&#039; wechseln, sehen Sie im &#039;&#039;&#039;[[Formular-Designer]]&#039;&#039;&#039;, dass die Instanz der &#039;&#039;&#039;TRegularPolygon&#039;&#039;&#039;-Komponente ein Dreieck anzeigt.&lt;br /&gt;
&lt;br /&gt;
[[image:1615.png]]&lt;br /&gt;
&lt;br /&gt;
Wählen Sie im &#039;&#039;&#039;[[Formular-Designer]]&#039;&#039;&#039; die Komponente &#039;&#039;&#039;TRegularPolygon&#039;&#039;&#039; aus. Die neue Eigenschaft &#039;&#039;&#039;NumberOfSides&#039;&#039;&#039; (deren Standardwert &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; ist) erscheint jetzt im &#039;&#039;&#039;Objektinspektor&#039;&#039;&#039;. Ändern Sie den Wert von &#039;&#039;&#039;NumberOfSides&#039;&#039;&#039;, um sicherzustellen, dass diese Komponente erwartungsgemäß arbeitet.&lt;br /&gt;
&lt;br /&gt;
==Zurück==&lt;br /&gt;
* &#039;&#039;&#039;[[Schritt 4 - Implementieren der Methoden &amp;quot;Paint&amp;quot; und &amp;quot;PointInObject&amp;quot;]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Weiter==&lt;br /&gt;
* &#039;&#039;&#039;[[Schritt 6 - Hinzufügen von Eigenschaften zum Ändern des Erscheinungsbildes der Komponente]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:FMX]][[Category:XE2]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Step 5 - Test the FireMonkey Primitive Component]]&lt;br /&gt;
[[fr:Etape 5 - Tester le composant primitif FireMonkey]]&lt;br /&gt;
[[ja:ステップ 5 - FireMonkey プリミティブ コンポーネントをテストする]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_5_-_Benutzerdefinierte_Eigenschaften_(C%2B%2B)&amp;diff=171502</id>
		<title>Schritt 5 - Benutzerdefinierte Eigenschaften (C++)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_5_-_Benutzerdefinierte_Eigenschaften_(C%2B%2B)&amp;diff=171502"/>
		<updated>2014-08-28T11:55:45Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Erstellen einer FireMonkey-Komponente (C++)}}&lt;br /&gt;
&lt;br /&gt;
Die Komponente benötigt eine weitere Eigenschaft, damit das Verb der Dialogfeldaktion, wie z.B. &amp;quot;Speichern&amp;quot; auf der &amp;quot;Ausführen&amp;quot;-Schaltfläche angezeigt wird. Dieses Verb ist auch mit &amp;quot;Nicht ausführen&amp;quot; auf der &amp;quot;Nicht ausführen&amp;quot;-Schaltfläche verbunden. (Eine komplexere Internationalisierung würde den Rahmen dieses Themas überschreiten.)&lt;br /&gt;
&lt;br /&gt;
Es wäre einfacher, wenn die Aufnahme des Verbs über die Eigenschaft &#039;&#039;&#039;Text&#039;&#039;&#039; der Schaltfläche durchgeführt werden könnte. Aber die Schaltflächen sind erst vorhanden, wenn der Stil übernommen wird, und bei erneuter Übernahme des Stils werden die vorhandenen Schaltflächen verworfen. Daher muss die Komponente diesen String bereitstellen. Deklarieren und implementieren Sie die Eigenschaft &#039;&#039;&#039;DoVerb&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
 class PACKAGE TDialogButtonPanel : public TPanel&lt;br /&gt;
 {&lt;br /&gt;
 private:&lt;br /&gt;
 	String FDoVerb;&lt;br /&gt;
 	TAlignLayout FAlign;&lt;br /&gt;
 	void __fastcall SetDoVerb(String AString);&lt;br /&gt;
 	String __fastcall GetDoVerb();&lt;br /&gt;
 protected:&lt;br /&gt;
 	TControl* __fastcall TDialogButtonPanel::GetStyleObject();&lt;br /&gt;
 	void __fastcall ApplyStyle();&lt;br /&gt;
 public:&lt;br /&gt;
 	__fastcall TDialogButtonPanel(TComponent* Owner);&lt;br /&gt;
 __published:&lt;br /&gt;
 	__property Align = { default = TAlignLayout::Bottom };&lt;br /&gt;
 	__property String DoVerb ={ read=GetDoVerb, write=SetDoVerb };&lt;br /&gt;
 };&lt;br /&gt;
 //---------------------------------------------------------------------------&lt;br /&gt;
 const String DoButtonName = &amp;quot;DoButton&amp;quot;;&lt;br /&gt;
 const String DontButtonName = &amp;quot;DontButton&amp;quot;;&lt;br /&gt;
 const String CancelButtonName = &amp;quot;CancelButton&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
 // ---------------------------------------------------------------------------&lt;br /&gt;
 __fastcall TDialogButtonPanel::TDialogButtonPanel(TComponent* Owner)&lt;br /&gt;
 	: TPanel(Owner) {&lt;br /&gt;
 	Height = 46;&lt;br /&gt;
 	Width = 300;&lt;br /&gt;
 	Align = TAlignLayout::Bottom;&lt;br /&gt;
 	DoVerb = &amp;quot;Verb&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // ---------------------------------------------------------------------------&lt;br /&gt;
 void __fastcall TDialogButtonPanel::ApplyStyle() {&lt;br /&gt;
 	TStyledControl::ApplyStyle();&lt;br /&gt;
 	SetDoVerb(FDoVerb);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // ---------------------------------------------------------------------------&lt;br /&gt;
 String __fastcall TDialogButtonPanel::GetDoVerb(){&lt;br /&gt;
 	TFmxObject* Base;&lt;br /&gt;
 	TTextControl* TextBase;&lt;br /&gt;
 	Base = FindStyleResource(DoButtonName);&lt;br /&gt;
 	if ((TextBase = dynamic_cast&amp;lt;TTextControl*&amp;gt;(Base)) != NULL) {&lt;br /&gt;
 		FDoVerb = TextBase-&amp;gt;Text;&lt;br /&gt;
 	}&lt;br /&gt;
 	return FDoVerb;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // ---------------------------------------------------------------------------&lt;br /&gt;
 void __fastcall TDialogButtonPanel::SetDoVerb(String AString) {&lt;br /&gt;
 	TFmxObject* Base;&lt;br /&gt;
 	TTextControl* TextBase;&lt;br /&gt;
 	Base = FindStyleResource(DoButtonName);&lt;br /&gt;
 	FDoVerb = AString;&lt;br /&gt;
 	if ((TextBase = dynamic_cast&amp;lt;TTextControl*&amp;gt;(Base)) != NULL) {&lt;br /&gt;
 		TextBase-&amp;gt;Text = AString;&lt;br /&gt;
 	}&lt;br /&gt;
 	Base = FindStyleResource(DontButtonName);&lt;br /&gt;
 	if ((TextBase = dynamic_cast&amp;lt;TTextControl*&amp;gt;(Base)) != NULL) {&lt;br /&gt;
 		TextBase-&amp;gt;Text = &amp;quot;Don&#039;t &amp;quot; + AString;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der StyleName für jede der drei Schaltflächen wird zusammen mit dem modalen, &amp;quot;negativen OK&amp;quot;-Ergebniscodes für die &amp;quot;Nicht ausführen&amp;quot;-Schaltfläche als Konstante deklariert. Das Feld &amp;lt;code&amp;gt;FDoVerb&amp;lt;/code&amp;gt; wird dem Objekt zur Aufnahme des Verb-Strings hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
Zur Laufzeit erfolgt der Zugriff folgendermaßen:&lt;br /&gt;
# Wenn die Anwendung ausgeführt wird, werden alle Formulare erstellt, einschließlich des Dialogfeldformulars mit dem Schaltflächenbereich (TPanel). Die TPanel-Komponente wird durch die &amp;lt;code&amp;gt;object&amp;lt;/code&amp;gt;-Zeile beim Laden der &amp;lt;code&amp;gt;.fmx&amp;lt;/code&amp;gt;-Datei instantiiert. Der Konstruktor schreibt mit &amp;lt;code&amp;gt;SetDoVerb&amp;lt;/code&amp;gt; das Standardverb in die Eigenschaft. Das Feld wird gesetzt, und es werden keine Schaltflächen gefunden.&lt;br /&gt;
# Bei der Zuweisung der Eigenschaftswerte aus der Datei &amp;lt;code&amp;gt;.fmx&amp;lt;/code&amp;gt; wird &amp;lt;code&amp;gt;SetDoVerb&amp;lt;/code&amp;gt; erneut mit dem vom Designer gespeicherten String (z.B. &amp;quot;Speichern&amp;quot;) aufgerufen und das Feld geändert.&lt;br /&gt;
# Beim Öffnen des Dialogfelds wird es gezeichnet, und einer der vorbereitenden Schritte beim Zeichnen eines Steuerelements ist die Übernahme des Stils (falls erforderlich), wozu auch das erste Zeichnen des Steuerelements gehört. Zum Schluss wird die Prozedur &amp;lt;code&amp;gt;ApplyStyle&amp;lt;/code&amp;gt; aufgerufen, die hier überschrieben wird, um den Verb-String aus dem Feld erneut zu übernehmen. Die Prozedur weist das Feld redundant erneut zu, aber jetzt sind die Schaltflächen vorhanden, und zudem wird das Verb in der &amp;quot;Ausführen&amp;quot;-Schaltfläche und das Verb in der &amp;quot;Nicht ausführen&amp;quot;-Schaltfläche gesetzt.&lt;br /&gt;
# Das Rendern der Schaltflächen erfolgt nicht in der Funktion &amp;lt;code&amp;gt;GetDoVerb&amp;lt;/code&amp;gt;, weil die Schaltflächen, die den Stil umfassen, direkt gerendert werden, und sie bereits über die Setter-Methode den passenden Text erhalten haben. Die Getter-Methode wird hauptsächlich vom Formular-Designer und von Laufzeitcode verwendet, der die Eigenschaften der TPanel-Komponente ermittelt. Die Methode versucht, das Feld aus der &amp;quot;Ausführen&amp;quot;-Schaltfläche (falls vorhanden) zu aktualisieren; aber wenn die Schaltfläche nicht direkt manipuliert wird (durch Umgehung der Kapselung), sollten ihr Text und das Feld bereits synchronisiert sein.&lt;br /&gt;
&lt;br /&gt;
==Zurück==&lt;br /&gt;
* [[Schritt 4 - Festlegen der Größe und der Ausrichtung (C++)|Schritt 4 - Festlegen der Größe und der Ausrichtung (C++)]]&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[FireMonkey-Komponentendesign]]&lt;br /&gt;
* [[Verwenden des Experten für neue Komponenten]]&lt;br /&gt;
* [[Erstellen einer FireMonkey-Komponente (C++)]]&lt;br /&gt;
* [[Erstellen einer mit Stilen versehenen FireMonkey-Komponente durch Erweitern einer vorhandenen Komponente ]]&lt;br /&gt;
* [[Erstellen eines grundlegenden FireMonkey-Steuerelements]]&lt;br /&gt;
[[Category:XE3]][[Category:FMX]][[Category:C++]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Step 5 - Custom Properties (C++)]]&lt;br /&gt;
[[fr:Etape 5 - Propriétés personnalisées (C++)]]&lt;br /&gt;
[[ja:ステップ 5 - カスタム プロパティ（C++）]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_4_-_Testen_der_mit_FMX-Stilen_versehenen_Komponente&amp;diff=171501</id>
		<title>Schritt 4 - Testen der mit FMX-Stilen versehenen Komponente</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_4_-_Testen_der_mit_FMX-Stilen_versehenen_Komponente&amp;diff=171501"/>
		<updated>2014-08-28T11:54:42Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|Erstellen einer mit Stilen versehenen FireMonkey-Komponente durch Erweitern einer vorhandenen Komponente }}&lt;br /&gt;
&lt;br /&gt;
Wenn Sie zurück zum Projekt &#039;&#039;&#039;TestClockLabelUnit&#039;&#039;&#039; wechseln, sehen Sie im &#039;&#039;&#039;[[Formular-Designer]]&#039;&#039;&#039;, dass die Instanz der &#039;&#039;&#039;TClockLabel&#039;&#039;&#039;-Komponente die aktuelle Uhrzeit anzeigt.&lt;br /&gt;
&lt;br /&gt;
[[image:TestClockLabelUnit.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Wählen Sie im &#039;&#039;&#039;[[Formular-Designer]]&#039;&#039;&#039; die Komponente &#039;&#039;&#039;TClockLabel&#039;&#039;&#039; aus. Die neue Eigenschaft &#039;&#039;&#039;Format&#039;&#039;&#039; (mit dem Standardwert &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;) der Komponente &#039;&#039;&#039;TClockLabel&#039;&#039;&#039; wird im &#039;&#039;&#039;Objektinspektor&#039;&#039;&#039; angezeigt.&lt;br /&gt;
&lt;br /&gt;
Führen Sie das Projekt &#039;&#039;&#039;TestClockLabelUnit&#039;&#039;&#039; aus, indem Sie zum Beispiel den Menübefehl &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Start &amp;amp;gt; Ohne Debugger ausführen&#039;&#039;&#039;&amp;lt;/font&amp;gt; auswählen. Das Formular mit der erstellten &#039;&#039;&#039;TClockLabel&#039;&#039;&#039;-Komponente wird angezeigt:&lt;br /&gt;
&lt;br /&gt;
: [[image:ClockLabeInForm.png]]&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;&#039;ClockLabel&#039;&#039;&#039;-Steuerelement zeigt die aktuelle Uhrzeit an.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Wenn der Standardpfad im Feld &#039;&#039;&#039;Unit-Name&#039;&#039;&#039; (im Schritt 4) nicht in der im &#039;&#039;&#039;[[Schritt 1 - Erstellen einer Komponente mit dem Experten &amp;quot;Neue Komponente&amp;quot;]]&#039;&#039;&#039; beschriebenen Prozedur angegeben wurde, dann müssen Sie der &#039;&#039;&#039;Suchpfad&#039;&#039;&#039;-Liste des Projekts den angegebenen Pfad hinzufügen. Wählen Sie dazu den Menübefehl &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Projekt &amp;amp;gt; Optionen&#039;&#039;&#039;&amp;lt;/font&amp;gt;, um das Dialogfeld &#039;&#039;&#039;Projektoptionen&#039;&#039;&#039; zu öffnen. Wählen Sie die Seite &#039;&#039;&#039;[[Delphi-Compiler]]&#039;&#039;&#039; aus, und fügen Sie den Pfad der Liste in der Option &#039;&#039;&#039;Suchpfad&#039;&#039;&#039; hinzu.&lt;br /&gt;
&lt;br /&gt;
==Zurück==&lt;br /&gt;
&lt;br /&gt;
* [[Schritt 3 - Verwenden von TTimer zum sekündlichen Aktualisieren von TClockLabel ]]&lt;br /&gt;
[[Category:FMX]][[Category:XE2]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Step 4 - Test the FMX Styled Component]]&lt;br /&gt;
[[fr:Etape 4 - Tester le composant stylé FMX]]&lt;br /&gt;
[[ja:ステップ 4 - スタイル付き FMX コンポーネントをテストする]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_4_-_Implementieren_der_Methoden_%22Paint%22_und_%22PointInObject%22&amp;diff=171498</id>
		<title>Schritt 4 - Implementieren der Methoden &quot;Paint&quot; und &quot;PointInObject&quot;</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_4_-_Implementieren_der_Methoden_%22Paint%22_und_%22PointInObject%22&amp;diff=171498"/>
		<updated>2014-08-28T11:53:00Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|Erstellen eines grundlegenden FireMonkey-Steuerelements}}&lt;br /&gt;
In diesem letzten Schritt wird die grundlegende Komponente fertig gestellt. Definieren Sie die folgenden zusätzlichen Member (Member, die zuvor erstellt wurden, sind hier nicht aufgeführt):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
type&lt;br /&gt;
   TRegularPolygon = class(TShape)&lt;br /&gt;
   protected&lt;br /&gt;
     procedure Paint; override;&lt;br /&gt;
   public&lt;br /&gt;
     function PointInObject(X, Y: Single): Boolean; override;&lt;br /&gt;
   end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Verwenden Sie wie in den vorherigen Schritten &amp;lt;code&amp;gt;STRG+UMSCHALT+C&amp;lt;/code&amp;gt;, um Platzhalter für diese Methoden zu erstellen. Implementieren Sie diese Methoden folgendermaßen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure TRegularPolygon.Paint;&lt;br /&gt;
 begin&lt;br /&gt;
   CreatePath;&lt;br /&gt;
   Canvas.FillPath(FPath, AbsoluteOpacity);&lt;br /&gt;
   Canvas.DrawPath(FPath, AbsoluteOpacity);&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
function TRegularPolygon.PointInObject(X, Y: Single): Boolean;&lt;br /&gt;
begin&lt;br /&gt;
  CreatePath;&lt;br /&gt;
  Result := Canvas.PtInPath(AbsoluteToLocal(PointF(X, Y)), FPath);&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Komponente &#039;&#039;&#039;TRegularPolygon&#039;&#039;&#039; ist nun implementiert. Klicken Sie im &#039;&#039;&#039;Projektverwaltung&#039;&#039;&#039; mit der rechten Maustaste auf das Package TRegularPolygon.bpl, und wählen Sie im Kontextmenü &#039;&#039;&#039;Erzeugen&#039;&#039;&#039;. Wählen Sie anschließend &#039;&#039;&#039;Installieren&#039;&#039;&#039;, um das entwickelte Komponenten-Package zu installieren und die entwickelte Komponente zu registrieren.&lt;br /&gt;
&lt;br /&gt;
[[image:2657.png]]&lt;br /&gt;
&lt;br /&gt;
Jetzt können Sie das neue Verhalten der &#039;&#039;&#039;TRegularPolygon&#039;&#039;&#039;-Komponente im &#039;&#039;&#039;[[Formular-Designer]]&#039;&#039;&#039; sehen. &lt;br /&gt;
&lt;br /&gt;
==Zurück==&lt;br /&gt;
* &#039;&#039;&#039;[[Schritt 3 - Definieren eines Pfades zum Zeichnen des Polygons]]&lt;br /&gt;
&lt;br /&gt;
==Weiter==&lt;br /&gt;
* &#039;&#039;&#039;[[Schritt 5 - Testen der grundlegenden FireMonkey-Komponente]]&lt;br /&gt;
&lt;br /&gt;
[[Category:FMX]][[Category:XE2]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Step 4 - Implement Paint and PointInObject Methods]]&lt;br /&gt;
[[fr:Etape 4 - Implémenter les méthodes Paint et PointInObject]]&lt;br /&gt;
[[ja:ステップ 4 - Paint メソッドと PointInObject メソッドを実装する]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_3_-_Verwenden_von_TTimer_zum_sek%C3%BCndlichen_Aktualisieren_von_TClockLabel&amp;diff=171496</id>
		<title>Schritt 3 - Verwenden von TTimer zum sekündlichen Aktualisieren von TClockLabel</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_3_-_Verwenden_von_TTimer_zum_sek%C3%BCndlichen_Aktualisieren_von_TClockLabel&amp;diff=171496"/>
		<updated>2014-08-28T11:50:37Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|Erstellen einer mit Stilen versehenen FireMonkey-Komponente durch Erweitern einer vorhandenen Komponente }}&lt;br /&gt;
&lt;br /&gt;
In diesem Tutorial wird die &#039;&#039;&#039;TTimer&#039;&#039;&#039;-Komponente intern verwendet, um &#039;&#039;&#039;TClockLabel&#039;&#039;&#039; sekundenweise zu aktualisieren. Zur Verwendung der &#039;&#039;&#039;TTimer&#039;&#039;&#039;-Komponente in der &#039;&#039;&#039;TClockLabel&#039;&#039;&#039;-Komponente müssen Sie:&lt;br /&gt;
* Ein Instanz von &#039;&#039;&#039;TTimer&#039;&#039;&#039; im Konstruktor von &#039;&#039;&#039;TClockLabel&#039;&#039;&#039; erstellen.&lt;br /&gt;
* Die &#039;&#039;&#039;TTimer&#039;&#039;&#039;-Komponente so konfigurieren, dass sie jede Sekunde das Ereignis &#039;&#039;&#039;OnTimer&#039;&#039;&#039; auslöst.&lt;br /&gt;
* Die Eigenschaft &#039;&#039;&#039;Text&#039;&#039;&#039; aktualisieren, wenn das Ereignis &#039;&#039;&#039;OnTimer&#039;&#039;&#039; ausgelöst wird.&lt;br /&gt;
* Die Instanz von &#039;&#039;&#039;TTimer&#039;&#039;&#039; im Destruktor von &#039;&#039;&#039;TClockLabel&#039;&#039;&#039; freigeben.&lt;br /&gt;
Definieren Sie dazu die folgenden zusätzlichen Member (Member, die zuvor erstellt wurden, sind hier nicht aufgeführt):&lt;br /&gt;
	&lt;br /&gt;
In &#039;&#039;&#039;{{Delphi}}&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
type&lt;br /&gt;
   TClockLabel = class(TLabel)&lt;br /&gt;
   private&lt;br /&gt;
     FTimer: TTimer;&lt;br /&gt;
     procedure OnTimer(Sender: TObject);&lt;br /&gt;
   public&lt;br /&gt;
     destructor Destroy; override;&lt;br /&gt;
   end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;C++&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
class PACKAGE TClockLabel : public TLabel {&lt;br /&gt;
private:&lt;br /&gt;
&lt;br /&gt;
	TTimer* FTimer;&lt;br /&gt;
&lt;br /&gt;
	void __fastcall OnTimer(TObject* Sender);&lt;br /&gt;
&lt;br /&gt;
public:&lt;br /&gt;
	__fastcall ~TClockLabel(void);&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wie in den vorherigen Schritten werden durch Drücken von &amp;lt;code&amp;gt;STRG+UMSCHALT+C&amp;lt;/code&amp;gt; Platzhalter für diese Methoden erstellt.&lt;br /&gt;
&lt;br /&gt;
Implementieren Sie diese Methoden folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;{{Delphi}}&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
constructor TClockLabel.Create(AOwner: TComponent);&lt;br /&gt;
 begin&lt;br /&gt;
   FFormat := &#039;c&#039;;&lt;br /&gt;
   inherited;&lt;br /&gt;
 &lt;br /&gt;
   // No need to use TTimer compoment at design time.&lt;br /&gt;
   if not (csDesigning in ComponentState) then&lt;br /&gt;
   begin&lt;br /&gt;
     FTimer := TTimer.Create(AOwner);&lt;br /&gt;
     FTimer.OnTimer := OnTimer;&lt;br /&gt;
     FTimer.Interval := 1000;&lt;br /&gt;
     FTimer.Enabled := True;&lt;br /&gt;
   end;&lt;br /&gt;
 &lt;br /&gt;
   UpdateLabel;&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 destructor TClockLabel.Destroy;&lt;br /&gt;
 begin&lt;br /&gt;
   FreeAndNil(FTimer);&lt;br /&gt;
   inherited;&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 procedure TClockLabel.OnTimer(Sender: TObject);&lt;br /&gt;
 begin&lt;br /&gt;
   UpdateLabel;&lt;br /&gt;
 end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;C++&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
__fastcall TClockLabel::TClockLabel(TComponent* Owner) : TLabel(Owner) {&lt;br /&gt;
&lt;br /&gt;
	FFormat = &#039;c&#039;;&lt;br /&gt;
&lt;br /&gt;
	FTimer = new TTimer(Owner);&lt;br /&gt;
	FTimer-&amp;gt;OnTimer = OnTimer;&lt;br /&gt;
	FTimer-&amp;gt;Interval = 1000;&lt;br /&gt;
	FTimer-&amp;gt;Enabled = true;&lt;br /&gt;
&lt;br /&gt;
	UpdateLabel();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
__fastcall TClockLabel::~TClockLabel() {&lt;br /&gt;
	FreeAndNil(FTimer);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void __fastcall TClockLabel::OnTimer(TObject* Sender) {&lt;br /&gt;
	UpdateLabel();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie wahrscheinlich bemerkt haben, ist die erstellte Instanz von &#039;&#039;&#039;TTimer&#039;&#039;&#039; von der Eigenschaft &#039;&#039;&#039;ComponentState&#039;&#039;&#039; abhängig. Und zwar, weil die &#039;&#039;&#039;Beschriftung (Label)&#039;&#039;&#039; zur Entwurfszeit (wenn Sie in der IDE ausgeführt wird) nicht aktualisiert werden muss. Dadurch wird die Erstellung der &#039;&#039;&#039;TTimer&#039;&#039;&#039;-Komponente auf die Ausführung der Komponente außerhalb der IDE (als Standardanwendung) beschränkt.&lt;br /&gt;
&lt;br /&gt;
Jetzt wird die &#039;&#039;&#039;TClockLabel&#039;&#039;&#039;-Komponente implementiert. Klicken Sie im &#039;&#039;&#039;Projektverwaltung&#039;&#039;&#039; mit der rechten Maustaste auf das Package &#039;&#039;&#039;TClockLabel.bpl&#039;&#039;&#039; und wählen Sie im Kontextmenü &#039;&#039;&#039;Erzeugen&#039;&#039;&#039; aus. Wählen Sie dann &#039;&#039;&#039;Installieren&#039;&#039;&#039; aus, um das entwickelte Komponenten-Package zu installieren und die Komponente zu registrieren:   &lt;br /&gt;
&lt;br /&gt;
::[[image:ClockLabeIContextMenu.png]]&lt;br /&gt;
&lt;br /&gt;
Jetzt können Sie das neue Verhalten der &#039;&#039;&#039;TClockLabel&#039;&#039;&#039;-Komponente im &#039;&#039;&#039;[[Formular-Designer]]&#039;&#039;&#039; sehen.  &lt;br /&gt;
&lt;br /&gt;
==Zurück==&lt;br /&gt;
* [[Schritt 2 - Implementieren einer Eigenschaft zum Angeben des Formats ]]&lt;br /&gt;
&lt;br /&gt;
==Weiter==&lt;br /&gt;
* [[Schritt 4 - Testen der mit FMX-Stilen versehenen Komponente ]]&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Schritt 3 - Verwenden von TTimer zum sekundlichen Aktualisieren von TClockLabel}}&lt;br /&gt;
[[Category:FMX]]&lt;br /&gt;
[[Category:XE2]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Step 3 - Using TTimer to Refresh TClockLabel Every Second]]&lt;br /&gt;
[[fr:Etape 3 - Utilisation de TTimer pour actualiser TClockLabel à chaque seconde]]&lt;br /&gt;
[[ja:ステップ 3 - TTimer を使用して TClockLabel を毎秒更新する]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_3_-_Definieren_eines_Pfades_zum_Zeichnen_des_Polygons&amp;diff=171495</id>
		<title>Schritt 3 - Definieren eines Pfades zum Zeichnen des Polygons</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_3_-_Definieren_eines_Pfades_zum_Zeichnen_des_Polygons&amp;diff=171495"/>
		<updated>2014-08-28T11:46:56Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Erstellen eines grundlegenden FireMonkey-Steuerelements}}&lt;br /&gt;
Zum Zeichnen eines Polygons müssen Sie einen Pfad für die Zeichenoperation definieren. Sobald ein Pfad definiert ist, kann das &#039;&#039;&#039;[[lib_de:FMX.Controls.TControl.Canvas|Canvas]]&#039;&#039;&#039;-Objekt den Pfad füllen und zeichnen.&lt;br /&gt;
&lt;br /&gt;
=== So erstellen und schließen Sie einen Pfad: ===&lt;br /&gt;
# Erstellen Sie ein [[lib_de:FMX.Objects.TPath|TPath]]-Objekt.&lt;br /&gt;
# [[lib_de:FMX.Graphics.TPathData.MoveTo|Wechseln]] Sie zum Startpunkt (①).&lt;br /&gt;
# Gehen Sie mit der Prozedur &#039;&#039;&#039;[[lib_de:FMX.Graphics.TPathData.LineTo|LineTo]]&#039;&#039;&#039; alle Eckpunkte durch (②, ③ und ④).&lt;br /&gt;
# Schließen Sie den Pfad.&lt;br /&gt;
&lt;br /&gt;
[[image:polgyongdrawing.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sie müssen die folgenden zusätzlichen Member definieren (Member, die zuvor erstellt wurden, sind hier nicht aufgeführt; siehe die vorherigen Schritte):&lt;br /&gt;
&amp;lt;source lang=&#039;delphi&#039;&amp;gt;&lt;br /&gt;
type&lt;br /&gt;
TRegularPolygon = class(TShape)&lt;br /&gt;
private&lt;br /&gt;
  FPath: TPathData;&lt;br /&gt;
protected&lt;br /&gt;
  procedure CreatePath;&lt;br /&gt;
public&lt;br /&gt;
  destructor Destroy; override;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit soll Folgendes erreicht werden:&lt;br /&gt;
* Erstellen einer Instanz von &#039;&#039;&#039;[[lib_de:FMX.Graphics.TPathData|TPathData]]&#039;&#039;&#039; (&#039;&#039;&#039;FPath&#039;&#039;&#039;-Feld) im Konstruktor.&lt;br /&gt;
* Setzen der Pfadinformationen auf das &#039;&#039;&#039;FPath&#039;&#039;&#039;-Feld in &#039;&#039;&#039;[[lib_de:FMX.Objects.TCalloutRectangle.CreatePath|CreatePath]]&#039;&#039;&#039;.&lt;br /&gt;
* Verwenden der Pfadinformationen in den Methoden &#039;&#039;&#039;[[lib_de:FMX.Controls.TControl.Paint|Paint]]&#039;&#039;&#039; und &#039;&#039;&#039;[[lib_de:FMX.Objects.TCustomPath.PointInObject|PointInObject]]&#039;&#039;&#039; (wird später erläutert).&lt;br /&gt;
* Freigeben der Instanz des &#039;&#039;&#039;FPath&#039;&#039;&#039;-Feldes im Destruktor.&lt;br /&gt;
Wie in den vorherigen Schritten werden mit &amp;lt;code&amp;gt;STRG+UMSCHALT+C&amp;lt;/code&amp;gt; Platzhalter für diese Methoden erstellt. Implementieren Sie diese Methoden folgendermaßen:&lt;br /&gt;
&amp;lt;source lang=&#039;delphi&#039;&amp;gt;&lt;br /&gt;
constructor TRegularPolygon.Create(AOwner: TComponent);&lt;br /&gt;
begin&lt;br /&gt;
  inherited;&lt;br /&gt;
  FNumberOfSides := 3;&lt;br /&gt;
  FPath := TPathData.Create;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
destructor TRegularPolygon.Destroy;&lt;br /&gt;
begin&lt;br /&gt;
  FreeAndNil(FPath);&lt;br /&gt;
  inherited;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TRegularPolygon.CreatePath;&lt;br /&gt;
  procedure GoToAVertex(n: Integer; Angle, CircumRadius: Double; &lt;br /&gt;
    IsLineTo: Boolean = True);&lt;br /&gt;
  var&lt;br /&gt;
    NewLocation: TPointF;&lt;br /&gt;
  begin&lt;br /&gt;
    NewLocation.X := Width  / 2 + Cos(n * Angle) * CircumRadius;&lt;br /&gt;
    NewLocation.Y := Height / 2 - Sin(n * Angle) * CircumRadius;&lt;br /&gt;
&lt;br /&gt;
    if IsLineTo then&lt;br /&gt;
      FPath.LineTo(NewLocation)&lt;br /&gt;
    else&lt;br /&gt;
      FPath.MoveTo(NewLocation);&lt;br /&gt;
  end;&lt;br /&gt;
var&lt;br /&gt;
  i: Integer;&lt;br /&gt;
  Angle, CircumRadius: Double;&lt;br /&gt;
begin&lt;br /&gt;
  Angle        := 2 * PI / FNumberOfSides;&lt;br /&gt;
  CircumRadius := Min(ShapeRect.Width / 2, ShapeRect.Height / 2);&lt;br /&gt;
&lt;br /&gt;
  // Create a new Path&lt;br /&gt;
  FPath.Clear;&lt;br /&gt;
&lt;br /&gt;
  // MoveTo the first point&lt;br /&gt;
  GoToAVertex(0, Angle, CircumRadius, False);&lt;br /&gt;
&lt;br /&gt;
  // LineTo each Vertex&lt;br /&gt;
  for i := 1 to FNumberOfSides do&lt;br /&gt;
    GoToAVertex(i, Angle, CircumRadius);&lt;br /&gt;
&lt;br /&gt;
  FPath.ClosePath;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Sie müssen die folgende &#039;&#039;&#039;uses&#039;&#039;&#039;-Klausel hinzufügen:&lt;br /&gt;
&amp;lt;source lang=&#039;delphi&#039;&amp;gt;&lt;br /&gt;
uses&lt;br /&gt;
System.Math, System.Types;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zurück ==&lt;br /&gt;
*&#039;&#039;&#039; [[Schritt 2 - Implementieren einer Eigenschaft zum Angeben der Seitenanzahl]]&lt;br /&gt;
&lt;br /&gt;
== Weiter ==	&lt;br /&gt;
* &#039;&#039;&#039;[[Schritt 4 - Implementieren der Methoden &amp;quot;Paint&amp;quot; und &amp;quot;PointInObject&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
[[Category:XE2]]&lt;br /&gt;
[[Category:FMX]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Step 3 - Define a Path to Draw the Polygon]]&lt;br /&gt;
[[fr:Etape 3 - Définir un chemin pour dessiner le polygone]]&lt;br /&gt;
[[ja:ステップ 3 - 多角形を描画するパスを定義する]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_2_-_Implementieren_einer_Eigenschaft_zum_Angeben_der_Seitenanzahl&amp;diff=171493</id>
		<title>Schritt 2 - Implementieren einer Eigenschaft zum Angeben der Seitenanzahl</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_2_-_Implementieren_einer_Eigenschaft_zum_Angeben_der_Seitenanzahl&amp;diff=171493"/>
		<updated>2014-08-28T11:45:00Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|Erstellen eines grundlegenden FireMonkey-Steuerelements}}&lt;br /&gt;
&lt;br /&gt;
Für die &#039;&#039;&#039;TRegularPolygon&#039;&#039;&#039;-Komponente muss die Anzahl der Seiten als Eigenschaft definiert werden, damit Komponentenbenutzer die Seitenzahl festlegen können. Fügen Sie dem &#039;&#039;&#039;published&#039;&#039;&#039;-Abschnitt der Klasse &#039;&#039;&#039;TRegularPolygon&#039;&#039;&#039; die folgende Zeile hinzu, um eine Eigenschaft (namens &#039;&#039;&#039;NumbersOfSides&#039;&#039;&#039;) zu implementieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;delphi&#039;&amp;gt;&lt;br /&gt;
property NumberOfSides: Integer;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fügen Sie außerdem dem &#039;&#039;&#039;public&#039;&#039;&#039;-Abschnitt eine Definition des Konstruktors wie folgt hinzu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;delphi&#039;&amp;gt;&lt;br /&gt;
constructor Create(AOwner: TComponent); override;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Code sollte nun wie folgt lauten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;delphi&#039;&amp;gt;&lt;br /&gt;
type&lt;br /&gt;
  TRegularPolygon = class(TShape)&lt;br /&gt;
  private&lt;br /&gt;
    { Private declarations }&lt;br /&gt;
  protected&lt;br /&gt;
    { Protected declarations }&lt;br /&gt;
  public&lt;br /&gt;
    { Public declarations }&lt;br /&gt;
    constructor Create(AOwner: TComponent); override;&lt;br /&gt;
  published&lt;br /&gt;
    { Published declarations }&lt;br /&gt;
    property NumberOfSides: Integer;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Drücken Sie nach Einfügen dieser Zeilen &amp;lt;code&amp;gt;STRG+UMSCHALT+C&amp;lt;/code&amp;gt;. Die IDE fügt automatisch die Methode zum Setzen der Eigenschaft &#039;&#039;&#039;NumberOfSides&#039;&#039;&#039; und eine Struktur (Skeleton) für den Konstruktor hinzu. Der Code sollte nun wie folgt lauten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;delphi&#039;&amp;gt;&lt;br /&gt;
TRegularPolygon = class(TShape)&lt;br /&gt;
private&lt;br /&gt;
  FNumberOfSides: Integer;&lt;br /&gt;
  procedure SetNumberOfSides(const Value: Integer);&lt;br /&gt;
  { Private declarations }&lt;br /&gt;
protected&lt;br /&gt;
  { Protected declarations }&lt;br /&gt;
public&lt;br /&gt;
  { Public declarations }&lt;br /&gt;
  constructor Create(AOwner: TComponent); override;&lt;br /&gt;
published&lt;br /&gt;
  { Published declarations }&lt;br /&gt;
  property NumberOfSides: Integer read FNumberOfSides write SetNumberOfSides;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
constructor TRegularPolygon.Create(AOwner: TComponent);&lt;br /&gt;
begin&lt;br /&gt;
  inherited;&lt;br /&gt;
&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure TRegularPolygon.SetNumberOfSides(const Value: Integer);&lt;br /&gt;
begin&lt;br /&gt;
  FNumberOfSides := Value;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie bei jedem Polygon muss die Anzahl der Seiten mindestens 3 betragen. Ändern Sie daher die Implementierung der Methode &#039;&#039;&#039;SetNumberOfSides&#039;&#039;&#039; wie folgt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;delphi&#039;&amp;gt;&lt;br /&gt;
procedure TRegularPolygon.SetNumberOfSides(const Value: Integer);&lt;br /&gt;
begin&lt;br /&gt;
  if (FNumberOfSides &amp;lt;&amp;gt; Value) and (Value &amp;gt;= 3) then&lt;br /&gt;
  begin&lt;br /&gt;
    FNumberOfSides := Value;&lt;br /&gt;
    Repaint;&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Durch die Methode &#039;&#039;&#039;Repaint&#039;&#039;&#039; wird dem {{FM}}-Framework mitgeteilt, dass diese Komponente neu gezeichnet werden muss, wenn sich die Seitenanzahl ändert. Im Konstruktor müssen Sie den Wert des Feldes &#039;&#039;&#039;FNumbersOfSides&#039;&#039;&#039; (mit 3, dem Minimum) initialisieren. Durch Ändern des Feldes (anstatt der Eigenschaft) vermeiden Sie unnötige Aufrufe der Methode &#039;&#039;&#039;Repaint&#039;&#039;&#039;. Fügen Sie dem Konstruktor den folgenden Code hinzu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;delphi&#039;&amp;gt;&lt;br /&gt;
constructor TRegularPolygon.Create(AOwner: TComponent);&lt;br /&gt;
begin&lt;br /&gt;
  inherited;&lt;br /&gt;
  FNumberOfSides := 3;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zurück ==&lt;br /&gt;
* &#039;&#039;&#039;[[Schritt 1 - Erstellen einer neuen Komponente mit dem Experten &amp;quot;Neue Komponente&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Weiter ==&lt;br /&gt;
* &#039;&#039;&#039;[[Schritt 3 - Definieren eines Pfades zum Zeichnen des Polygons]]&lt;br /&gt;
&lt;br /&gt;
[[Category:XE2]][[Category:FMX]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Step 2 - Implement a Property to Specify the Number of Sides]]&lt;br /&gt;
[[fr:Etape 2 - Implémenter une propriété pour spécifier le nombre de côtés]]&lt;br /&gt;
[[ja:ステップ 2 - 辺の数を指定するプロパティを実装する]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_1_-_Erstellen_der_Projekte_(C%2B%2B)&amp;diff=171490</id>
		<title>Schritt 1 - Erstellen der Projekte (C++)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_1_-_Erstellen_der_Projekte_(C%2B%2B)&amp;diff=171490"/>
		<updated>2014-08-28T11:30:58Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Erstellen einer FireMonkey-Komponente (C++)}}&lt;br /&gt;
Beginnen Sie das Projekt durch Schließen aller Dateien in der IDE (&amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Datei &amp;amp;gt; Alle schließen&#039;&#039;&#039;&amp;lt;/font&amp;gt;). Wählen Sie einen Speicherort und einen Namen für einen neuen Ordner aus, in dem alle Komponentendateien gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
===Package-Projekt===&lt;br /&gt;
# Wählen Sie &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Datei &amp;amp;gt; Neu &amp;amp;gt; Package - {{CBuilderUI}}&#039;&#039;&#039;&amp;lt;/font&amp;gt;&lt;br /&gt;
# Wählen Sie &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Datei &amp;amp;gt; Projekt speichern unter&#039;&#039;&#039;&amp;lt;/font&amp;gt;, und navigieren Sie zum Speicherort des Ordners. Erstellen Sie einen neuen Ordner, navigieren Sie zu diesem Ordner, und speichern Sie das Projekt als &#039;&#039;&#039;DialogButtonsPackage&#039;&#039;&#039;.&lt;br /&gt;
# Klicken Sie in der Projektverwaltung mit der rechten Maustaste auf die neu erzeugte Projektgruppe, und wählen Sie &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Projektgruppe speichern unter&#039;&#039;&#039;&amp;lt;/font&amp;gt;. Speichern Sie die Projektgruppe unter dem Namen &#039;&#039;&#039;DialogButtonsGroup&#039;&#039;&#039; im selben Verzeichnis wie das Projekt.&lt;br /&gt;
&lt;br /&gt;
===Komponentengerüst===&lt;br /&gt;
&lt;br /&gt;
Wählen Sie &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Komponente &amp;amp;gt; Neue Komponente&#039;&#039;&#039;&amp;lt;/font&amp;gt;, um den Experten [[Neue Komponente]] zu öffnen. Führen Sie in diesem Experten Folgendes aus:&lt;br /&gt;
# Wählen Sie als Framework und Personality &#039;&#039;&#039;{{FM}} für C++&#039;&#039;&#039;.&lt;br /&gt;
# Wählen Sie &#039;&#039;&#039;[[lib_de:FMX.Controls.TStyledControl|TStyledControl]]&#039;&#039;&#039; als Vorfahre aus.&lt;br /&gt;
# Legen Sie als Klassenname &#039;&#039;&#039;TDialogButtonPanel&#039;&#039;&#039; fest. Klicken Sie zum Festlegen des Unit-Namens auf die Ellipse, vergewissern Sie sich, dass der Komponentenordner geöffnet ist, und speichern Sie die Unit-Datei unter dem Namen &#039;&#039;&#039;DialogButtons&#039;&#039;&#039;.&lt;br /&gt;
# Wählen Sie &#039;&#039;&#039;Unit dem Projekt DialogButtonsPackage.cbproj hinzufügen&#039;&#039;&#039;, und klicken Sie auf &#039;&#039;&#039;Fertig stellen&#039;&#039;&#039;.&lt;br /&gt;
# Klicken Sie bei der Aufforderung &#039;&#039;&#039;DialogButtons speichern unter&#039;&#039;&#039; auf &#039;&#039;&#039;Speichern&#039;&#039;&#039;.&lt;br /&gt;
# Wenn Sie zur Aktivierung des {{FM}}-Frameworks aufgefordert werden, klicken Sie auf &#039;&#039;&#039;Ja&#039;&#039;&#039;.&lt;br /&gt;
Mit diesen Schritten haben Sie eine Unit mit der Komponentenklasse und eine Register-Prozedur zum Hinzufügen der Klasse zur Komponentenpalette erstellt. Überprüfen Sie, ob die Datei &#039;&#039;&#039;DialogButtonsPackage.pas&#039;&#039;&#039; dem Package hinzugefügt wurde. Sie sollte in der Projekthierarchie unter dem Knoten &#039;&#039;&#039;Enthält&#039;&#039;&#039; angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
[[File:DialogButtons_in_project_three_C%2B%2B.png]]&lt;br /&gt;
&lt;br /&gt;
===Arbeiten mit den Projekten/Testen der Projekte===&lt;br /&gt;
&lt;br /&gt;
# Klicken Sie mit der rechten Maustaste auf die Projektgruppe, und wählen Sie &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Neues Projekt hinzufügen&#039;&#039;&#039;&amp;lt;/font&amp;gt;.&lt;br /&gt;
# Wählen Sie im Dialogfeld &#039;&#039;&#039;Objektgalerie&#039;&#039;&#039; den Eintrag &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;{{CBuilderUI}}-Projekte &amp;amp;gt; Geräteübergreifende Anwendung &amp;amp;gt; Leere Anwendung&#039;&#039;&#039;&amp;lt;/font&amp;gt;.&lt;br /&gt;
# Wählen Sie &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Datei &amp;amp;gt; Speichern unter&#039;&#039;&#039;&amp;lt;/font&amp;gt;, navigieren Sie zu dem Komponentenordner, und speichern Sie die Formular-Unit als &#039;&#039;&#039;PanelTest&#039;&#039;&#039;.&lt;br /&gt;
# Wählen Sie &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Datei &amp;amp;gt; Projekt speichern unter&#039;&#039;&#039;&amp;lt;/font&amp;gt;, vergewissern Sie sich, dass der Komponentenordner geöffnet ist, und speichern Sie das Projekt unter dem Namen &#039;&#039;&#039;PanelTester&#039;&#039;&#039;.&lt;br /&gt;
# Klicken Sie mit der rechten Maustaste auf das Projekt, wählen Sie &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Neue hinzufügen &amp;amp;gt; Geräteübergreifendes Formular &amp;amp;gt; HD-Formular&#039;&#039;&#039;&amp;lt;/font&amp;gt;. Speichern Sie die Unit unter dem Namen &#039;&#039;&#039;TestDialog&#039;&#039;&#039;.&lt;br /&gt;
# Klicken Sie mit der rechten Maustaste auf das Projekt, wählen Sie &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Neue hinzufügen &amp;amp;gt; Geräteübergreifendes Formular &amp;amp;gt; HD-Formular&#039;&#039;&#039;&amp;lt;/font&amp;gt;. Speichern Sie die Unit unter dem Namen &#039;&#039;&#039;PanelDesign&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Weiter==&lt;br /&gt;
* [[Schritt 2 - Entwerfen des Schaltflächenbereichs (C++)|Schritt 2 - Entwerfen des Schaltflächenbereichs (C++)]]&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[FireMonkey-Komponentendesign]]&lt;br /&gt;
* [[Verwenden des Experten für neue Komponenten]]&lt;br /&gt;
* [[Erstellen einer FireMonkey-Komponente (C++)]]&lt;br /&gt;
* [[Erstellen einer mit Stilen versehenen FireMonkey-Komponente durch Erweitern einer vorhandenen Komponente ]]&lt;br /&gt;
* [[Erstellen eines grundlegenden FireMonkey-Steuerelements]]&lt;br /&gt;
[[Category:XE3]][[Category:FMX]][[Category:C++]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Step 1 - Create the Projects (C++)]]&lt;br /&gt;
[[fr:Etape 1 - Créer les projets (C++)]]&lt;br /&gt;
[[ja:ステップ 1 - プロジェクトを作成する（C++）]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_1_-_Erstellen_einer_Komponente_mit_dem_Experten_%22Neue_Komponente%22&amp;diff=171489</id>
		<title>Schritt 1 - Erstellen einer Komponente mit dem Experten &quot;Neue Komponente&quot;</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_1_-_Erstellen_einer_Komponente_mit_dem_Experten_%22Neue_Komponente%22&amp;diff=171489"/>
		<updated>2014-08-28T11:30:11Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Erstellen einer mit Stilen versehenen FireMonkey-Komponente durch Erweitern einer vorhandenen Komponente}}&lt;br /&gt;
&lt;br /&gt;
# Wählen Sie &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Komponente &amp;amp;gt; [[Neue Komponente|Neue Komponente]]&#039;&#039;&#039;&amp;lt;/font&amp;gt;.&lt;br /&gt;
# Wählen Sie auf der ersten Seite des Experten [[Neue Komponente|Neue Komponente]] die Option &#039;&#039;&#039;{{FM}} für {{Delphi}}&#039;&#039;&#039; oder &#039;&#039;&#039;{{FM}} für C++&#039;&#039;&#039; aus:&amp;amp;nbsp;:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#:[[Image:NewComponentPerson1.png]]&lt;br /&gt;
# Wählen Sie auf der Seite &#039;&#039;&#039;Vorfahrkomponente&#039;&#039;&#039; die Komponente &#039;&#039;&#039;[[lib_de:FMX.StdCtrls.TLabel|TLabel]]&#039;&#039;&#039; als Vorfahre der neuen Komponente aus:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#:[[Image:AncestorComponentStep.png]]&lt;br /&gt;
# Geben Sie &#039;&#039;&#039;TClockLabel&#039;&#039;&#039; auf der Seite &#039;&#039;&#039;Neue Komponente&#039;&#039;&#039; als Name der Klasse ein. Geben Sie im Feld &#039;&#039;&#039;Unit-Name&#039;&#039;&#039; {{Path|{{ProjectsPath}}\ClockLabel.pas}} als Name der zu erstellenden Datei ein:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#:[[Image:ComponentPage.png]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#: &#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Merken Sie sich den angegebenen Pfad.&lt;br /&gt;
# Aktivieren Sie auf der Seite &#039;&#039;&#039;Unit erstellen&#039;&#039;&#039; das Optionsfeld &#039;&#039;&#039;In neues Package installieren&#039;&#039;&#039;:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#:[[Image:InstalltoNew.png]]&lt;br /&gt;
# Geben Sie auf der Seite &#039;&#039;&#039;Neues Package&#039;&#039;&#039; als Name des neuen Package, das erstellt werden soll, &#039;&#039;&#039;ClockLabel&#039;&#039;&#039; ein:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#:[[Image:NewPackageClockLabel.png]]&lt;br /&gt;
# Der Experte öffnet das Dialogfeld &#039;&#039;&#039;&#039;&amp;amp;lt;Unit-Datei&amp;amp;gt;&#039; speichern unter&#039;&#039;&#039;, in dem Sie den Namen und den Pfad der generierten Unit-Datei bestätigen müssen.&lt;br /&gt;
## Erstellen Sie ein neues Komponenten-Package, indem Sie auf &#039;&#039;&#039;Neuer Ordner&#039;&#039;&#039; klicken und einen Namen, wie z. B. &#039;&#039;&#039;ClockLabel&#039;&#039;&#039;, angeben.&lt;br /&gt;
## Überprüfen Sie, ob {{Path|{{ProjectsPath}}\ClockLabel\ClockLabel.pas}} angezeigt wird. Überprüfen Sie genau, ob der angezeigte Pfad richtig ist!&lt;br /&gt;
#:[[Image:ConfirmTClockLabelUnitFile.png|600px| Unit-Datei bestätigen]]&lt;br /&gt;
# Sie haben nun ein neues Package-Projekt erstellt. Bestätigen Sie nach dem Speichern des Projekts mit &#039;&#039;&#039;Ja&#039;&#039;&#039;, dass dieses Package für {{FM}} vorgesehen ist:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#:[[Image:ConfirmUnitClockLabel.png]]&lt;br /&gt;
# Mit der folgenden Meldung wird bestätigt, dass die neue Komponente erzeugt, installiert und in {{Product}} registriert wurde:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#:[[Image:InformationPage.png]]&lt;br /&gt;
#: &#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Merken Sie sich den Pfad der erstellten &amp;lt;code&amp;gt;.BPL&amp;lt;/code&amp;gt;-Datei.&lt;br /&gt;
# Erstellen Sie eine neue [[Geräteübergreifende Anwendung|geräteübergreifende Anwendung]], indem Sie in der &#039;&#039;&#039;Projektverwaltung&#039;&#039;&#039; mit der rechten Maustaste auf die Projektgruppe klicken und aus dem Kontextmenü &#039;&#039;&#039;Neues Projekt hinzufügen&#039;&#039;&#039; wählen.  Wählen Sie &#039;&#039;&#039;Leere Anwendung&#039;&#039;&#039;.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
#:[[Image:AddNewProjectMenu.png]]&lt;br /&gt;
# Speichern Sie die neue geräteübergreifend Anwendung unter &#039;&#039;&#039;TestClockLabel.dproj&#039;&#039;&#039; und die Unit unter &#039;&#039;&#039;TestClockLabelUnit.pas&#039;&#039;&#039;. Speichern Sie die Projektgruppe unter &#039;&#039;&#039;ClockLabelProjectGroup.groupproj&#039;&#039;&#039;, indem Sie in der &#039;&#039;&#039;Projektverwaltung&#039;&#039;&#039; mit der rechten Maustaste auf den Projektgruppeneintrag klicken und im Kontextmenü &#039;&#039;&#039;Projektgruppe speichern unter&#039;&#039;&#039; auswählen. Mit diesem Befehl werden zuerst nacheinander Dialogfelder zum Speichern jedes Projekts der Projektgruppe und zum Schluss das Dialogfeld zum Speichern der Projektgruppe angezeigt.&lt;br /&gt;
# Wenn &#039;&#039;&#039;Form1&#039;&#039;&#039; im &#039;&#039;&#039;Formular-Designer&#039;&#039;&#039; geöffnet ist, wird nun in der &#039;&#039;&#039;Tool-Platte&#039;&#039;&#039; die neue &#039;&#039;&#039;TClockLabel&#039;&#039;&#039;-Komponente angezeigt. Wenn Sie aber &#039;&#039;&#039;TClockLabel&#039;&#039;&#039; im &#039;&#039;&#039;Formular-Designer&#039;&#039;&#039; einfügen, werden Sie feststellen, dass &#039;&#039;&#039;TClockLabel&#039;&#039;&#039; genauso wie &#039;&#039;&#039;TLabel&#039;&#039;&#039; aussieht. Und zwar, weil noch keine neuen Funktionen implementiert wurden.&lt;br /&gt;
#:[[Image:LastOneHere.png|600px]]&lt;br /&gt;
# Als Nächstes wird die Komponente &#039;&#039;&#039;TClockLabel&#039;&#039;&#039; implementiert.&lt;br /&gt;
&lt;br /&gt;
==Weiter==&lt;br /&gt;
&lt;br /&gt;
* [[Schritt 2 - Implementieren einer Eigenschaft zum Angeben des Formats|Schritt 2 - Implementieren einer Eigenschaft zum Angeben des Formats]]&lt;br /&gt;
&lt;br /&gt;
[[Category:XE2]]&lt;br /&gt;
[[Category:FMX]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Step 1 - Create a Component Using the New Component Wizard]]&lt;br /&gt;
[[fr:Etape 1 - Créer un composant en utilisant l&#039;expert Nouveau composant]]&lt;br /&gt;
[[ja:ステップ 1 - ［コンポーネントの新規作成］ウィザードを使ってコンポーネントを作成する]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Installieren_von_Xcode_auf_einem_Mac&amp;diff=171473</id>
		<title>Installieren von Xcode auf einem Mac</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Installieren_von_Xcode_auf_einem_Mac&amp;diff=171473"/>
		<updated>2014-08-28T11:08:25Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Mac OS X-Anwendungsentwicklung}}&lt;br /&gt;
{{Parent|Mobile iOS-Anwendungsentwicklung}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://developer.apple.com/xcode/ Xcode]&#039;&#039;&#039;, die Entwicklungs- und Debug-Umgebung auf dem Mac, stellt die erforderlichen Entwicklungsdateien für [[Mac OS X-Anwendungsentwicklung|Mac OS X]]- und [[Mobile iOS-Anwendungsentwicklung|iOS]]-Anwendungen bereit.&lt;br /&gt;
&lt;br /&gt;
Xcode kann von einer der folgenden Quellen installiert werden:&lt;br /&gt;
&lt;br /&gt;
* Doppelklicken Sie zum Installieren von Xcode auf Ihrem System auf der Mac OS X-Installations-DVD unter dem Verzeichnis für optionale Installationen auf &#039;&#039;&#039;Xcode.mpkg&#039;&#039;&#039;.&lt;br /&gt;
* Laden Sie Xcode kostenlos aus dem [http://www.apple.com/mac/app-store/ Mac App Store] herunter.&lt;br /&gt;
* Als registrierter Apple-Entwickler können Sie die kostenlose Version von Xcode als Paket (&amp;lt;code&amp;gt;.dmg&amp;lt;/code&amp;gt;) herunterladen. So registrieren Sie sich und laden Xcode herunter:&lt;br /&gt;
*# Registrieren Sie sich (kostenlos) als Apple-Entwickler unter [http://developer.apple.com/programs/register/ http://developer.apple.com/programs/register/].&lt;br /&gt;
*# Laden Sie Xcode als Paket von [https://developer.apple.com/downloads https://developer.apple.com/downloads] herunter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Arbeiten mit einem Mac und einem PC]]&lt;br /&gt;
* [[Installieren der Xcode-Befehlszeilen-Tools auf einem Mac]]&lt;br /&gt;
* [[Plattformvoraussetzungen für FireMonkey]]&lt;br /&gt;
&lt;br /&gt;
[[Category:IOS]]&lt;br /&gt;
[[Category:Mac OS X]]&lt;br /&gt;
[[Category:XE4]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Installing Xcode on a Mac]]&lt;br /&gt;
[[fr:Installation de Xcode sur un Mac]]&lt;br /&gt;
[[ja:Mac での Xcode のインストール]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=FireMonkey_Quick_Start_-_Bild-_und_Animationseffekte&amp;diff=171467</id>
		<title>FireMonkey Quick Start - Bild- und Animationseffekte</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=FireMonkey_Quick_Start_-_Bild-_und_Animationseffekte&amp;diff=171467"/>
		<updated>2014-08-28T11:02:29Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|FireMonkey Quick Start - Einführung}}&lt;br /&gt;
&lt;br /&gt;
[[File:FMQS_A2.png|link={{FM}} Quick Start - Einführung]][[File:FMQS_B2.png|link={{FM}} Quick Start - Einrichten der Entwicklungsumgebung]][[File:FMQS_C2.png|link={{FM}} Quick Start - Tutorials - Meine erste {{FM}}-Anwendung]][[File:FMQS_D2.png|link={{FM}} Quick Start - Die integrierte Entwicklungsumgebung (IDE)]][[File:FMQS_E2.png|link={{FM}} Quick Start - Programmiersprachen {{Delphi}} und C++]][[File:FMQS_F2.png|link={{FM}} Quick Start - Entwerfen der Benutzeroberfläche]][[File:FMQS_G2.png|link={{FM}} Quick Start - Verbinden mit Daten]][[File:FMQS_H2.png|link={{FM}} Quick Start - Erstellen von 3D-Anwendungen]][[File:FMQS_I.png|link={{FM}} Quick Start - Bild- und Animationseffekte]][[File:FMQS_J2.png|link={{FM}} Quick Start - Weitere Informationen]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:FMQS_12.png|link={{FM}} Quick Start - Einführung]][[File:FMQS_22.png|link={{FM}} Quick Start - Einrichten der Entwicklungsumgebung]][[File:FMQS_32.png|link={{FM}} Quick Start - Tutorials - Meine erste {{FM}}-Anwendung]][[File:FMQS_42.png|link={{FM}} Quick Start - Die integrierte Entwicklungsumgebung (IDE)]][[File:FMQS_5.png|link={{FM}} Quick Start - Entwerfen der Benutzeroberfläche]][[File:FMQS_62.png|link={{FM}} Quick Start - Weitere Informationen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die integrierte {{FM}} ImageFX-Engine bietet eine einfach zu verwendende schattierergestützte GPU-Bildverarbeitung ohne komplexe Programmierung. Mit der ImageFX-Engine können Bildumwandlungen, Echtzeiteffekte, UI-Effekte und vieles mehr durchgeführt werden. Wie Photoshop und CoreImage unterstützt ImageFX mehrere Filter und nutzt gleichzeitig eine einzelne dynamische GPU-Anweisungspipeline für eine zeitnahe, pixelgenaue Darstellung.&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png|16px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[[File:Tiger no outline 2.png|219px]]&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png|16px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Tutorial: In [[Verwenden von FireMonkey-Bildeffekten]]&#039;&#039;&#039; erhalten Sie einen Überblick über Bildeffekte in {{FM}}-Anwendungen.&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle HD- und 3D-Objekte von {{FM}} können über zeitbasierte Animationen zum Erstellen von Bewegung, Übergängen und Effekten animiert werden. Sie können Animationen zum Erstellen von hochinteraktiven Anwendungen, Kiosks und Demonstrationen an Benutzersteuerelemente und Eingabemethoden, wie Maus-, Touch- und Bewegungs-Controller, koppeln.&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png|16px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Butterfly.png|300px]]&lt;br /&gt;
 &lt;br /&gt;
[[File:WhiteSpace50.png|16px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Tutorial: In [[Verwenden von FireMonkey-Animationseffekten]]&#039;&#039;&#039; erhalten Sie einen Überblick über Animationseffekte in {{FM}}-Anwendungen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Next Page.png|right|100px|link={{FM}} Quick Start - Weitere Informationen]]&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: {{FM}} Quick Start]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:FireMonkey Quick Start Guide - Using Image and Animation Effects]]&lt;br /&gt;
[[fr:Guide de prise en main FireMonkey - Utilisation des effets d&#039;image et d&#039;animation]]&lt;br /&gt;
[[ja:FireMonkey クイック スタート ガイド - 画像効果とアニメーション効果の利用]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=FireMonkey_Quick_Start_-_Tutorials_-_Meine_erste_FireMonkey-Anwendung&amp;diff=171466</id>
		<title>FireMonkey Quick Start - Tutorials - Meine erste FireMonkey-Anwendung</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=FireMonkey_Quick_Start_-_Tutorials_-_Meine_erste_FireMonkey-Anwendung&amp;diff=171466"/>
		<updated>2014-08-28T10:57:50Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|FireMonkey Quick Start - Einführung}}&lt;br /&gt;
&lt;br /&gt;
[[File:FMQS_A2.png|link={{FM}} Quick Start - Einführung]][[File:FMQS_B2.png|link={{FM}} Quick Start - Einrichten der Entwicklungsumgebung]][[File:FMQS_C.png|link={{FM}} Quick Start - Tutorials - Meine erste {{FM}}-Anwendung]][[File:FMQS_D2.png|link={{FM}} Quick Start - Die integrierte Entwicklungsumgebung (IDE)]][[File:FMQS_E2.png|link={{FM}} Quick Start - Programmiersprachen {{Delphi}} und C++]][[File:FMQS_F2.png|link={{FM}} Quick Start - Entwerfen der Benutzeroberfläche]][[File:FMQS_G2.png|link={{FM}} Quick Start - Verbinden mit Daten]][[File:FMQS_H2.png|link={{FM}} Quick Start - Erstellen von 3D-Anwendungen]][[File:FMQS_I2.png|link={{FM}} Quick Start - Bild- und Animationseffekte]][[File:FMQS_J2.png|link={{FM}} Quick Start - Weitere Informationen]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:FMQS_12.png|link={{FM}} Quick Start - Einführung]][[File:FMQS_22.png|link={{FM}} Quick Start - Einrichten der Entwicklungsumgebung]][[File:FMQS_3.png|link={{FM}} Quick Start - Tutorials - Meine erste {{FM}}-Anwendung]][[File:FMQS_42.png|link={{FM}} Quick Start - Die integrierte Entwicklungsumgebung (IDE)]][[File:FMQS_52.png|link={{FM}} Quick Start - Entwerfen der Benutzeroberfläche]][[File:FMQS_62.png|link={{FM}} Quick Start - Weitere Informationen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beginnen Sie nun mit der Entwicklung Ihrer ersten {{FM}}-Anwendung.&lt;br /&gt;
&lt;br /&gt;
Diese Tutorials vermitteln Ihnen ein Grundverständnis über den Entwicklungsablauf auf der {{FM}}-Anwendungsplattform. Das erste Tutorial besteht aus einem einfach nachzuvollziehenden Tutorial für eine &amp;quot;Hello World&amp;quot;-Anwendung, in dem die wesentlichen Schritte beim Erstellen einer {{FM}}-Anwendung für Desktop-Plattformen (Windows, Mac OS X) gezeigt werden. Die grundlegenden Entwicklungsschritte sind für Windows und Mac gleich.&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
[[File:My_First_FireMonkey_Application_on_Windows.png]] [[File:My_First_FireMonkey_Application_on_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Tutorial:&#039;&#039;&#039; In &#039;&#039;&#039;[[Erstellen einer FireMonkey-Anwendung für Desktop-Plattformen (C++)]]&#039;&#039;&#039; werden die grundlegenden Schritte bei der Entwicklung von C++-Anwendungen für Desktop-Plattformen (Windows und Mac OS X) beschrieben.&lt;br /&gt;
* &#039;&#039;&#039;Tutorial:&#039;&#039;&#039; In &#039;&#039;&#039;[[Erstellen einer FireMonkey-Anwendung für Desktop-Plattformen]] ({{Delphi}})&#039;&#039;&#039; werden die grundlegenden Schritte bei der Entwicklung von {{Delphi}}-Anwendungen für Desktop-Plattformen (Windows und Mac OS X) beschrieben.&lt;br /&gt;
* In &#039;&#039;&#039;[[Mobile-Tutorial: Erstellen einer Anwendung für mobile Plattformen (iOS und Android)]]&#039;&#039;&#039; wird die Entwicklung einer Anwendung für mobile Plattformen (iOS und Android) beschrieben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Next Page.png|right|100px|link={{FM}} Quick Start - Die integrierte Entwicklungsumgebung (IDE)]]&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: {{FM}} Quick Start]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:FireMonkey Quick Start Guide - Tutorials - My First FireMonkey Application]]&lt;br /&gt;
[[fr:Guide de prise en main FireMonkey - Tutoriels - Ma première application FireMonkey]]&lt;br /&gt;
[[ja:FireMonkey クイック スタート ガイド - チュートリアル - 初めての FireMonkey アプリケーション]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=FireMonkey_Quick_Start_-_Die_integrierte_Entwicklungsumgebung_(IDE)&amp;diff=171465</id>
		<title>FireMonkey Quick Start - Die integrierte Entwicklungsumgebung (IDE)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=FireMonkey_Quick_Start_-_Die_integrierte_Entwicklungsumgebung_(IDE)&amp;diff=171465"/>
		<updated>2014-08-28T10:57:12Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|FireMonkey Quick Start - Einführung}}&lt;br /&gt;
&lt;br /&gt;
[[File:FMQS_A2.png|link={{FM}} Quick Start - Einführung]][[File:FMQS_B2.png|link={{FM}} Quick Start - Einrichten der Entwicklungsumgebung]][[File:FMQS_C2.png|link={{FM}} Quick Start - Tutorials - Meine erste {{FM}}-Anwendung]][[File:FMQS_D.png|link={{FM}} Quick Start - Die integrierte Entwicklungsumgebung (IDE)]][[File:FMQS_E2.png|link={{FM}} Quick Start - Programmiersprachen {{Delphi}} und C++]][[File:FMQS_F2.png|link={{FM}} Quick Start - Entwerfen der Benutzeroberfläche]][[File:FMQS_G2.png|link={{FM}} Quick Start - Verbinden mit Daten]][[File:FMQS_H2.png|link={{FM}} Quick Start - Erstellen von 3D-Anwendungen]][[File:FMQS_I2.png|link={{FM}} Quick Start - Bild- und Animationseffekte]][[File:FMQS_J2.png|link={{FM}} Quick Start - Weitere Informationen]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:FMQS_12.png|link={{FM}} Quick Start - Einführung]][[File:FMQS_22.png|link={{FM}} Quick Start - Einrichten der Entwicklungsumgebung]][[File:FMQS_32.png|link={{FM}} Quick Start - Tutorials - Meine erste {{FM}}-Anwendung]][[File:FMQS_4.png|link={{FM}} Quick Start - Die integrierte Entwicklungsumgebung (IDE)]][[File:FMQS_52.png|link={{FM}} Quick Start - Entwerfen der Benutzeroberfläche]][[File:FMQS_62.png|link={{FM}} Quick Start - Weitere Informationen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie {{variables|Product}} starten, wird die integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) geöffnet, in der zahlreiche Tools und Menüs zur Verfügung stehen. In der IDE können Sie Benutzeroberflächen entwickeln, Objekteigenschaften festlegen, Quelltext verfassen und Ihre Anwendung anzeigen und verwalten.&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IDE_Overview.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hilfethemen ====&lt;br /&gt;
* [[Verwendung von Projektvorlagen aus der Objektablage (IDE-Tutorial)|Verwendung von Projektvorlagen aus der Objektablage]]&lt;br /&gt;
* [[Elementare Anpassungen des Hauptformulars (IDE-Tutorial)|Elementare Anpassungen des Hauptformulars]]&lt;br /&gt;
* [[Hinzufügen von Komponenten im Formular-Designer (IDE-Tutorial)|Hinzufügen von Komponenten im Formular-Designer]]&lt;br /&gt;
* [[Anpassen der Komponenten (IDE-Tutorial)|Anpassen der Komponenten]]&lt;br /&gt;
* [[Programmieren von Reaktionen auf Benutzeraktionen im Quelltext-Editor (IDE-Tutorial)|Programmieren von Reaktionen auf Benutzeraktionen im Quelltext-Editor]]&lt;br /&gt;
* [[Compilieren und Ausführen der Anwendung (IDE-Tutorial)|Compilieren und Ausführen der Anwendung]]&lt;br /&gt;
* [[Debuggen der Anwendung (IDE-Tutorial)|Debuggen der Anwendung]]&lt;br /&gt;
&lt;br /&gt;
[[File:Next Page.png|right|100px|link={{FM}} Quick Start - Programmiersprachen {{Delphi}} und C++]]&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: {{FM}} Quick Start]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:FireMonkey Quick Start Guide - The Integrated Development Environment (IDE)]]&lt;br /&gt;
[[fr:Guide de prise en main FireMonkey - L&#039;environnement de développement intégré (EDI)]]&lt;br /&gt;
[[ja:FireMonkey クイック スタート ガイド - 統合開発環境（IDE）]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=FireMonkey_Quick_Start_-_Entwerfen_der_Benutzeroberfl%C3%A4che&amp;diff=171463</id>
		<title>FireMonkey Quick Start - Entwerfen der Benutzeroberfläche</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=FireMonkey_Quick_Start_-_Entwerfen_der_Benutzeroberfl%C3%A4che&amp;diff=171463"/>
		<updated>2014-08-28T10:55:06Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|FireMonkey Quick Start - Einführung}}&lt;br /&gt;
&lt;br /&gt;
[[File:FMQS_A2.png|link={{FM}} Quick Start - Einführung]][[File:FMQS_B2.png|link={{FM}} Quick Start - Einrichten der Entwicklungsumgebung]][[File:FMQS_C2.png|link={{FM}} Quick Start - Tutorials - Meine erste {{FM}}-Anwendung]][[File:FMQS_D2.png|link={{FM}} Quick Start - Die integrierte Entwicklungsumgebung (IDE)]][[File:FMQS_E2.png|link={{FM}} Quick Start - Programmiersprachen {{Delphi}} und C++]][[File:FMQS_F.png|link={{FM}} Quick Start - Entwerfen der Benutzeroberfläche]][[File:FMQS_G2.png|link={{FM}} Quick Start - Verbinden mit Daten]][[File:FMQS_H2.png|link={{FM}} Quick Start - Erstellen von 3D-Anwendungen]][[File:FMQS_I2.png|link={{FM}} Quick Start - Bild- und Animationseffekte]][[File:FMQS_J2.png|link={{FM}} Quick Start - Weitere Informationen]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:FMQS_12.png|link={{FM}} Quick Start - Einführung]][[File:FMQS_22.png|link={{FM}} Quick Start - Einrichten der Entwicklungsumgebung]][[File:FMQS_32.png|link={{FM}} Quick Start - Tutorials - Meine erste {{FM}}-Anwendung]][[File:FMQS_42.png|link={{FM}} Quick Start - Die integrierte Entwicklungsumgebung (IDE)]][[File:FMQS_5.png|link={{FM}} Quick Start - Entwerfen der Benutzeroberfläche]][[File:FMQS_62.png|link={{FM}} Quick Start - Weitere Informationen]]&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{FM}} enthält einen umfangreichen Satz von Drag&amp;amp;amp;Drop-Steuerelementen für die Benutzeroberfläche. Wählen Sie Schaltflächen, Menüs, HUDs, Text, Kombinationsfelder, Tabellen, Registerkarten, Bereiche und vieles mehr, um Benutzeroberflächen ansprechend zu gestalten. Steuerelemente können vollständig angepasst und mit {{FM}}-HD-Stilen Ihren Wünschen entsprechend dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Mit {{FM}}-HD-Stilen können Sie das Aussehen und Verhalten von HD-Benutzeroberflächen vollständig steuern, ohne Programmierung und ohne ein Experte für Auszeichnungssprachen zu sein. Stile können von Entwicklern oder Designern erstellt oder geändert werden. Wählen Sie aus einer Bibliothek mit vorhandenen Stilen den gewünschten aus, oder erstellen Sie eigene Benutzeroberflächen (UIs) für Ihre Anwendungen. Falls Sie das traditionelle native Design des Betriebssystems bevorzugen, haben Sie mit {{FM}} die Möglichkeit, die Windows 7-, Windows 8-, Mac OS X-, iOS- und Android-UIs beizubehalten.&lt;br /&gt;
  &lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UI_Components.png]] [[File:WhiteSpace50.png]] [[File:Native_OS_layered400w.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Tutorial:&#039;&#039;&#039; In [[Anpassen des Designs einer FireMonkey-Anwendung]] werden die Schritte zum Auswählen von Stilen für Ihre Anwendungen beschrieben. Darüber hinaus wird in diesem Tutorial die Anpassung des Aussehens und Verhaltens einer bestimmten Komponente durch Ändern des Stils erläutert.&lt;br /&gt;
&lt;br /&gt;
[[File:Next Page.png|right|100px|link={{FM}} Quick Start - Verbinden mit Daten]]&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:FireMonkey Quick Start - Entwerfen der Benutzeroberflache}}&lt;br /&gt;
[[Category:{{FM}} Quick Start]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:FireMonkey Quick Start Guide - Designing User Interface]]&lt;br /&gt;
[[fr:Guide de prise en main FireMonkey - Conception de l&#039;interface utilisateur]]&lt;br /&gt;
[[ja:FireMonkey クイック スタート ガイド - ユーザー インターフェイスの設計]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=FireMonkey_Quick_Start_-_Erstellen_von_3D-Anwendungen&amp;diff=171460</id>
		<title>FireMonkey Quick Start - Erstellen von 3D-Anwendungen</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=FireMonkey_Quick_Start_-_Erstellen_von_3D-Anwendungen&amp;diff=171460"/>
		<updated>2014-08-28T10:52:54Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|FireMonkey Quick Start - Einführung}}&lt;br /&gt;
&lt;br /&gt;
[[File:FMQS_A2.png|link=FireMonkey Quick Start - Einführung]][[File:FMQS_B2.png|link=FireMonkey Quick Start - Einrichten der Entwicklungsumgebung]][[File:FMQS_C2.png|link=FireMonkey Quick Start - Tutorials - Meine erste FireMonkey-Anwendung]][[File:FMQS_D2.png|link=FireMonkey Quick Start - Die integrierte Entwicklungsumgebung (IDE)]][[File:FMQS_E2.png|link=FireMonkey Quick Start - Programmiersprachen Delphi und C++]][[File:FMQS_F2.png|link=FireMonkey Quick Start - Entwerfen der Benutzeroberfläche]][[File:FMQS_G2.png|link=FireMonkey Quick Start - Verbinden mit Daten]][[File:FMQS_H.png|link=FireMonkey Quick Start - Erstellen von 3D-Anwendungen]][[File:FMQS_I2.png|link=FireMonkey Quick Start - Bild- und Animationseffekte]][[File:FMQS_J2.png|link=FireMonkey Quick Start - Weitere Informationen]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:FMQS_12.png|link=FireMonkey Quick Start - Einführung]][[File:FMQS_22.png|link=FireMonkey Quick Start - Einrichten der Entwicklungsumgebung]][[File:FMQS_32.png|link=FireMonkey Quick Start - Tutorials - Meine erste FireMonkey-Anwendung]][[File:FMQS_42.png|link=FireMonkey Quick Start - Die integrierte Entwicklungsumgebung (IDE)]][[File:FMQS_5.png|link=FireMonkey Quick Start - Entwerfen der Benutzeroberfläche]][[File:FMQS_62.png|link=FireMonkey Quick Start - Weitere Informationen]]&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FireMonkey 3D-Formulare stellen eine komplette GPU-gestützte 3D-Oberfläche mit Lichteinfall, Texturen und Animationen für hochinteraktive Benutzeroberflächen bereit.&lt;br /&gt;
&lt;br /&gt;
Sie können 3D-Steuerelemente, -Objekte und -Netze aus 3D-Entwurfs-Packages, wie COLLADA, 3DS und anderen, importieren.&lt;br /&gt;
 &lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:3dimage.png|300px]] [[File:WhiteSpace50.png]] [[File:3d_image2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Tutorial:&#039;&#039;&#039; In [[Erstellen der Benutzeroberfläche (FireMonkey 3D-Tutorial)|Erstellen der Benutzeroberfläche]] wird das schrittweise Erstellen einer einfachen FireMonkey-3D-Anwendung gezeigt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Next Page.png|right|100px|link=FireMonkey Quick Start - Bild- und Animationseffekte]]&lt;br /&gt;
&lt;br /&gt;
[[File:WhiteSpace50.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
==Weitere Informationen==&lt;br /&gt;
* [[FireMonkey 3D]]&lt;br /&gt;
&lt;br /&gt;
[[Category: {{FM}} Quick Start]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:FireMonkey Quick Start Guide - Creating a 3D Application]]&lt;br /&gt;
[[fr:Guide de prise en main FireMonkey - Création d&#039;une application 3D]]&lt;br /&gt;
[[ja:FireMonkey クイック スタート ガイド - 3D アプリケーションの作成]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=FireMonkey-Komponentenbibliothek&amp;diff=171458</id>
		<title>FireMonkey-Komponentenbibliothek</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=FireMonkey-Komponentenbibliothek&amp;diff=171458"/>
		<updated>2014-08-28T10:49:46Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|FireMonkey-Komponentenhandbuch}}&lt;br /&gt;
&lt;br /&gt;
Die folgende Abbildung zeigt die Beziehung zwischen einigen Hauptklassen, aus denen sich die {{FM}}-Hierarchie zusammensetzt. Beim Erstellen einer {{FM}}-Komponente müssen Sie entscheiden, welche Klasse als Vorfahr (Erweiterungspunkt) für die Implementierung eines bestimmten Features verwendet werden soll. Ein Beispiel finden Sie unter [[Erstellen einer mit Stilen versehenen FireMonkey-Komponente durch Erweitern einer vorhandenen Komponente]].&lt;br /&gt;
&lt;br /&gt;
[[image:FireMonkeyHierarchy2.png]]&lt;br /&gt;
&lt;br /&gt;
==[[lib_de:System.TObject|System.TObject]]==&lt;br /&gt;
Die Klasse &#039;&#039;&#039;TObject&#039;&#039;&#039; kapselt das grundlegende Verhalten, das allen Klassen in der Komponentenbibliothek gemeinsam ist, indem sie Methoden für Folgendes einführt:&lt;br /&gt;
* Die Möglichkeit zu reagieren, wenn Objektinstanzen erstellt oder freigegeben werden.&lt;br /&gt;
* Klassentyp- und Instanzinformationen zu einem Objekt, ebenso wie Laufzeittypinformationen (RTTI, Runtime Type Information) für seine published-Eigenschaften.&lt;br /&gt;
&lt;br /&gt;
==[[lib_de:System.Classes.TPersistent|TPersistent]]==&lt;br /&gt;
Die &#039;&#039;Persistenz&#039;&#039; legt fest, was in einer Formulardatei oder in einem Datenmodul gespeichert wird und was beim Laden des Formulars oder des Datenmoduls aus dem Speicher abgerufen wird.&lt;br /&gt;
&lt;br /&gt;
Klassen, die von &#039;&#039;&#039;TPersistent&#039;&#039;&#039; abstammen, können als published-Eigenschaft verwendet werden, damit auf diese Eigenschaften über den [[Objektinspektor]] zugegriffen werden kann.&lt;br /&gt;
&lt;br /&gt;
==[[lib_de:System.Classes.TComponent|TComponent]] – Nicht visuelle Komponenten==&lt;br /&gt;
Nicht visuelle Komponenten werden in der [[Tool-Palette]] angezeigt und können auf Formularen während des Entwurfs bearbeitet werden, sind aber für den Benutzer zur Laufzeit nicht sichtbar.&lt;br /&gt;
&lt;br /&gt;
Typische Anwendungszwecke von nicht visuellen Komponenten:&lt;br /&gt;
* Verwalten von Verbindungen mit Datenbanken&lt;br /&gt;
* Verwenden als Zeitgeber (zur Definition von Ereignissen für periodische Aktionen)&lt;br /&gt;
&lt;br /&gt;
==[[lib_de:FMX.Types.TFmxObject|TFmxObject]]==&lt;br /&gt;
&#039;&#039;&#039;TFmxObject&#039;&#039;&#039; erweitert &#039;&#039;&#039;TComponent&#039;&#039;&#039;, um für {{FM}}-Komponenten Low-Level-Funktionen wie die folgenden bereitzustellen:&lt;br /&gt;
* Erstellen, Auflösen und Freigeben von Objekten&lt;br /&gt;
* Klonen, Speichern und Laden von Objekten aus einem Stream&lt;br /&gt;
* Manipulationen von untergeordneten Objekten (Hinzufügen, Entfernen, Suchen)&lt;br /&gt;
* Freigabebenachrichtigungen&lt;br /&gt;
&lt;br /&gt;
==[[lib_de:FMX.Controls.TControl|TControl]]==&lt;br /&gt;
&#039;&#039;&#039;TControl&#039;&#039;&#039; ist die Basisklasse für FMX-Bildschirmkomponenten. In der Regel erstellen Sie eine Klasse auf der Basis von [[lib_de:FMX.Objects.TShape|TShape]], [[lib_de:FMX.Controls.TStyledControl|TStyledControl]] oder [[lib_de:FMX.Controls3D.TControl3D|TControl3D]] anstatt auf der Basis von [[lib_de:FMX.Controls.TControl|TControl]].&lt;br /&gt;
&lt;br /&gt;
===[[lib_de:FMX.Objects.TShape|TShape]] – {{FM}}-Grundelemente===&lt;br /&gt;
&#039;&#039;&#039;TShape&#039;&#039;&#039; ist die Basisklasse für grafische 2D-Grundelemente – [[lib_de:FMX.Objects.TLine|TLine]], [[lib_de:FMX.Objects.TRectangle|TRectangle]], [[lib_de:FMX.Objects.TPath|TPath]] und andere. Diese Klassen überschreiben die &#039;&#039;&#039;Paint&#039;&#039;&#039;-Methode, um sich selbst zu zeichnen. Diese Klassen ändern ihr Aussehen und Verhalten nicht selbst. Für verschiedene Stile können Sie Folgendes auswählen:&lt;br /&gt;
* Ein Grundelement mit unterschiedlichen, festgelegten Eigenschaften&lt;br /&gt;
* Unterschiedliche Grundelemente auf Basis eines Stils&lt;br /&gt;
&lt;br /&gt;
===[[lib_de:FMX.Controls.TStyledControl|TStyledControl]] – Mit Stilen versehene Steuerelemente===&lt;br /&gt;
&#039;&#039;&#039;TStyledControl&#039;&#039;&#039; ist die Basisklasse für anpassbare und Benutzerinteraktions-Steuerelemente. Diese Klassen definieren ihr Aussehen und Verhalten durch eine Stilressource, die Sie jederzeit ändern können. Zum Erstellen der Benutzeroberfläche wird durch die Stilressource ein bestimmtes Grundelement (Menge von Grundelementen oder Menge von mit Stilen versehenen Steuerelementen) anhand einer Stildatei ausgewählt.&lt;br /&gt;
&lt;br /&gt;
===[[lib_de:FMX.Controls3D.TControl3D|TControl3D]] – 3D-Steuerelemente===&lt;br /&gt;
&#039;&#039;&#039;TControl3D&#039;&#039;&#039; erweitert &#039;&#039;&#039;TFmxObject&#039;&#039;&#039;, um Objekte bereitzustellen, die auf dem Bildschirm angezeigt werden können, indem Eigenschaften und Methoden für Folgendes hinzugefügt werden:&lt;br /&gt;
* [[lib_de:FMX.Controls3D.TControl3D.Opacity|Opazität]], [[lib_de:FMX.Controls3D.TControl3D.Scale|Skalierung]] und [[lib_de:FMX.Controls3D.TControl3D.Visible|Sichtbarkeit]]&lt;br /&gt;
* 3D-Größen:&lt;br /&gt;
** [[lib_de:FMX.Controls3D.TControl3D.Depth|Tiefe (Depth)]], [[lib_de:FMX.Controls3D.TControl3D.Height|Höhe (Height)]] und [[lib_de:FMX.Controls3D.TControl3D.Width|Breite (Width)]]&lt;br /&gt;
* 3D-Position relativ zu den X-, Y- und Z-Achsen:&lt;br /&gt;
** [[lib_de:FMX.Controls3D.TControl3D.Position|Position]]&lt;br /&gt;
* 3D-Drehung relativ zu den X-, Y- und Z-Achsen:&lt;br /&gt;
** [[lib_de:FMX.Controls3D.TControl3D.RotationAngle|RotationAngle]]&lt;br /&gt;
* Maus- und Tastaturinteraktion durch Ereignisse:&lt;br /&gt;
** [[lib_de:FMX.Controls3D.TControl3D.OnMouseDown|OnMouseDown]], [[lib_de:FMX.Controls3D.TControl3D.OnMouseMove|OnMouseMove]] oder [[lib_de:FMX.Controls3D.TControl3D.OnKeyDown|OnKeyDown]]&lt;br /&gt;
* Zeichnen und Rendern&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[Erstellen einer mit Stilen versehenen FireMonkey-Komponente durch Erweitern einer vorhandenen Komponente]]&lt;br /&gt;
[[Category:FMX]][[Category:XE2]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:FireMonkey Component Library]]&lt;br /&gt;
[[fr:Bibliothèque des composants FireMonkey]]&lt;br /&gt;
[[ja:FireMonkey コンポーネント ライブラリ]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Erstellen_einer_FireMonkey-Komponente_(C%2B%2B)&amp;diff=171446</id>
		<title>Erstellen einer FireMonkey-Komponente (C++)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Erstellen_einer_FireMonkey-Komponente_(C%2B%2B)&amp;diff=171446"/>
		<updated>2014-08-28T10:31:11Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16144&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|FireMonkey-Komponentenhandbuch}}&lt;br /&gt;
==Beispiel: Schaltflächenbereich (TPanel) in Dialogfeldern==&lt;br /&gt;
Windows und Mac OS X unterstützen Richtlinien für Benutzeroberflächen, die auch die Reihenfolge und Anordnung von Standardschaltflächen (&#039;&#039;&#039;&amp;quot;Ausführen&amp;quot;/&amp;quot;Nicht ausführen&amp;quot;/&amp;quot;Abbrechen&amp;quot;&#039;&#039;&#039;) in Dialogfeldern umfassen. Die Richtlinien für diese beiden Plattformen unterscheiden sich geringfügig. Ein einfaches Beispiel dafür ist ein &#039;&#039;&#039;Speichern&#039;&#039;&#039;-Dialogfeld mit den Schaltflächen &#039;&#039;&#039;Speichern&#039;&#039;&#039;, &#039;&#039;&#039;Nicht speichern&#039;&#039;&#039; und &#039;&#039;&#039;Abbrechen&#039;&#039;&#039;. Die hier erstellte benutzerdefinierte Komponente &#039;&#039;&#039;TDialogButtonPanel&#039;&#039;&#039; kapselt diese Unterschiede durch plattformspezifische, als RCDATA einbezogene Stildateien.&lt;br /&gt;
&lt;br /&gt;
Folgende Schritte sind erforderlich:&lt;br /&gt;
* [[Schritt 1 - Erstellen der Projekte (C++)]]&lt;br /&gt;
* [[Schritt 2 - Entwerfen des Schaltflächenbereichs (C++)]]&lt;br /&gt;
* [[Schritt 3 - Hinzufügen von Stilressourcen als RCDATA (C++)]]&lt;br /&gt;
* [[Schritt 4 - Festlegen der Größe und der Ausrichtung (C++)]]&lt;br /&gt;
* [[Schritt 5 - Benutzerdefinierte Eigenschaften (C++)]]&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[FireMonkey-Komponentendesign]]&lt;br /&gt;
* [[Verwenden des Experten für neue Komponenten]]&lt;br /&gt;
* [[Erstellen einer FireMonkey-Komponente ({{Delphi}})]]&lt;br /&gt;
* [[Erstellen einer mit Stilen versehenen FireMonkey-Komponente durch Erweitern einer vorhandenen Komponente ]]&lt;br /&gt;
* [[Erstellen eines grundlegenden FireMonkey-Steuerelements]]&lt;br /&gt;
[[Category:XE3]][[Category:FMX]][[Category:C++]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Creating a FireMonkey Component (C++)]]&lt;br /&gt;
[[fr:Création d&#039;un composant FireMonkey (C++)]]&lt;br /&gt;
[[ja:FireMonkey コンポーネントの作成（C++）]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Suchen_von_Definitionen_von_Klassen-,_Interface-,_Typ-_und_Klassen/Interface-Membern_mit_dem_C%2B%2B-Klassen-Explorer&amp;diff=171360</id>
		<title>Suchen von Definitionen von Klassen-, Interface-, Typ- und Klassen/Interface-Membern mit dem C++-Klassen-Explorer</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Suchen_von_Definitionen_von_Klassen-,_Interface-,_Typ-_und_Klassen/Interface-Membern_mit_dem_C%2B%2B-Klassen-Explorer&amp;diff=171360"/>
		<updated>2014-08-27T10:19:34Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-16061&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|C++-Klassen-Explorer - Themen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Klassen und Interfaces erscheinen im C++-Klassen-Explorer automatisch. Die Deklarationen werden im Fenster &#039;&#039;&#039;Quelle&#039;&#039;&#039; angezeigt. Die Deklarationen oder die Definitionen lassen sich im &#039;&#039;&#039;Quelltext-Editor&#039;&#039;&#039; - wie im Folgenden beschrieben - suchen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;So suchen Sie die Definition eines in der Typliste angezeigten Elements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Öffnen Sie in {{CBuilder}} ein C++-Projekt, das die verwaltete [[Unit]] (.cpp-/.h-Dateien) enthält, die die Klassen, Interfaces und Typen definiert, die Sie untersuchen möchten. &lt;br /&gt;
# Wählen Sie &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Ansicht &amp;amp;gt; C++-Klassen-Explorer&#039;&#039;&#039;&amp;lt;/font&amp;gt;.&lt;br /&gt;
# Klicken Sie, nachdem sich die &#039;&#039;&#039;Typliste&#039;&#039;&#039; (linker Bereich) gefüllt hat, auf die gewünschte Klasse, das Interface, den Typ oder den Member.&lt;br /&gt;
#* Die &#039;&#039;&#039;Member-Ansicht&#039;&#039;&#039; zeigt die Member der Klasse oder des Interface an.&lt;br /&gt;
#* Im Fenster &#039;&#039;&#039;Quelle&#039;&#039;&#039; wird die Deklaration der Klasse oder des Interface schreibgeschützt angezeigt.&lt;br /&gt;
# Um die Definition eines Eintrags aus der &#039;&#039;&#039;Typliste&#039;&#039;&#039; anzuzeigen und optional zu bearbeiten, wählen Sie den Eintrag aus und führen einen der folgenden Schritte aus:&lt;br /&gt;
#* Klicken Sie mit der rechten Maustaste auf den Eintrag, und wählen Sie aus dem Kontextmenü &#039;&#039;&#039;Zur Definition wechseln&#039;&#039;&#039;. &lt;br /&gt;
#* Klicken Sie in der Symbolleiste auf die Schaltfläche &#039;&#039;&#039;Zur Definition dieser Deklaration wechseln&#039;&#039;&#039;[[image:ClExplGoToDef.png]].&lt;br /&gt;
:: Das Fenster des &#039;&#039;&#039;Quelltext-Editors&#039;&#039;&#039; wird geöffnet. Der Fokus befindet sich auf der Zeile mit der Definition, so dass Sie bei Bedarf den Quelltext ändern können. &lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[Übersicht über den C++-Klassen-Explorer]]&lt;br /&gt;
* [[C++-Klassen-Explorer (Fenster)]]&lt;br /&gt;
* [[Suchen von Deklarationen von Klassen-, Interface-, Typ- und Klassen/Interface-Membern mit dem C++-Klassen-Explorer]]&lt;br /&gt;
&lt;br /&gt;
[[Category:C++-Referenz]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
&lt;br /&gt;
[[en:Locating Definitions of Classes, Interfaces, Types, and Class/Interface Members with the C++ Class Explorer]]&lt;br /&gt;
[[fr:Localisation des définitions de classes, interfaces, types et membres de classe/interface avec l&#039;explorateur de classes C++]]&lt;br /&gt;
[[ja:C++ クラス エクスプローラでクラス、インターフェイス、型、クラス メンバ、およびインターフェイス メンバの定義を検索する]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=%C3%84ndern_des_lokalen_Stammverzeichnisses_von_SDKs_f%C3%BCr_Mac_OS_X,_iOS-Ger%C3%A4te_oder_iOS-Simulatoren&amp;diff=171296</id>
		<title>Ändern des lokalen Stammverzeichnisses von SDKs für Mac OS X, iOS-Geräte oder iOS-Simulatoren</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=%C3%84ndern_des_lokalen_Stammverzeichnisses_von_SDKs_f%C3%BCr_Mac_OS_X,_iOS-Ger%C3%A4te_oder_iOS-Simulatoren&amp;diff=171296"/>
		<updated>2014-08-27T07:29:55Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Andreeah verschob Seite Ändern des lokalen Stammverzeichnisses von SDKs für Mac OS X, iOS-Geräte oder iOS-Simulatoren nach Ändern des lokalen Stammverzeichnisses von SDKs für Mac OS X, iOS-Geräte oder den iOS-Simulator: LOC-16052&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Ändern des lokalen Stammverzeichnisses von SDKs für Mac OS X, iOS-Geräte oder den iOS-Simulator]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Vorlage:TrueOption&amp;diff=171054</id>
		<title>Vorlage:TrueOption</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Vorlage:TrueOption&amp;diff=171054"/>
		<updated>2014-08-26T11:18:15Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Created Template LOC-15995&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:NewerTrueCheckbox.png|true]]&amp;lt;noinclude&amp;gt;[[Category:Formatierungsvorlagen]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=%C3%9Cbertragen_von_%C3%84nderungen_an_die_Versionskontrolle&amp;diff=170935</id>
		<title>Übertragen von Änderungen an die Versionskontrolle</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=%C3%9Cbertragen_von_%C3%84nderungen_an_die_Versionskontrolle&amp;diff=170935"/>
		<updated>2014-08-25T09:14:10Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-15897&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Subversion-Integration in der IDE}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beim Übertragen wird eine Datei oder ein Projekt im Repository gespeichert. Alle Benutzer können dann auf die Änderungen zugreifen, indem Sie ihre lokalen Kopien der Datei oder des Projekts aktualisieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Commit&#039;&#039;&#039; überträgt Ihre Änderungen an das lokale oder Remote-Repository.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;So übertragen Sie eine bestimmte Datei:&#039;&#039;&#039;&lt;br /&gt;
# Klicken Sie in der [[Projektverwaltung]] mit der rechten Maustaste auf die Datei, die Sie übertragen möchten.&lt;br /&gt;
# Wählen Sie im Kontextmenü {{Menu|Subversion &amp;gt; Übertragen}}. Der Bereich [[Übergeben (SVN)]] wird im Hauptfenster der IDE angezeigt.&lt;br /&gt;
# Geben Sie in das Feld &#039;&#039;&#039;Kommentar&#039;&#039;&#039; einen Kommentar für das Protokoll ein. Die Kommentare der zuvor übertragenen Versionen werden angezeigt (oder können ausgewählt werden).&lt;br /&gt;
# Klicken Sie auf &#039;&#039;&#039;Übertragen&#039;&#039;&#039;. Das Versionskontrollsystem zeigt die Ergebnisse im [[Fenster: Meldungen|Meldungsfenster]] an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;So übertragen Sie ein Verzeichnis oder ein gesamtes Projekt:&#039;&#039;&#039;&lt;br /&gt;
# Klicken Sie in der [[Projektverwaltung]] mit der rechten Maustaste auf den Ordner oder das Projekt, das Sie übertragen möchten.&lt;br /&gt;
# Wählen Sie im Kontextmenü {{Menu|Subversion &amp;gt; Übertragen}}.&lt;br /&gt;
# Wählen Sie im Untermenü &#039;&#039;&#039;Übertragen&#039;&#039;&#039; des Kontextmenüs einen der folgenden Befehle aus:&lt;br /&gt;
#* &#039;&#039;&#039;Aus Repository-Stammverzeichnis&#039;&#039;&#039; durchsucht die Verzeichnisstruktur nach dem letzten Verzeichnis, das von demselben Repository wie die Projektdatei verwaltet wird und fügt dann dem Bereich &#039;&#039;&#039;Übertragen&#039;&#039;&#039; alle Dateien aus diesem Verzeichnis und aus dessen Unterverzeichnissen hinzu.&lt;br /&gt;
#* &#039;&#039;&#039;Aus Projektverzeichnis&#039;&#039;&#039; fügt dem Bereich &#039;&#039;&#039;Übertragen&#039;&#039;&#039; alle Dateien aus dem Projektverzeichnis und aus dessen Unterverzeichnissen hinzu.&lt;br /&gt;
#* &#039;&#039;&#039;Dateien in diesem Projekt&#039;&#039;&#039; fügt dem Bereich &#039;&#039;&#039;Übertragen&#039;&#039;&#039; alle in der &#039;&#039;&#039;Projektverwaltung&#039;&#039;&#039; aufgelisteten Dateien (und zugehörige Dateien) hinzu.&lt;br /&gt;
# Der Bereich [[Übergeben (SVN)|Übergeben]] wird im Hauptfenster der IDE angezeigt. Wählen Sie im Feld &#039;&#039;&#039;Übertragen nach: Position&#039;&#039;&#039; die Dateien aus, die Sie übertragen möchten.&lt;br /&gt;
# Geben Sie in das Feld &#039;&#039;&#039;Kommentar&#039;&#039;&#039; einen Kommentar für das Protokoll ein. Die Kommentare der zuvor übertragenen Versionen werden angezeigt.&lt;br /&gt;
# Klicken Sie auf &#039;&#039;&#039;Übertragen&#039;&#039;&#039;. Das Versionskontrollsystem zeigt die Ergebnisse im [[Fenster: Meldungen|Meldungsfenster]] an.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Hinweis&#039;&#039;&#039;: Um Konflikte zwischen Versionen zu vermeiden, sollten Sie vor dem Ändern immer eine Aktualisierung Ihrer lokalen Dateien durchführen. Andernfalls besteht das Risiko, dass Sie eine veraltete Datei übertragen, was zu Sperrungen führen kann, die Sie mit dem Befehl &#039;&#039;&#039;Bereinigen&#039;&#039;&#039; (verfügbar in der [[Projektverwaltung]]) wieder beheben müssen. Für Subversion können Sie  [[Aktualisieren (SVN)]] verwenden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[Subversion-Integration in der IDE]]&lt;br /&gt;
* [[Übergeben (SVN)]]&lt;br /&gt;
* [[Aktualisieren (SVN)]]&lt;br /&gt;
* [[Versionsverwaltung]]&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Ubertragen von Anderungen an die Versionskontrolle}}&lt;br /&gt;
[[Category:{{Delphi}}]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Committing Changes to Version Control]]&lt;br /&gt;
[[fr:Validation des modifications dans le contrôle de version]]&lt;br /&gt;
[[ja:変更をバージョン管理にコミットする]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Auschecken_einer_Kopie_eines_Repository&amp;diff=170931</id>
		<title>Auschecken einer Kopie eines Repository</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Auschecken_einer_Kopie_eines_Repository&amp;diff=170931"/>
		<updated>2014-08-25T08:46:08Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-15897&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Subversion-Integration in der IDE}}&lt;br /&gt;
&lt;br /&gt;
An ein bestimmtes Subversion-Kontrollsystem übertragene Dateien holen Sie auf Ihren lokalen Computer, in dem Sie eine Kopie eines Remote-Repository herunterladen.&lt;br /&gt;
&lt;br /&gt;
# Wählen Sie {{Menu|Datei &amp;gt; Aus der Versionskontrolle öffnen &amp;gt; Subversion}}. Das Dialogfeld [[Auschecken (SVN)|Auschecken]] wird angezeigt.&lt;br /&gt;
# Geben Sie die Adresse des Repository in das Feld &#039;&#039;&#039;URL des Repository&#039;&#039;&#039; ein oder klicken Sie auf die Ellipsen-Schaltfläche, um danach zu suchen. Beispiel: &amp;lt;nowiki&amp;gt;http://dtg-svn/myco.net/source/trunk&amp;lt;/nowiki&amp;gt;) &lt;br /&gt;
# Geben Sie das Verzeichnis für die herunterladenen Dateien in das Feld &#039;&#039;&#039;Ziel&#039;&#039;&#039; ein, oder klicken Sie auf die Ellipsen-Schaltfläche [...], um danach zu suchen.&lt;br /&gt;
# Wählen Sie die Subversion-Optionen aus:&lt;br /&gt;
#* Aktivieren Sie &#039;&#039;&#039;Rekursiv&#039;&#039;&#039;, wenn Sie auch alle Dateien auschecken möchten, die sich in Unterverzeichnissen der Repository-Adresse befinden.&lt;br /&gt;
#* Aktivieren Sie &#039;&#039;&#039;Externals einschließen&#039;&#039;&#039;, wenn Dateien einbezogen werden sollen, die erforderlich aber eigentlich kein Bestandteil des Repository sind.&lt;br /&gt;
#* Aktivieren Sie das Kontrollkästchen &#039;&#039;&#039;Aktuelle Revision&#039;&#039;&#039;, oder deaktivieren Sie es, und geben Sie eine Revisionsnummer ein.&lt;br /&gt;
# Klicken Sie auf &#039;&#039;&#039;OK&#039;&#039;&#039;, um den Kopiervorgang zu starten, oder klicken Sie auf &#039;&#039;&#039;Abbrechen&#039;&#039;&#039;, um das Herunterladen abzubrechen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[Subversion-Integration in der IDE]]&lt;br /&gt;
* [[Auschecken (SVN)]]&lt;br /&gt;
* [[Übergeben (SVN)]]&lt;br /&gt;
* [[Versionsverwaltung]]&lt;br /&gt;
&lt;br /&gt;
[[Category:{{Delphi}}]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
&lt;br /&gt;
[[en:Checking Out a Copy of a Repository]]&lt;br /&gt;
[[fr:Extraction d&#039;une copie d&#039;un référentiel]]&lt;br /&gt;
[[ja:リポジトリのコピーをチェックアウトする]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Anzeigen_von_Subversion-Kommentaren&amp;diff=170928</id>
		<title>Anzeigen von Subversion-Kommentaren</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Anzeigen_von_Subversion-Kommentaren&amp;diff=170928"/>
		<updated>2014-08-25T08:37:44Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Andreeah verschob Seite Anzeigen von Subversion-Kommentaren nach Anzeigen von Versionskontroll-Kommentaren: LOC-15897&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Anzeigen von Versionskontroll-Kommentaren]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Subversion_SSL-Server&amp;diff=169537</id>
		<title>Subversion SSL-Server</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Subversion_SSL-Server&amp;diff=169537"/>
		<updated>2014-08-06T14:15:53Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-15900&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|Subversion-Integration in der IDE}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In diesem Dialogfeld werden Sie gefragt, ob ein bestimmtes, ebenfalls in dem Dialogfeld angezeigtes SSL-Server-Zertifikat verwendet werden darf.&lt;br /&gt;
&lt;br /&gt;
Klicken Sie auf &#039;&#039;&#039;OK&#039;&#039;&#039;, wenn Sie damit einverstanden sind, oder auf &#039;&#039;&#039;Abbrechen&#039;&#039;&#039;, um es abzulehnen.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie &#039;&#039;&#039;OK&#039;&#039;&#039; wählen, können Sie diese Authentifizierung speichern, indem Sie das Kontrollkästchen &#039;&#039;&#039;Authentifizierungsdaten speichern&#039;&#039;&#039; aktivieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[Subversion-Integration in der IDE]]&lt;br /&gt;
* [[Zu öffnendes Projekt oder Projektgruppe auswählen]]&lt;br /&gt;
* [[Subversion-Anmeldung]]&lt;br /&gt;
* [[Subversion SSL-Client-Zertifikat]]&lt;br /&gt;
	&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Subversion SSL Server]]&lt;br /&gt;
[[fr:Subversion SSL Server]]&lt;br /&gt;
[[ja:［Subversion SSL サーバー］]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Subversion_SSL-Client-Zertifikat&amp;diff=169536</id>
		<title>Subversion SSL-Client-Zertifikat</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Subversion_SSL-Client-Zertifikat&amp;diff=169536"/>
		<updated>2014-08-06T14:13:15Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-15900&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Subversion-Integration in der IDE}}&lt;br /&gt;
&lt;br /&gt;
{{Menu| Ansicht &amp;gt; Projektverwaltung &amp;gt; Rechtsklick auf eine Datei &amp;gt; Subversion &amp;gt; ... }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn der Server ein SSL-Zertifikat erfordert, wird nach dem klassischen [[Subversion-Anmeldung|Anmeldungsdialogfeld]] das Dialogfeld &#039;&#039;&#039;Subversion SSL-Client-Zertifikat&#039;&#039;&#039; angezeigt.&lt;br /&gt;
&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot; &lt;br /&gt;
! &#039;&#039;&#039;Element&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Beschreibung &#039;&#039;&#039;&lt;br /&gt;
|-  valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &lt;br /&gt;
Zertifikatsdatei&lt;br /&gt;
| &lt;br /&gt;
Geben Sie den Pfad zu der für den Server erforderlichen Zertifikatsdatei ein, oder fügen Sie ihn mithilfe der Durchsuchen-Schaltfläche [[Image:BrowseForFile.jpg]] ein.&lt;br /&gt;
|-  valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &lt;br /&gt;
Zertifikat speichern&lt;br /&gt;
| &lt;br /&gt;
Aktivieren Sie dieses Kontrollkästchen, wenn dieses Zertifikat auf dem aktuellen Computer gespeichert werden soll.&lt;br /&gt;
|-  valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &lt;br /&gt;
Schaltfläche OK&lt;br /&gt;
| &lt;br /&gt;
Drücken Sie diese Schaltfläche, um das Zertifikat für den Server bereitzustellen.&lt;br /&gt;
|-  valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &lt;br /&gt;
Schaltfläche Abbrechen&lt;br /&gt;
| &lt;br /&gt;
Drücken Sie diese Schaltfläche, um den Vorgang abzubrechen.&lt;br /&gt;
|-  valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[Subversion-Integration in der IDE]]&lt;br /&gt;
* [[Zu öffnendes Projekt oder Projektgruppe auswählen]]&lt;br /&gt;
* [[Subversion-Anmeldung]]&lt;br /&gt;
* [[Subversion SSL-Server]]&lt;br /&gt;
	&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Subversion SSL Client Certificate]]&lt;br /&gt;
[[fr:Certificat Subversion SSL Client]]&lt;br /&gt;
[[ja:［Subversion SSL クライアント証明書］]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Repository-Browser&amp;diff=169522</id>
		<title>Repository-Browser</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Repository-Browser&amp;diff=169522"/>
		<updated>2014-08-06T13:22:22Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-15897&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|Projektverwaltung}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Projektverwaltung]]&#039;&#039;&#039; | Rechtsklick auf eine Datei oder ein Projekt unter SVN | {{Menu|Subversion &amp;gt; Repository durchsuchen}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Projektverwaltung]]&#039;&#039;&#039; | Rechtsklick auf ein Projekt | {{Menu|Subversion &amp;gt; Der Versionskontrolle hinzufügen}} | Klick auf [[Image:ProjectOptionsEllipsis.jpg|Ellipsen-Schaltfläche]] neben der URL des Repository&lt;br /&gt;
&lt;br /&gt;
{{Menu|Datei &amp;gt; Aus der Versionskontrolle öffnen}} | Klick auf [[Image:ProjectOptionsEllipsis.jpg|Ellipsen-Schaltfläche]] neben der URL des Repository&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Quelltext-Editor]]&#039;&#039;&#039; | Mit der rechten Maustaste auf eine Datei unter SVN klicken | {{Menu|Versionskontrolle &amp;gt; Subversion &amp;gt; Repository durchsuchen}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Repository-Browser&#039;&#039;&#039; zeigt alle Dateien und Verzeichnisse in einem gegebenen Repository an.&lt;br /&gt;
&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot; &lt;br /&gt;
! &#039;&#039;&#039;Element&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Beschreibung&#039;&#039;&#039;&lt;br /&gt;
|-  valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &lt;br /&gt;
Laden&lt;br /&gt;
| &lt;br /&gt;
Lädt die Verzeichnis- und Dateistruktur des angegebenen Repository. Wenn kein URL angegeben ist, wird das Haupt-Repository geladen.&lt;br /&gt;
|-  valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &lt;br /&gt;
URL&lt;br /&gt;
| &lt;br /&gt;
Das Stammverzeichnis des Repository, das angezeigt werden soll.&lt;br /&gt;
|-  valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &lt;br /&gt;
Revision&lt;br /&gt;
| &lt;br /&gt;
Zeigt die Dateien und Verzeichnisse mit einer angegebenen Revisionsnummer an. Die &#039;&#039;&#039;HEAD&#039;&#039;&#039;-Revision ist die zuletzt übertragene Revision.&lt;br /&gt;
|-  valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &lt;br /&gt;
Struktur&lt;br /&gt;
| &lt;br /&gt;
Hier wird die Verzeichnisstruktur des angegebenen Repository angezeigt.&lt;br /&gt;
|-  valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &lt;br /&gt;
Dateien&lt;br /&gt;
| &lt;br /&gt;
Hier werden alle Repository-Dateien und Verzeichnisse des in der Struktur ausgewählten Verzeichnisses angezeigt.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[Subversion-Integration in der IDE]]&lt;br /&gt;
* [[Auschecken (SVN)]]&lt;br /&gt;
* [[Importbereich]]&lt;br /&gt;
* [[Aktualisieren (SVN)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:{{Delphi}}]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Repository Browser]]&lt;br /&gt;
[[fr:Navigateur de référentiel]]&lt;br /&gt;
[[ja:［リポジトリ ブラウザ］]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Auschecken_(SVN)&amp;diff=169516</id>
		<title>Auschecken (SVN)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Auschecken_(SVN)&amp;diff=169516"/>
		<updated>2014-08-06T12:21:27Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-15897&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Menü Datei}}&lt;br /&gt;
&lt;br /&gt;
{{Menu|Datei &amp;gt; Aus der Versionskontrolle öffnen}} | &#039;&#039;&#039;Subversion&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Checkt eine lokale Kopie eines Repository aus, das sich unter der Kontrolle von Subversion (SVN) befindet.&lt;br /&gt;
&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot; &lt;br /&gt;
! &#039;&#039;&#039;Element&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Beschreibung&#039;&#039;&#039;&lt;br /&gt;
|-  valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &lt;br /&gt;
URL des Repository&lt;br /&gt;
| &lt;br /&gt;
Geben Sie die Adresse des Repository ein, aus dem eine lokale Kopie ausgecheckt werden soll, oder wählen Sie die Adresse aus.&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel: {{Path|&amp;lt;nowiki&amp;gt;svn://svn.code.sf.net/p/radstudiodemos/code/trunk&amp;lt;/nowiki&amp;gt;}}.&lt;br /&gt;
&lt;br /&gt;
Klicken Sie auf die [[File:BrowseForFile.jpg|Ellipsen]]-Schaltfläche [...], um nach der Repository-Adresse zu suchen.&lt;br /&gt;
|-  valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &lt;br /&gt;
Ziel&lt;br /&gt;
| &lt;br /&gt;
Geben Sie das Verzeichnis auf Ihrem lokalen System ein, in das das Repository kopiert werden soll. Klicken Sie auf die [[File:BrowseForFile.jpg|Ellipsen]] -Schaltfläche [...], um nach dem Verzeichnis zu suchen oder einen neuen Ordner zu erstellen.&lt;br /&gt;
|-  valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &lt;br /&gt;
Rekursiv&lt;br /&gt;
| &lt;br /&gt;
Legt fest, ob beim Auschecken auch alle Unterverzeichnisse einbezogen werden sollen oder nur das Stammverzeichnis.&lt;br /&gt;
|-  valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &lt;br /&gt;
Externals einschließen&lt;br /&gt;
| &lt;br /&gt;
Wenn das Projekt, das Sie auschecken, externe Verweise (Verweise auf andere Repositories) enthält, legt diese Option fest, dass auch die Dateien aus dem externen Repository ausgecheckt werden.&lt;br /&gt;
|-  valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| &lt;br /&gt;
Aktuelle&amp;amp;nbsp;Revision / Revision&lt;br /&gt;
| &lt;br /&gt;
Legt entweder fest:&lt;br /&gt;
* Dass für das Auschecken die aktuelle Revision des Repository verwendet wird (wenn &#039;&#039;&#039;Aktuelle Revision&#039;&#039;&#039; ausgewählt ist)&lt;br /&gt;
* Oder: Dass für das Auschecken die angegebene Revision verwendet wird (wenn Sie eine Revisions-ID eingeben)&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[Subversion-Integration in der IDE]]&lt;br /&gt;
* [[Auschecken einer Kopie eines Repository]]&lt;br /&gt;
* [[Versionsverwaltung]]&lt;br /&gt;
&lt;br /&gt;
[[Category:{{Delphi}}]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:IDE-Referenz]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Checkout (SVN)]]&lt;br /&gt;
[[fr:Extraire (SVN)]]&lt;br /&gt;
[[ja:［チェックアウト］（SVN）]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Unterst%C3%BCtzung_f%C3%BCr_Ressourcendateien&amp;diff=169170</id>
		<title>Unterstützung für Ressourcendateien</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Unterst%C3%BCtzung_f%C3%BCr_Ressourcendateien&amp;diff=169170"/>
		<updated>2014-07-30T15:29:48Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-15761&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Ressourcen|Ressourcen und Bilder}}&lt;br /&gt;
&lt;br /&gt;
Ressourcendateien werden nur für Desktop-Plattformen unterstützt. Das Laden von Ressourcendateien wird auf mobilen Plattformen vom Betriebssystem nicht unterstützt. Verwenden Sie zum Laden von Dateien auf ein mobiles Gerät eine andere Methode, indem Sie die Dateien z. B. extern laden.&lt;br /&gt;
&lt;br /&gt;
==Desktop-Plattformen==&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird gezeigt, wie der Text aus einer TXT-Datei mithilfe einer Ressourcendatei geladen wird.&lt;br /&gt;
&lt;br /&gt;
Um dieses Beispiel zu erzeugen und zu testen:&lt;br /&gt;
# Erstellen Sie eine [[Geräteübergreifende Anwendung]]&lt;br /&gt;
# Fügen dem Formular die folgenden Steuerelemente hinzu: &lt;br /&gt;
#* [[lib_de:FMX.StdCtrls.TButton|TButton]]&lt;br /&gt;
#* [[lib_de:FMX.StdCtrls.TLabel|TLabel]]&lt;br /&gt;
&lt;br /&gt;
# Fügen Sie die TXT-Datei dem Ordner des Projekts hinzu.&lt;br /&gt;
# Wählen Sie {{menu | Projekt &amp;amp;gt; [[Ressourcen|Ressourcen und Bilder...]]}}, und fügen Sie die TXT-Datei hinzu. &lt;br /&gt;
# Erzeugen Sie das Projekt, um die RC-Datei zu generieren, die die Referenz auf die TXT-Datei enthält.&lt;br /&gt;
# Öffnen Sie die Datei &amp;amp;lt;Projektname&amp;amp;gt;_&amp;amp;lt;Ressourcen&amp;amp;gt;.rc, in der der Name der Ressource, deren Typ und der Name der Datei enthalten ist.&lt;br /&gt;
&lt;br /&gt;
 Resource_1 RCDATA &amp;quot;&amp;lt;file_name&amp;gt;.txt&amp;quot; &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Im Fenster [[Ressourcen|Ressourcen und Bilder...]] werden diese Informationen angezeigt.&lt;br /&gt;
&amp;lt;l s=&amp;quot;cpp&amp;quot; /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;{{CBuilder}}&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt; &lt;br /&gt;
void __fastcall TForm1::Button1Click(TObject *Sender) {&lt;br /&gt;
  TResourceStream *Stream = new TResourceStream((int)HInstance, &amp;quot;&amp;lt;Ressourcenbezeichner&amp;gt;&amp;quot;, RT_RCDATA); //RT_RCDATA ist der Ressourcentyp.&lt;br /&gt;
  __try {&lt;br /&gt;
    TStringList *List = new TStringList;&lt;br /&gt;
    __try {&lt;br /&gt;
      List-&amp;gt;LoadFromStream(Stream);&lt;br /&gt;
      Label1-&amp;gt;Text = List-&amp;gt;Text;&lt;br /&gt;
    }&lt;br /&gt;
    __finally {&lt;br /&gt;
      List-&amp;gt;DisposeOf();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  __finally {&lt;br /&gt;
    Stream-&amp;gt;DisposeOf();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;l e=&amp;quot;cpp&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;l s=&amp;quot;delphi&amp;quot; /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;{{Delphi}}&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
  List: TStringList;&lt;br /&gt;
  Stream: TResourceStream;&lt;br /&gt;
begin&lt;br /&gt;
  Stream := TResourceStream.Create(HInstance, &#039;&amp;lt;Ressourcenbezeichner&amp;gt;&#039;, RT_RCDATA);&lt;br /&gt;
  try&lt;br /&gt;
    List := TStringList.Create;&lt;br /&gt;
    try&lt;br /&gt;
      List.LoadFromStream(Stream);&lt;br /&gt;
      Label1.Text := List.Text;&lt;br /&gt;
    finally&lt;br /&gt;
      List.Free;&lt;br /&gt;
    end;&lt;br /&gt;
  finally&lt;br /&gt;
    Stream.Free;&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;l e=&amp;quot;delphi&amp;quot; /&amp;gt;&lt;br /&gt;
Sie können dieses Beispiel auf mobilen Plattformen ausführen, aber Sie erhalten beim Versuch, die Ressourcen zu laden, die folgende Exception: &#039;&#039;&#039;class EResNotFound mit der Meldung &amp;quot;Ressource &amp;amp;lt;Ressourcenname&amp;amp;gt; nicht gefunden&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Mobile Plattformen==&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird gezeigt, wie der Text aus einer TXT-Datei ohne eine Ressourcendatei geladen wird.&lt;br /&gt;
&lt;br /&gt;
Um dieses Beispiel zu erzeugen und zu testen, erstellen Sie eine [[Geräteübergreifende Anwendung|mobile FireMonkey-Anwendung]], und fügen dem Formular die folgenden Steuerelemente hinzu: &lt;br /&gt;
&lt;br /&gt;
* [[lib_de:FMX.StdCtrls.TButton|TButton]]&lt;br /&gt;
* [[lib_de:FMX.StdCtrls.TLabel|TLabel]]&lt;br /&gt;
&lt;br /&gt;
# Kopieren Sie die TXT-Datei in den Ordner des Projekts.&lt;br /&gt;
# Verschieben Sie im &#039;&#039;&#039;[[Bereitstellungs-Manager|Bereitstellungs-Manager]]&#039;&#039;&#039; diese Dateien in den Ordner &amp;lt;code&amp;gt;assets\internal&amp;lt;/code&amp;gt; (intern) oder &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt; (extern).&lt;br /&gt;
# Beziehen Sie die Unit [[lib_de:System.IOUtils|System.IOUtils]] in Ihr Projekt ein, damit [[lib_de:System.IOUtils.TPath.GetDocumentsPath|GetDocumentsPath]] verwendet werden kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l s=&amp;quot;cpp&amp;quot; /&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;In {{CBuilder}}&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt; &lt;br /&gt;
void __fastcall TForm1::Button1Click(TObject *Sender)&lt;br /&gt;
{&lt;br /&gt;
  TStringList *List=new TStringList;&lt;br /&gt;
  __try {&lt;br /&gt;
    List-&amp;gt;LoadFromFile(System::Ioutils::TPath::GetDocumentsPath + PathDelim + &amp;quot;example.txt&amp;quot;); // #include &amp;lt;System.IOUtils.hpp&amp;gt;&lt;br /&gt;
    Label1-&amp;gt;Text = List-&amp;gt;Text;&lt;br /&gt;
  }&lt;br /&gt;
  __finally {&lt;br /&gt;
    List-&amp;gt;DisposeOf();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;l e=&amp;quot;cpp&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;l s=&amp;quot;delphi&amp;quot; /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;In {{Delphi}}&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure TForm6.Button1Click(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
  List: TStringList;&lt;br /&gt;
begin&lt;br /&gt;
  List := TStringList.Create;&lt;br /&gt;
  try&lt;br /&gt;
    List.LoadFromFile(TPath.GetDocumentsPath + PathDelim + &#039;example.txt&#039;); &lt;br /&gt;
    Label1.Text := List.Text;&lt;br /&gt;
  finally&lt;br /&gt;
    List.Free;&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;l e=&amp;quot;delphi&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
*[[Ressourcen|Ressourcen]]&lt;br /&gt;
*[[Projektverwaltung|Projektverwaltung]]&lt;br /&gt;
*[[lib_de:System.IOUtils|System.IOUtils]]&lt;br /&gt;
*[[Erstellen einer Android-App|Erstellen einer Android-App]]&lt;br /&gt;
*[[Erstellen von iOS-Apps|Erstellen von iOS-Apps]]&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Unterstutzung fur Ressourcendateien}}&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:XE6]]&lt;br /&gt;
&lt;br /&gt;
[[en:Resource Files Support]]&lt;br /&gt;
[[fr:Prise en charge des fichiers de ressources]]&lt;br /&gt;
[[ja:リソース ファイル サポート]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_5_-_Benutzerdefinierte_Eigenschaften_(Delphi)&amp;diff=168128</id>
		<title>Schritt 5 - Benutzerdefinierte Eigenschaften (Delphi)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Schritt_5_-_Benutzerdefinierte_Eigenschaften_(Delphi)&amp;diff=168128"/>
		<updated>2014-06-24T10:38:26Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-15540&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Erstellen einer {{FM}}-Komponente ({{Delphi}})}}&lt;br /&gt;
&lt;br /&gt;
Die Komponente benötigt eine weitere Eigenschaft, damit das Verb der Dialogfeldaktion, wie z.B. &amp;quot;Speichern&amp;quot; auf der &amp;quot;Ausführen&amp;quot;-Schaltfläche angezeigt wird. Dieses Verb ist auch mit &amp;quot;Nicht ausführen&amp;quot; auf der &amp;quot;Nicht ausführen&amp;quot;-Schaltfläche verbunden. (Eine komplexere Internationalisierung würde den Rahmen dieses Themas überschreiten.)&lt;br /&gt;
&lt;br /&gt;
Es wäre einfacher, wenn die Aufnahme des Verbs über die Eigenschaft &#039;&#039;&#039;Text&#039;&#039;&#039; der Schaltfläche durchgeführt werden könnte. Aber die Schaltflächen sind erst vorhanden, wenn der Stil übernommen wird, und bei erneuter Übernahme des Stils werden die vorhandenen Schaltflächen verworfen. Daher muss die Komponente diesen String bereitstellen. Deklarieren und implementieren Sie die Eigenschaft &#039;&#039;&#039;DoVerb&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Delphi&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
uses&lt;br /&gt;
  System.SysUtils, System.Classes, FMX.Types, FMX.Controls, System.UITypes;&lt;br /&gt;
 &lt;br /&gt;
type&lt;br /&gt;
  TDialogButtonPanel = class(TPanel)&lt;br /&gt;
  private&lt;br /&gt;
    FDoVerb: string;&lt;br /&gt;
    function GetDoVerb: string;&lt;br /&gt;
    procedure SetDoVerb(AString: string);&lt;br /&gt;
  protected&lt;br /&gt;
    function GetStyleObject: TControl; override;&lt;br /&gt;
    procedure ApplyStyle; override;&lt;br /&gt;
  public&lt;br /&gt;
    constructor Create(AOwner: TComponent); override;&lt;br /&gt;
  published&lt;br /&gt;
    property DoVerb: string read GetDoVerb write SetDoVerb;&lt;br /&gt;
    property Align default TAlignLayout.Bottom;&lt;br /&gt;
  end;&lt;br /&gt;
 &lt;br /&gt;
const&lt;br /&gt;
   DoButtonName = &#039;DoButton&#039;;&lt;br /&gt;
   DontButtonName = &#039;DontButton&#039;;&lt;br /&gt;
   CancelButtonName = &#039;CancelButton&#039;;&lt;br /&gt;
   mrDont = -mrOK;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Delphi&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
constructor TDialogButtonPanel.Create(AOwner: TComponent);&lt;br /&gt;
begin&lt;br /&gt;
  inherited;&lt;br /&gt;
  Height := 46;&lt;br /&gt;
  Width := 300;&lt;br /&gt;
  Align := TAlignLayout.Bottom;&lt;br /&gt;
  DoVerb := &#039;Verb&#039;;&lt;br /&gt;
end;&lt;br /&gt;
 &lt;br /&gt;
function TDialogButtonPanel.GetDoVerb: string;&lt;br /&gt;
var&lt;br /&gt;
  Base: TFmxObject;&lt;br /&gt;
begin&lt;br /&gt;
  Base := FindStyleResource(DoButtonName);&lt;br /&gt;
  if Base is TTextControl then&lt;br /&gt;
    FDoVerb := TTextControl(Base).Text;&lt;br /&gt;
  Result := FDoVerb;&lt;br /&gt;
end;&lt;br /&gt;
 &lt;br /&gt;
procedure TDialogButtonPanel.SetDoVerb(AString: string);&lt;br /&gt;
var&lt;br /&gt;
  Base: TFmxObject;&lt;br /&gt;
resourcestring&lt;br /&gt;
  Dont = &#039;Don&#039;#39&#039;t %s&#039;;&lt;br /&gt;
begin&lt;br /&gt;
  FDoVerb := AString;&lt;br /&gt;
  Base := FindStyleResource(DoButtonName);&lt;br /&gt;
  if Base is TTextControl then&lt;br /&gt;
    TTextControl(Base).Text := AString;&lt;br /&gt;
  Base := FindStyleResource(DontButtonName);&lt;br /&gt;
  if Base is TTextControl then&lt;br /&gt;
    TTextControl(Base).Text := Format(Dont, [AString]);&lt;br /&gt;
end;&lt;br /&gt;
 &lt;br /&gt;
procedure TDialogButtonPanel.ApplyStyle;&lt;br /&gt;
begin&lt;br /&gt;
  inherited;&lt;br /&gt;
  SetDoVerb(FDoVerb);&lt;br /&gt;
end;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der StyleName für jede der drei Schaltflächen wird zusammen mit dem modalen, &amp;quot;negativen OK&amp;quot;-Ergebniscodes für die &amp;quot;Nicht ausführen&amp;quot;-Schaltfläche als Konstante deklariert. Das Feld &amp;lt;code&amp;gt;FDoVerb&amp;lt;/code&amp;gt; wird dem Objekt zur Aufnahme des Verb-Strings hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
Zur Laufzeit erfolgt der Zugriff folgendermaßen:&lt;br /&gt;
# Wenn die Anwendung ausgeführt wird, werden alle Formulare erstellt, einschließlich des Dialogfeldformulars mit dem Schaltflächenbereich (TPanel). Die TPanel-Komponente wird durch die &amp;lt;code&amp;gt;object&amp;lt;/code&amp;gt;-Zeile beim Laden der &amp;lt;code&amp;gt;.fmx&amp;lt;/code&amp;gt;-Datei instantiiert. Der Konstruktor schreibt mit &amp;lt;code&amp;gt;SetDoVerb&amp;lt;/code&amp;gt; das Standardverb in die Eigenschaft. Das Feld wird gesetzt, und es werden keine Schaltflächen gefunden.&lt;br /&gt;
# Bei der Zuweisung der Eigenschaftswerte aus der Datei &amp;lt;code&amp;gt;.fmx&amp;lt;/code&amp;gt; wird &amp;lt;code&amp;gt;SetDoVerb&amp;lt;/code&amp;gt; erneut mit dem vom Designer gespeicherten String (z.B. &amp;quot;Speichern&amp;quot;) aufgerufen und das Feld geändert.&lt;br /&gt;
# Beim Öffnen des Dialogfelds wird es gezeichnet, und einer der vorbereitenden Schritte beim Zeichnen eines Steuerelements ist die Übernahme des Stils (falls erforderlich), wozu auch das erste Zeichnen des Steuerelements gehört. Zum Schluss wird die Prozedur &amp;lt;code&amp;gt;ApplyStyle&amp;lt;/code&amp;gt; aufgerufen, die hier überschrieben wird, um den Verb-String aus dem Feld erneut zu übernehmen. Die Prozedur weist das Feld redundant erneut zu, aber jetzt sind die Schaltflächen vorhanden, und zudem wird das Verb in der &amp;quot;Ausführen&amp;quot;-Schaltfläche und das Verb in der &amp;quot;Nicht ausführen&amp;quot;-Schaltfläche gesetzt.&lt;br /&gt;
# Das Rendern der Schaltflächen erfolgt nicht in der Funktion &amp;lt;code&amp;gt;GetDoVerb&amp;lt;/code&amp;gt;, weil die Schaltflächen, die den Stil umfassen, direkt gerendert werden, und sie bereits über die Setter-Methode den passenden Text erhalten haben. Die Getter-Methode wird hauptsächlich vom Formular-Designer und von Laufzeitcode verwendet, der die Eigenschaften der TPanel-Komponente ermittelt. Die Methode versucht, das Feld aus der &amp;quot;Ausführen&amp;quot;-Schaltfläche (falls vorhanden) zu aktualisieren; aber wenn die Schaltfläche nicht direkt manipuliert wird (durch Umgehung der Kapselung), sollten ihr Text und das Feld bereits synchronisiert sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zurück ==&lt;br /&gt;
* [[Schritt 4 - Festlegen der Größe und der Ausrichtung ({{Delphi}})]]&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[FireMonkey-Komponentendesign]]&lt;br /&gt;
* [[Verwenden des Experten für neue Komponenten]]&lt;br /&gt;
&amp;lt;l s=&amp;quot;cpp&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Erstellen einer FireMonkey-Komponente (C++)]]	&lt;br /&gt;
&amp;lt;l e=&amp;quot;cpp&amp;quot; /&amp;gt;&lt;br /&gt;
* [[Erstellen einer mit Stilen versehenen FireMonkey-Komponente durch Erweitern einer vorhandenen Komponente ]]&lt;br /&gt;
* [[Erstellen eines grundlegenden FireMonkey-Steuerelements]]&lt;br /&gt;
[[Category:XE3]][[Category:FMX]][[Category:{{Delphi}}]]	&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Step 5 - Custom Properties (Delphi)]]&lt;br /&gt;
[[fr:Etape 5 - Propriétés personnalisées (Delphi)]]&lt;br /&gt;
[[ja:ステップ 5 - カスタム プロパティ（Delphi）]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=OBJTYPENAME-Direktive_(Delphi)&amp;diff=168101</id>
		<title>OBJTYPENAME-Direktive (Delphi)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=OBJTYPENAME-Direktive_(Delphi)&amp;diff=168101"/>
		<updated>2014-06-23T14:20:21Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-15495&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Liste der Delphi-Compiler-Direktiven - Index}}&lt;br /&gt;
&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot; &lt;br /&gt;
|  align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Typ&#039;&#039;&#039;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Parameter&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Syntax&#039;&#039;&#039;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{$OBJTYPENAME typeIdent [&#039;{B|N}typeNameInObj&#039;]}&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Vorgabe&#039;&#039;&#039;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{$APPTYPE GUI}&lt;br /&gt;
|- &lt;br /&gt;
|  align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bereich&#039;&#039;&#039;&lt;br /&gt;
|  align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Global&lt;br /&gt;
|} &lt;br /&gt;
   &lt;br /&gt;
Für $OBJTYPENAME gibt es zwei Einsatzbereiche.  Sie können $OBJTYPENAME folgendermaßen verwenden:&lt;br /&gt;
* Zum Definieren des Typnamens beim Erstellen von .obj-Dateien.&lt;br /&gt;
* Als interne Direktive, um dem {{Delphi}}-Compiler mitzuteilen, wie der Name eines Typs verkürzt werden soll. (Da die Verkürzung mit der des C++-Compilers übereinstimmen muss, müssen Sie diese Option nur in Fällen verwenden, in denen die Typverkürzung von {{Delphi}} und C++ unterschiedlich ist.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In der Syntax muss &amp;quot;typeNameInObj&amp;quot; entweder das Präfix &amp;quot;B&amp;quot; oder &amp;quot;N&amp;quot; wie folgt vorangestellt werden:&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;delphi&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;{$OBJTYPENAME typeIdent} // typeIdent bei Bedarf mit Namespace ausgeben&amp;lt;/source&amp;gt;&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;delphi&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;{$OBJTYPENAME typeIdent &#039;Bsss&#039;} // &amp;quot;sss&amp;quot; ohne Namespace ausgeben&amp;lt;/source&amp;gt;&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;delphi&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;{$OBJTYPENAME typeIdent &#039;Nsss&#039;} // &amp;quot;sss&amp;quot; bei Bedarf mit Namespace ausgeben&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Form mit dem Präfix &amp;quot;B&amp;quot; wird zum Generieren von integrierten Typen verwendet. Zum Beispiel: Mit &amp;quot;Bul&amp;quot; wird für integrierte lange Typen ohne Vorzeichen &amp;quot;ul&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Die Form mit dem Präfix &amp;quot;N&amp;quot; wird zum Generieren von symbolischen Typen, wie Klassen-, Struktur- und Enum-Typen, verwendet. Zum Beispiel: &amp;quot;NTColor&amp;quot; mit {$NODEFINE} in [[lib_de:System.UITypes|System.UITypes.pas]] gibt &amp;quot;15Graphics@TColor&amp;quot; aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Direktive OBJTYPENAME kann mit den Direktiven {$EXTERNALSYM} und {$NODEFINE} verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Diese Direktiven können nicht für Aliastypen verwendet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
 type&lt;br /&gt;
   TMyIntAlias = Integer; {$OBJTYPENAME TMyIntAlias &#039;Bl&#039;} // error&lt;br /&gt;
 type&lt;br /&gt;
   TMyIntTyped = type Integer; {$OBJTYPENAME TMyIntTyped &#039;Bl&#039;} // ok&lt;br /&gt;
   TMyIntTyped2 = type TMyIntTyped; // &#039;Bl&#039; is inherited from base type.	&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[Externe Symbole (Delphi)]]&lt;br /&gt;
* [[NODEFINE-Direktive (Delphi)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:{{Delphi}}]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:OBJTYPENAME directive (Delphi)]]&lt;br /&gt;
[[fr:Directive OBJTYPENAME (Delphi)]]&lt;br /&gt;
[[ja:OBJTYPENAME 指令（Delphi）]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Delphi-Compiler-Direktiven&amp;diff=168001</id>
		<title>Delphi-Compiler-Direktiven</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Delphi-Compiler-Direktiven&amp;diff=168001"/>
		<updated>2014-06-17T09:56:42Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-15444&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Liste der {{Delphi}}-Compiler-Direktiven - Index}}&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;FHXR10869&amp;quot;&amp;gt;&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;CompilerDirectives&amp;quot;&amp;gt;&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;CompilerDirectivesOverview&amp;quot;&amp;gt;&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;CompilerDirectivesTopics&amp;quot;&amp;gt;&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;compiler&amp;quot;&amp;gt;&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;DCC32&amp;quot;&amp;gt;&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;DELPHI32&amp;quot;&amp;gt;&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;builds&amp;quot;&amp;gt;&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;makes&amp;quot;&amp;gt;&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;directives&amp;quot;&amp;gt;&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;conditional&amp;quot;&amp;gt;&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;parameters&amp;quot;&amp;gt;&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;command&amp;quot;&amp;gt;&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;switches&amp;quot;&amp;gt;&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
Die {{Delphi}}-Compiler-Direktiven sind folgendermaßen klassifiziert:&lt;br /&gt;
* [[#Schalter-Direktiven|Schalter-Direktiven]]&lt;br /&gt;
* [[#Parameter-Direktiven|Parameter-Direktiven]]&lt;br /&gt;
* [[#Bedingungsdirektiven|Direktiven für bedingte Compilierung]]&lt;br /&gt;
&lt;br /&gt;
Eine Compiler-Direktive ist ein Kommentar mit einer speziellen Syntax. Die Compiler-Direktive beginnt mit einem $ (Dollar-Zeichen) als erstem Zeichen nach dem Kommentarzeichen. Darauf folgt der Name der Direktive (bestehend aus einem oder mehreren Buchstaben). Nach dem Namen und den erforderlichen Parametern können Kommentare folgen.&lt;br /&gt;
&lt;br /&gt;
Compiler-Direktiven können deshalb überall dort verwendet werden, wo Kommentare erlaubt sind. Beachten Sie bitte, dass Kommentare, die mit dem doppelten Schrägstrich // beginnen, &#039;&#039;&#039;nicht&#039;&#039;&#039; für Compiler-Direktiven verwendet werden können. Zum Beispiel:&lt;br /&gt;
 {$hints off}        // a {{Delphi}} compiler directive&lt;br /&gt;
 (*$hints off*)      // a {{Delphi}} compiler directive&lt;br /&gt;
 //$hints off        // just a commentary, ignored&lt;br /&gt;
&lt;br /&gt;
Bei allen Direktiven mit Ausnahme von Schalter-Direktiven muss zwischen dem Namen und den Parametern mindestens ein Leerzeichen stehen.&lt;br /&gt;
&lt;br /&gt;
In den folgenden Absätzen werden die Arten von Direktiven beschrieben.&lt;br /&gt;
&lt;br /&gt;
==Schalter-Direktiven==&lt;br /&gt;
&#039;&#039;&#039;Schalter-Direktiven&#039;&#039;&#039; aktivieren bzw. deaktivieren bestimmte Compiler-Funktionen. Sie können die Direktive entweder mit ihrem langen Namen oder dessen Äquivalent mit einem Buchstaben angeben:&lt;br /&gt;
* Bei Direktiven mit nur einem Buchstaben folgt unmittelbar auf den Buchstaben ein Minuszeichen (-) oder ein Pluszeichen (+). Zum Beispiel: {$A+}&lt;br /&gt;
* Bei Direktiven mit mehreren Buchstaben geben Sie das Wort &amp;quot;on&amp;quot; bzw. &amp;quot;off&amp;quot; an.  Zum Beispiel: {$ALIGN ON}&lt;br /&gt;
&lt;br /&gt;
Schalter-Direktiven sind entweder global oder lokal:&lt;br /&gt;
* &#039;&#039;&#039;Globale Direktiven&#039;&#039;&#039; beziehen sich auf die gesamte Compilierung und müssen vor dem Deklarationsabschnitt des zu compilierenden Programms oder der zu compilierenden Unit angegeben werden.&lt;br /&gt;
* &#039;&#039;&#039;Lokale Direktiven&#039;&#039;&#039; betreffen nur den Teil der Compilierung, der sich von der Direktive bis zum nächsten Auftreten derselben Direktive erstreckt. Diese Direktiven können an jeder beliebigen Position stehen.&lt;br /&gt;
&lt;br /&gt;
Sie können mehrere Schalter-Direktiven zu einer einzigen Direktive zusammenfassen, indem Sie sie durch Komma ohne Leerzeichen davor oder danach voneinander trennen. Zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
 {$B+,R-,S-}&lt;br /&gt;
&lt;br /&gt;
Diese Gruppierung kann nicht für Direktiven mit langen Namen verwendet werden. Diese müssen einzeln eingegeben werden. Zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
 {$optimization on,hints off}        // everything starting with &amp;quot;,&amp;quot; is treated like a comment here&lt;br /&gt;
&lt;br /&gt;
==Parameter-Direktiven==&lt;br /&gt;
&#039;&#039;&#039;Parameter-Direktiven&#039;&#039;&#039; geben Parameter an, die die Compilierung betreffen, z.B. Dateinamen und Speicheradressen.&lt;br /&gt;
&lt;br /&gt;
==Bedingungsdirektiven==&lt;br /&gt;
Mit &#039;&#039;&#039;[[Bedingte Compilierung ({{Delphi}})|Bedingungsdirektiven]]&#039;&#039;&#039; können Quelltextabschnitte anhand bestimmter Bedingungen (z. B. benutzerdefinierter Symbole) compiliert oder ignoriert werden.&lt;br /&gt;
&lt;br /&gt;
==Beispiele==&lt;br /&gt;
Hier einige Beispiele für Compiler-Direktiven:&lt;br /&gt;
 {$B+}&lt;br /&gt;
 {$R- Turn off range checking}&lt;br /&gt;
 {$I TYPES.INC}&lt;br /&gt;
 {$M 32768,40960}&lt;br /&gt;
 {$DEFINE Debug}&lt;br /&gt;
 {$IFDEF Debug}&lt;br /&gt;
 {$ENDIF}&lt;br /&gt;
&lt;br /&gt;
==Verschiedene Möglichkeiten der Eingabe von Compiler-Direktiven==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039;&lt;br /&gt;
 Im Quellcode eingebettete Direktiven haben Vorrang vor Direktiven, die in der Befehlszeile oder im Dialogfeld &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Projekt &amp;amp;gt; Optionen &amp;amp;gt; {{Delphi}}-Compiler &amp;amp;gt; [[Compilieren]]&#039;&#039;&#039;&amp;lt;/font&amp;gt; angegeben werden.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Im Quellcode===&lt;br /&gt;
Sie können Compiler-Direktiven direkt in den Quellcode einfügen.&lt;br /&gt;
&lt;br /&gt;
Hier ist ein Beispiel der [[Bedingte Compilierung ({{Delphi}})|bedingten Compilierung]] aus der Datei Math.pas (im Produktverzeichnis \source):&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
  procedure DivMod(Dividend: Cardinal; Divisor: Word;&lt;br /&gt;
    var Result, Remainder: Word);&lt;br /&gt;
  {$IFDEF PUREPASCAL}&lt;br /&gt;
  begin&lt;br /&gt;
    Result := Dividend div Divisor;&lt;br /&gt;
    Remainder := Dividend mod Divisor;&lt;br /&gt;
  end;&lt;br /&gt;
  {$ELSE !PUREPASCAL}&lt;br /&gt;
  {$IFDEF X86ASM}&lt;br /&gt;
  asm // StackAlignSafe&lt;br /&gt;
          PUSH    EBX&lt;br /&gt;
          MOV     EBX,EDX&lt;br /&gt;
          MOV     EDX,EAX&lt;br /&gt;
          SHR     EDX,16&lt;br /&gt;
          DIV     BX&lt;br /&gt;
          MOV     EBX,Remainder&lt;br /&gt;
          MOV     [ECX],AX&lt;br /&gt;
          MOV     [EBX],DX&lt;br /&gt;
          POP     EBX&lt;br /&gt;
  end;&lt;br /&gt;
  {$ENDIF X86ASM}&lt;br /&gt;
  {$ENDIF !PUREPASCAL}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
===Verwenden von Befehlszeilenoptionen===&lt;br /&gt;
Sie können die Standarddirektiven auch mit dem Schalter &amp;lt;code&amp;gt;-$&#039;&#039;Direktive&#039;&#039;&amp;lt;/code&amp;gt; mit dem Befehlszeilen-Compiler, [[DCC32.EXE: Der Delphi-Befehlszeilen-Compiler|dcc32]] und in der IDE mit bds.exe ändern.&lt;br /&gt;
&lt;br /&gt;
Beim Befehlszeilen-Compiler können Sie Compiler-Direktiven in der Befehlszeile angeben:&lt;br /&gt;
 &lt;br /&gt;
 DCC32 -$R+ MYPROG&lt;br /&gt;
&lt;br /&gt;
===Verwenden der IDE===&lt;br /&gt;
Sie können viele der Compiler-Direktiven im Dialogfeld &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Projekt &amp;amp;gt; Optionen &amp;amp;gt; {{Delphi}}-Compiler &amp;amp;gt; [[Compilieren]]&#039;&#039;&#039;&amp;lt;/font&amp;gt; setzen.  Alle Änderungen, die Sie an den Einstellungen auf der Seite &#039;&#039;&#039;Compilieren&#039;&#039;&#039; vornehmen, wirken sich auf alle Units aus, wenn deren Quellcode erneut bei folgenden Compilierungen dieses Projekts compiliert wird. Wenn Sie eine Compiler-Option ändern und compilieren, werden alle Units, für die Quellcode vorhanden ist, mit den neuen Einstellungen erneut compiliert.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie im &#039;&#039;&#039;[[Quelltext-Editor]]&#039;&#039;&#039; arbeiten und sich schnell einen Überblick über die aktivierten Compiler-Direktiven verschaffen möchten, drücken Sie &amp;lt;code&amp;gt;Strg+O+O&amp;lt;/code&amp;gt;. Die aktuellen Direktiven-Einstellungen werden in einer horizontalen Zeile am Beginn Ihrer Datei zusammen mit anderen aktuellen Einstellungen, wie z.B. Compiler-Warnungen (die Einstellungen für die [[Warnmeldungen ({{Delphi}})|Direktive $WARN]]) eingefügt. Diese Listen werden so lange am Beginn Ihrer Quelldatei eingefügt, bis Sie den Befehl rückgängig machen (&amp;lt;code&amp;gt;Strg+Z&amp;lt;/code&amp;gt;) oder die Liste manuell löschen:&lt;br /&gt;
&lt;br /&gt;
[[Image:directives.png]]&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==	&lt;br /&gt;
{{f|radstudio|&lt;br /&gt;
* [[Liste der Delphi-Compiler-Direktiven - Index|Liste der Compiler-Direktiven]] }}&lt;br /&gt;
* [[Bedingte Compilierung ({{Delphi}})]]&lt;br /&gt;
&lt;br /&gt;
[[Category:{{Delphi}}]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Delphi compiler directives]]&lt;br /&gt;
[[fr:Directives de compilation Delphi]]&lt;br /&gt;
[[ja:Delphi コンパイラ指令]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Diskussion:Installieren_des_Platform_Assistant_auf_dem_Mac&amp;diff=167926</id>
		<title>Diskussion:Installieren des Platform Assistant auf dem Mac</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Diskussion:Installieren_des_Platform_Assistant_auf_dem_Mac&amp;diff=167926"/>
		<updated>2014-06-12T10:16:16Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Reviewed Imported Package : LOC-15400&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Für XE6 Update 1:&lt;br /&gt;
&lt;br /&gt;
{{Parent|PAServer: Die Platform Assistant Server-Anwendung}}&lt;br /&gt;
{{Parent|Mac OS X-Anwendungsentwicklung}}&lt;br /&gt;
&lt;br /&gt;
Das Mac OS X-Installationsprogramm für den &amp;quot;Platform Assistant&amp;quot; heißt &#039;&#039;&#039;PAServer &amp;lt;version&amp;gt;.pkg&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Dieses Installationsprogramm befindet sich an zwei Orten:&lt;br /&gt;
* Im Ordner &amp;lt;code&amp;gt;PAServer&amp;lt;/code&amp;gt; im {{Product}}-Installationsverzeichnis:&lt;br /&gt;
*: Beispiel: {{Path|{{InstallPath}}\PAServer\PAServer{{VersionNumber}}.pkg}}&lt;br /&gt;
* Im Web zum Herunterladen auf den Mac:&lt;br /&gt;
** &amp;lt;code&amp;gt;http://altd.embarcadero.com/release/studio/{{VersionNumber}}/PAServer/PAServer{{VersionNumber}}.pkg&amp;lt;/code&amp;gt;&lt;br /&gt;
*: &#039;&#039;&#039;[mailto:?Subject=PAServerVersion&amp;amp;amp;body=http://installers.codegear.com/release/studio/{{VersionNumber}}/PAServer/PAServer{{VersionNumber}}.pkg Senden Sie den URL per E-Mail]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==So installieren Sie den &amp;quot;Platform Assistant&amp;quot; auf einem Mac:==&lt;br /&gt;
&lt;br /&gt;
# Laden Sie auf dem Mac die Datei &#039;&#039;&#039;PAServer&amp;lt;version&amp;gt;.pkg&#039;&#039;&#039; von einem der oben angegebenen Orte in ein lokales Verzeichnis herunter.&lt;br /&gt;
# Doppelklicken Sie im &#039;&#039;&#039;Finder&#039;&#039;&#039; auf die Datei &amp;lt;code&amp;gt;.pkg&amp;lt;/code&amp;gt;. Damit wird das InstallAnywhere-Installationsprogramm für &amp;quot;Platform Assistant Server&amp;quot; aufgerufen:&amp;lt;br /&amp;gt;&lt;br /&gt;
#: [[image:Installing PAServerXE6.png]]&lt;br /&gt;
# Wählen Sie Ihre Zielsprache (z. B. Deutsch) aus, und klicken Sie auf &#039;&#039;&#039;OK&#039;&#039;&#039;.&lt;br /&gt;
# Auf der Seite &amp;quot;Bitte wählen Sie einen Zielordner&amp;quot; können Sie das Installationsverzeichnis ändern oder die Vorgabe übernehmen. Standardmäßig wird der &#039;&#039;&#039;Platform Assistant&#039;&#039;&#039; im Verzeichnis &#039;&#039;&#039;Applications&#039;&#039;&#039; installiert.&lt;br /&gt;
# Fahren Sie mit dem Installationsprogramm fort, bis die Installation abgeschlossen ist.&lt;br /&gt;
Der &amp;quot;Platform Assistant&amp;quot; ist jetzt installiert, und Sie können den [[Ausführen des Platform Assistant auf dem Mac|Platform Assistant ausführen]].&lt;br /&gt;
&lt;br /&gt;
==So deinstallieren Sie den &amp;quot;Platform Assistant&amp;quot; auf einem Mac:==&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Sie müssen eine vorherige Version des &amp;quot;Platform Assistant&amp;quot; nicht deinstallieren, um eine neuere Version zu installieren. Auf Ihrem System können unterschiedliche Versionen des &amp;quot;Platform Assistant&amp;quot; vorhanden sein und gleichzeitig ausgeführt werden, solange Sie verschiedene Ports für jede ausgeführte Instanz verwenden.&lt;br /&gt;
&lt;br /&gt;
Zum Deinstallieren des &#039;&#039;&#039;Platform Assistant&#039;&#039;&#039;-Servers löschen Sie &#039;&#039;&#039;PAServer &amp;lt;version&amp;gt;.app&#039;&#039;&#039;. Verwenden Sie auf dem Mac &amp;quot;In den Papierkorb verschieben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Installieren von PAServer]] ({{FM}} Quick Start)&lt;br /&gt;
* [[Installieren des Platform Assistant unter Windows]]&lt;br /&gt;
* [[Ausführen des Platform Assistant auf dem Mac]]&lt;br /&gt;
* [[Debuggen von geräteübergreifenden Anwendungen]]&lt;br /&gt;
&lt;br /&gt;
[[Category:IOS]]&lt;br /&gt;
[[Category:Mac OS X]]&lt;br /&gt;
[[Category:XE4]]&lt;br /&gt;
&lt;br /&gt;
[[de:Installieren des Platform Assistant auf dem Mac]]&lt;br /&gt;
[[fr:Installation de Platform Assistant sur un Mac]]&lt;br /&gt;
[[ja:Mac でのプラットフォーム アシスタントのインストール]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Was_ist_RAD_Studio%3F_(IDE-Tutorial)&amp;diff=167872</id>
		<title>Was ist RAD Studio? (IDE-Tutorial)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Was_ist_RAD_Studio%3F_(IDE-Tutorial)&amp;diff=167872"/>
		<updated>2014-06-11T11:31:53Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Einführung - Index (IDE-Tutorial)}}&lt;br /&gt;
&lt;br /&gt;
{{CompanyProduct}} ist eine objektorientierte, visuelle Programmierumgebung für die schnelle Anwendungsentwicklung (Rapid Application Development, RAD). Mit {{CompanyProduct}} können Sie hocheffiziente visuelle Anwendungen mit einem Minimum an manueller Programmierung entweder in der Programmiersprache {{Delphi}} oder C++ erstellen. &lt;br /&gt;
&lt;br /&gt;
{{Product}} bietet alle erforderlichen Tools zum Modellieren von Anwendungen, zum Entwerfen von Benutzeroberflächen sowie zum automatischen Generieren und Bearbeiten von Quellcode. Es enthält darüberhinaus Tools zum Compilieren, Debuggen und Weitergeben von Anwendungen. Die Tools, die in der IDE angeboten werden, variieren je nach der Version von {{Product}}.&lt;br /&gt;
&lt;br /&gt;
{{f|radstudio|Siehe [[Was ist {{Variables|Product}}?]] für weitere Informationen über {{Delphi}} und {{CBuilder}}.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Weiter==&lt;br /&gt;
[[Suchen von Informationen (IDE-Tutorial)|Suchen von Informationen]]&lt;br /&gt;
[[Category:{{Delphi}}]]&lt;br /&gt;
[[Category:C++]][[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:What is RAD Studio? (IDE Tutorial)]]&lt;br /&gt;
[[fr:Qu&#039;est-ce que RAD Studio ? (tutoriel de l&#039;EDI)]]&lt;br /&gt;
[[ja:RAD Studio とは（IDE チュートリアル）]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Weiterf%C3%BChrende_Themen_-_Index_(IDE-Tutorial)&amp;diff=167527</id>
		<title>Weiterführende Themen - Index (IDE-Tutorial)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Weiterf%C3%BChrende_Themen_-_Index_(IDE-Tutorial)&amp;diff=167527"/>
		<updated>2014-06-03T13:37:50Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-15216&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Tutorial: Die IDE für {{Delphi}} und {{CBuilder}} verwenden}}&lt;br /&gt;
&lt;br /&gt;
==Themen==&lt;br /&gt;
* [[FireMonkey und die RTL (IDE-Tutorial)|{{FM}} und RTL]]&lt;br /&gt;
* [[Add-ins von Fremdherstellern (IDE-Tutorial)|Add-ins von Fremdherstellern]]&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Weiterfuhrende Themen - Index (IDE-Tutorial)}}&lt;br /&gt;
[[Category:{{Delphi}}]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:More advanced topics Index (IDE Tutorial)]]&lt;br /&gt;
[[fr:Autres rubriques avancées - Index (tutoriel de l&#039;EDI)]]&lt;br /&gt;
[[ja:応用トピック（IDE チュートリアル）：インデックス]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Ihre_erste_Anwendung_mit_RAD_Studio_-_Index_(IDE-Tutorial)&amp;diff=167525</id>
		<title>Ihre erste Anwendung mit RAD Studio - Index (IDE-Tutorial)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Ihre_erste_Anwendung_mit_RAD_Studio_-_Index_(IDE-Tutorial)&amp;diff=167525"/>
		<updated>2014-06-03T13:36:46Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-15216&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Tutorial: Die IDE für {{Delphi}} und {{CBuilder}} verwenden}}&lt;br /&gt;
&lt;br /&gt;
Dieser Abschnitt erläutert, wie Sie mit den RAD-Tools (Rapid Application Development, schnelle Anwendungsentwicklung) von {{CompanyProduct}} eine GUI-Anwendung (Graphical User Interface, grafische Benutzeroberfläche) erstellen. Sie beginnen mit dem Erstellen des Hauptformulars, passen es an und fügen die erforderlichen visuellen und nicht-visuellen Komponenten hinzu.&lt;br /&gt;
&lt;br /&gt;
Die Quellcodeabschnitte in der Anwendung, die die Benutzeraktionen behandeln, werden &#039;&#039;Ereignisbehandlungsroutinen&#039;&#039; genannt. Diese müssen Sie auch implementieren. Zu den behandelten Benutzerereignissen zählen das Auswählen von Menüeinträgen und das Tippen oder Klicken in Bearbeitungsfenster.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie die Schritte ausführen, erhalten Sie einen einfachen Texteditor mit ein paar Zusatzfunktionen, wie Zeilenumbruch und das Anzeigen der aktuellen Cursorposition in der Statuszeile.&lt;br /&gt;
&lt;br /&gt;
==Themen==&lt;br /&gt;
* [[Verwendung von Projektvorlagen aus der Objektablage (IDE-Tutorial)|Verwendung von Projektvorlagen aus der Objektablage]]&lt;br /&gt;
* [[Elementare Anpassungen des Hauptformulars (IDE-Tutorial)|Elementare Anpassungen des Hauptformulars]]&lt;br /&gt;
* [[Hinzufügen von Komponenten im Formular-Designer (IDE-Tutorial)|Hinzufügen von Komponenten im Formular-Designer]]&lt;br /&gt;
* [[Anpassen der Komponenten (IDE-Tutorial)|Anpassen der Komponenten]]&lt;br /&gt;
* [[Programmieren von Reaktionen auf Benutzeraktionen im Quelltext-Editor (IDE-Tutorial)|Programmieren von Reaktionen auf Benutzeraktionen im Quelltext-Editor]]&lt;br /&gt;
* [[Compilieren und Ausführen der Anwendung (IDE-Tutorial)|Compilieren und Ausführen der Anwendung]]&lt;br /&gt;
* [[Debuggen der Anwendung (IDE-Tutorial)|Debuggen der Anwendung]]&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:XE6]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Starting your first RAD Studio application Index (IDE Tutorial)]]&lt;br /&gt;
[[fr:Démarrage de votre première application RAD Studio - Index (tutoriel de l&#039;EDI)]]&lt;br /&gt;
[[ja:RAD Studio アプリケーションを初めて作成する（IDE チュートリアル）：インデックス]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Designer-Richtlinien_f%C3%BCr_VCL-Komponenten_verwenden&amp;diff=167506</id>
		<title>Designer-Richtlinien für VCL-Komponenten verwenden</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Designer-Richtlinien_f%C3%BCr_VCL-Komponenten_verwenden&amp;diff=167506"/>
		<updated>2014-06-03T08:49:11Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-15142&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|So erstellen Sie Formulare und Projekte und schreiben den Codebehind}}&lt;br /&gt;
Die VCL-Design-Richtlinien werden angezeigt, wenn Sie im [[Formular-Designer]] auf ein Element klicken und es in Relation zu einem anderen Element verschieben. Anhand der Richtlinien (für oben, unten, recht, links und zentriert) können Sie Elemente, einschließlich von Steuerelementen wie Schaltflächen und Listenfelder oder Textbeschriftungen, ausrichten. Mit den Design-Richtlinien und den zugehörigen Funktionen für {{Delphi}}- oder C++-Anwendungen können Sie Komponenten so definieren, dass sie sich &amp;quot;relativ&amp;quot; zu den anderen Komponenten im Formular verhalten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;So können Sie Design-Richtlinien anzeigen und verwenden:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Aktivieren Sie die Design-Richtlinien im Dialogfeld &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Tools &amp;amp;gt; Optionen &amp;amp;gt; Umgebungsoptionen &amp;amp;gt; [[Optionen für den Formular-Designer|Formular-Designer]]&#039;&#039;&#039;&amp;lt;/font&amp;gt; im Feld &#039;&#039;&#039;Designer-Richtlinien verwenden&#039;&#039;&#039;. (Design-Richtlinien sind standardmäßig aktiviert.)&lt;br /&gt;
# Beim Verschieben von visuellen Elementen im &#039;&#039;&#039;Formular-Designer&#039;&#039;&#039; können Sie die Ausrichtung von Elementen auf verschiedene Arten steuern:&lt;br /&gt;
#* Mithilfe der &#039;&#039;&#039;Design-Richtlinien&#039;&#039;&#039;, die zwischen Elementen erscheinen. Mit Design-Richtlinien können Sie beispielsweise die untere Kante des ausgewählten Elements mit den unteren Kanten der benachbarten Elemente ausrichten oder ein Element relativ zu benachbarten Elementen zentrieren.&lt;br /&gt;
#* Mithilfe der Werte, die in einem Popup-Fenster angezeigt werden, wenn Sie den Mauszeiger über ein Steuerelement führen. Das Popup-Fenster enthält Folgendes:&lt;br /&gt;
#** &#039;&#039;&#039;Ursprung:&#039;&#039;&#039; die X- und Y-Koordinaten (horizontal, vertikal) der linken oberen Ecke&lt;br /&gt;
#** &#039;&#039;&#039;Größe:&#039;&#039;&#039; horizontale mal vertikale Koordinaten&lt;br /&gt;
#** &#039;&#039;&#039;[[lib_de:Vcl.Controls.TWinControl.TabStop|Tabstopp]]:&#039;&#039;&#039; True/False&lt;br /&gt;
#** &#039;&#039;&#039;Reihenfolge:&#039;&#039;&#039; relative Reihenfolge des ausgewählten Elements in seiner Gruppe&lt;br /&gt;
#* Mithilfe des [[Objektinspektor|Objektinspektors]]:&lt;br /&gt;
#** Zum Zuweisen von Werten zu der Eigenschaft [[lib_de:Vcl.Controls.TControl.Align|Align]] (alTop, alBottom, alLeft usw.).&lt;br /&gt;
#** Zum Zuweisen von Werten zu der Eigenschaft [[lib_de:Vcl.Controls.TAnchors|Anchors]] (akTop, akLeft, akRight oder akBottom).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Benutzeroberflächen entwerfen]]&lt;br /&gt;
* [[Ein erster Blick auf die IDE]]&lt;br /&gt;
* [[Komponente registrieren|Registrieren der Komponente]]&lt;br /&gt;
* [[Designrichtlinien (Nur VCL)]]&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Designer-Richtlinien fur VCL-Komponenten verwenden}}&lt;br /&gt;
[[Category:Mit {{Product}} arbeiten]]&lt;br /&gt;
&lt;br /&gt;
[[en:Using Design Guidelines with VCL Components]]&lt;br /&gt;
[[fr:Utilisation de directives du Concepteur avec des composants VCL]]&lt;br /&gt;
[[ja:VCL コンポーネントでデザイン ガイドラインを使用する]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Verzeichnis_ausw%C3%A4hlen&amp;diff=167090</id>
		<title>Verzeichnis auswählen</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Verzeichnis_ausw%C3%A4hlen&amp;diff=167090"/>
		<updated>2014-05-27T09:22:09Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-15202&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Menü Datei}}&lt;br /&gt;
&lt;br /&gt;
Verwenden Sie dieses Dialogfeld, um ein Arbeitsverzeichnis für Ihr neues Projekt festzulegen.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;Element&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Beschreibung&#039;&#039;&#039;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Verzeichnisname&lt;br /&gt;
|&lt;br /&gt;
Zeigt das aktuelle Verzeichnis an. Wenn Sie ein noch nicht vorhandenes Verzeichnis eingeben, wird dieses automatisch erstellt.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Speichern in&lt;br /&gt;
|&lt;br /&gt;
Zeigt den Inhalt des aktuellen Verzeichnisses an.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Dateien: (*.*)&lt;br /&gt;
|&lt;br /&gt;
Listet alle Dateien in dem aktuellen Verzeichnis auf. Sie können von diesen Dateien keine auswählen. Die Liste wird nur angezeigt, damit Sie den Inhalt des aktuellen Verzeichnisses kennen.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Laufwerke&lt;br /&gt;
|&lt;br /&gt;
Listet alle verfügbaren Laufwerke auf. Sie können eines dieser Laufwerke auswählen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Verzeichnis auswahlen}}&lt;br /&gt;
[[Category:IDE-Referenz]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Select Directory]]&lt;br /&gt;
[[fr:Sélection du répertoire]]&lt;br /&gt;
[[ja:［ディレクトリの選択］ダイアログ ボックス]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Zuletzt_verwendet&amp;diff=167086</id>
		<title>Zuletzt verwendet</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Zuletzt_verwendet&amp;diff=167086"/>
		<updated>2014-05-27T08:56:32Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-15202&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Menü Datei}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Menu|Datei &amp;gt; Zuletzt verwendet}}&lt;br /&gt;
&lt;br /&gt;
Führt die zuletzt geöffneten Projekte und Dateien auf, die Sie auswählen und erneut öffnen können.&lt;br /&gt;
&lt;br /&gt;
Die Liste &#039;&#039;&#039;Zuletzt verwendet&#039;&#039;&#039; ist in zwei durch eine Linie getrennte Gruppen aufgeteilt:&lt;br /&gt;
* Projekte werden oberhalb der Linie aufgeführt (z.B. {{Path|MyBigApp.dproj}} oder {{Path|MyFastApp.cbproj}})&lt;br /&gt;
* Quelldateien werden unterhalb der Linie aufgeführt (z.B. {{Path|MyControl.pas}} oder {{Path|MyClass.cpp}})&lt;br /&gt;
&lt;br /&gt;
Im Dialogfeld &#039;&#039;&#039;[[Eigenschaften für &amp;quot;Zuletzt verwendet&amp;quot;]]&#039;&#039;&#039; können Sie die Liste &#039;&#039;&#039;Zuletzt verwendet&#039;&#039;&#039; verwalten. Sie öffnen dieses Dialogfeld mit einem der beiden folgenden Befehle:&lt;br /&gt;
* {{Menu|Datei &amp;gt; Zuletzt verwendet &amp;gt; Eigenschaften}}&lt;br /&gt;
* {{Menu|Tools &amp;gt; Optionen &amp;gt; Umgebungsoptionen &amp;gt; Zuletzt verwendet}}&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[Eigenschaften für &amp;quot;Zuletzt verwendet&amp;quot;|Zuletzt verwendet, Eigenschaften für &amp;quot;Zuletzt verwendet&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
[[Category:IDE-Referenz]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Reopen]]&lt;br /&gt;
[[fr:Rouvrir]]&lt;br /&gt;
[[ja:［開き直す］]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Druckauswahl&amp;diff=167084</id>
		<title>Druckauswahl</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Druckauswahl&amp;diff=167084"/>
		<updated>2014-05-27T08:48:13Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Update LOC-15202&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Menü Datei}}&lt;br /&gt;
&lt;br /&gt;
{{Menu|Datei &amp;gt; Drucken}}&lt;br /&gt;
&lt;br /&gt;
Verwenden Sie dieses Dialogfeld zum Drucken der aktuellen Datei.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;Element&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Beschreibung&#039;&#039;&#039;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Markierten Block drucken&lt;br /&gt;
|&lt;br /&gt;
Bewirkt, dass nur der markierte Textblock gedruckt wird.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Überschrift/Seitennummer&lt;br /&gt;
|&lt;br /&gt;
Bewirkt, dass auf jeder Seite eine Überschrift mit dem Dateipfad und dem Dateinamen sowie eine Seitennummer gedruckt wird.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Zeilennummer&lt;br /&gt;
|&lt;br /&gt;
Bewirkt die Ausgabe von Zeilennummern auf den gedruckten Seiten.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Syntaxhervorhebung&lt;br /&gt;
|&lt;br /&gt;
Bewirkt das Drucken von Syntaxhervorhebungen, z.B. von Schlüsselwörtern in Fettschrift.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Farben verwenden&lt;br /&gt;
|&lt;br /&gt;
Bewirkt die farbige Ausgabe von Syntaxhervorhebungen (bei Verwendung eines Farbdruckers).&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Zeilen umbrechen&lt;br /&gt;
|&lt;br /&gt;
Bewirkt den Umbruch von Zeilen, die breiter als die Druckseite sind.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Linker Rand&lt;br /&gt;
|&lt;br /&gt;
Legt den linken Rand der Druckseiten fest. Der eingegebene Wert steht für eine bestimmte Anzahl von Leerzeichen am linken Rand.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Einstellungen&lt;br /&gt;
|&lt;br /&gt;
Öffnet das Dialogfeld &#039;&#039;&#039;Druckereinrichtung&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IDE-Referenz]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;br /&gt;
&lt;br /&gt;
[[en:Print Selection]]&lt;br /&gt;
[[fr:Sélection de l&#039;impression]]&lt;br /&gt;
[[ja:［印刷］]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Vorlage:Key&amp;diff=167083</id>
		<title>Vorlage:Key</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Vorlage:Key&amp;diff=167083"/>
		<updated>2014-05-27T08:24:23Z</updated>

		<summary type="html">&lt;p&gt;Andreeah: Created Template LOC-15202&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;code&amp;gt;{{{1}}}&amp;lt;/code&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:Formatierungsvorlagen]]&lt;/div&gt;</summary>
		<author><name>Andreeah</name></author>
	</entry>
</feed>