Textcollections
Textcollections beinhalten mehrere Einträge mit Zeichenketten. Die Zeichenketten können in den verschiedenen Sprachen angegeben werden.
Ein Eintrag beinhaltet immer eine in der Collection eindeutige ID und für jede Sprache eine Zeichenkette. Je nachdem, mit welcher Sprache die Anwendung gestartet wird, geben die Einträge mit dem Property value die Zeichenkette für die entsprechende Sprache zurück.
Die Textcollections können im Form-Designer z.B. für Comboboxen, für Messageboxen oder auch frei im Code verwendet werden, um sprachabhängig Texte zusammenzubauen.
Erstellt werden kann eine Textcollection über das Kontext-Menü des jeweiligen Namespaces. Dort steht der Befehl New / Textcollection (Menü File >> New >> Textcollection) zur Verfügung.
Customizing von Textcollections ist möglich, um neue Einträge hinzuzufügen und bestehende Einträge abzuändern. Wenn ein neuer Eintrag mit einer ID hinzugefügt wurde, die in einem der Basis Packages verwendet wird, wird eine Warnung (FSWarn[2017]) generiert.
Warning
Das Customizing von Textcollections, um neue Einträge hinzuzufügen ist nur dann sinnvoll, wenn zwingend eine bestehende Textcollection erweitert werden muss. In so einem Fall sollte der neue Eintrag einen Wert erhalten, bei dem die Gefahr von nachträglicher Überschneidung möglichst gering ist.
Registerkarte General
Description
Beschreibung für die Component.
Control Types
Hier können analog zu den Components Controls hinterlegt werden.
Registerkarte Data
Auf dieser Registerkarte werden die Einträge der Textcollection verwaltet. Die Tabelle zeigt alle vorhandenen Einträge an. Es werden die ID und die Zeichenkette in der in Framework Studio eingestellten Sprache angezeigt. Markieren Sie den Eintrag, den Sie bearbeiten möchten. Rechts neben der Tabelle werden dann die Daten zu diesem Eintrag angezeigt. Diese können auch bearbeitet werden.
Button New
Erstellt einen neuen Eintrag.
Button Delete
Löscht den markierten Eintrag.
Methoden der Textcollection
string GetTextOnID(Int32 id, string defaultText)
Liefert den Text zur übergebenen ID in der aktuellen Sprache. Wird die ID in der TextCollection nicht gefunden, wird der im Parameter defaultText übergebene Wert zurückgegeben.
IDevFrameworkObjectMLString GetOnID(Int32 id)
Liefert das Element der angegebenen Position zurück. Wird die Position in der Collection nicht gefunden, wird null zurückgegeben.
Um Ressourcen zu schonen, kann man die Methoden an der Factory-Klasse verwenden. Dadurch braucht für den Zugriff keine Instanz der TextCollection zu existieren.
string GetText(GlobalObject, Int32 id, string defaultText)
Statische Methode an der Factory-Klasse der Text-Collection. Sie liefert den Text zur übergebenen ID in der aktuellen Sprache. Wird die ID in der TextCollection nicht gefunden, wird der im Parameter defaultText übergebene Wert zurückgegeben.
Beispiel:
string sText = ctTextCollFactory.GetText(this.Global, id, "invalid id");
IDevFrameworkObjectMLString Get(GlobalObject, Int32 id)
Liefert das Element der angegebenen Position zurück. Wird die Position in der Collection nicht gefunden, wird null zurückgegeben.
Beispiel:
IDevFrameworkObjectMLString mlText = ctTextCollFactory.Get(this.Global, id);
string sText;
if (mlText != null)
{
sText = mlText.Text;
}
else
{
sText = “invalid id”;
}
Konstanten
Wird an einem Texteintrag ein Konstantenname vergeben, so wird in der Textcollection-Factory eine Konstante erzeugt. Wenn in einer Textcollection nur eine Teilmenge der Einträge mit einem Konstantennamen versehen sind, erzeugt der Compiler für die übrigen jeweils eine Warnung. Es sollten also entweder keine oder alle Einträge einen Konstantennamen besitzen.
Beispiel für die Konstantennamen:
Code-Beispiel:
public virtual void btnBuyArticle_OnClick()
{
switch(PurchaseArticle())
{
case ctArticleTextFactory.Purchased:
// Artikel versenden
break;
case ctArticleTextFactory.NotInStock:
// Nachbestellen
break;
case ctArticleTextFactory.NotExisting:
// ...
break;
}
}
ctSystemMessages
Im Namespace FSGeneral existiert bereits im SystemPackage eine Textcollection mit dem Namen ctSystemMessages. Diese Textcollection enthält Systemmeldungen, die von den Clients benutzt werden (z.B. "Soll die Anwendung geschlossen werden?" oder "Abbrechen"). Auf diese Weise wird dem Client ermöglicht, auch Systemmeldungen in der Sprache anzeigen zu können, in der die Anwendung gestartet wurde.
Diese Textcollection kann in jedem Package customized werden, so dass zum Beispiel in einem landesspezifischen Package die Systemmeldungen in der entsprechenden Sprache nachgepflegt werden können.