Mit .AsString oder .Text?

7

Ich habe gerade ein bisschen Code (D5) gesehen, wo sie verwendet haben ...

%Vor%

Es scheint gut zu funktionieren, aber ich habe es immer benutzt ...

%Vor%

Ich habe beide beim Laden eines TMemo verwendet und wieder scheint es keinen Unterschied zu geben.

%Vor%

Gibt es einen Grund, warum ich einen über den anderen benutzen sollte? Wenn ja, welches?

Eigentlich verwende ich für TMemo normalerweise ...

%Vor%

das scheint auch zu funktionieren.

Danke

    
user2175495 02.04.2013, 15:37
quelle

2 Antworten

19

Die Text -Eigenschaft soll verwendet werden, um die Textdarstellung eines Feldes, das in einem DataAware-Steuerelement bearbeitet wird, im Gegensatz zu DisplayText Eigenschaft, die Ihnen eine Zeichenfolge gibt, die den Wert für den Benutzer darstellt (sie kann Satzzeichen oder eine andere Dekoration für den einfachen Wert enthalten).

  

Enthält die Zeichenfolge, die in einem datensensitiven Steuerelement angezeigt werden soll, wenn sich das Feld im Bearbeitungsmodus befindet

Ein typisches Beispiel ist ein TFloatField mit der Eigenschaft Currency auf True . Das DisplayText gibt Ihnen einen String mit der Zahl, die Kommas enthält (falls erforderlich), das Dezimaltrennzeichen und ein Währungssymbol. Die Eigenschaft Text gibt Ihnen eine Zeichenfolge ohne Kommas oder Währungssymbol.

%Vor%

Beide obigen Eigenschaften können angepasst werden, indem Sie einen OnGetText Event-Handler schreiben Hier können Sie benutzerdefinierte Logik schreiben, um convert den Wert in eine Zeichenfolgendarstellung umzuwandeln. Der Parameter DisplayText gibt an, ob die gewünschte Zeichenfolge den Wert für die Bearbeitung darstellen soll oder nicht.

Auf der anderen Seite verwendet die AsString -Eigenschaft eine einfachere Konvertierung zwischen dem Basisdatentyp und der Zeichenfolge. Jeder TField-Nachfolger implementiert die virtuelle GetAsString-Methode mithilfe von Funktionen aus der RTL, um diese Repräsentation auszuführen. Im Anschluss an das TFloatField-Beispiel ruft diese Klasse zu diesem Zweck FloatToStr() auf.

>

Alles in allem lautet die Antwort auf Ihre Frage : AsString gibt die gleiche Zeichenfolge wie die Text -Eigenschaft zurück, wenn kein OnGetText-Ereignishandler vorhanden ist, aber bei einem Ereignis möglicherweise anders ist Handler oder ein nicht standardmäßiger TField-Nachkomme.

Ich kann nicht sagen, was für Sie geeigneter ist, weil es davon abhängt, was für den zurückgegebenen Wert beabsichtigt ist, aber wenn Sie es verwenden, um die Werte für den Benutzer in der Benutzeroberfläche anzuzeigen (als Codebeispiel) ), Rate ich Ihnen, die DisplayText-Eigenschaft zu verwenden.

    
jachguate 02.04.2013, 16:04
quelle
2

AsString enthält den Wert des Feldes als Zeichenfolge.

Text enthält die Zeichenfolge, die in einem datensensitiven Steuerelement angezeigt werden soll, wenn sich das Feld im Bearbeitungsmodus befindet.

In Ihrem Fall sollten Sie AsString verwenden.

    
Riho 02.04.2013 15:57
quelle

Tags und Links