Den Eigenschaftswert setzen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Die Eigenschaft als Text bearbeiten


Die Methode SetValue nimmt einen im Objektinspektor eingegebenen String entgegen, konvertiert ihn in den entsprechenden Typ und weist ihn der Eigenschaft als Wert zu. Enthält der String keinen für die Eigenschaft gültigen Wert, sollte SetValue eine Exception auslösen und den Wert nicht verwenden.

Um String-Werte in Eigenschaften zu speichern, überschreiben Sie die Methode SetValue des Eigenschaftseditors.

In SetValue sollte der String konvertiert und vor dem Aufrufen einer der Set-Methoden validiert werden.

Beispiel

Das folgende Beispiel zeigt die Verwendung der Methoden GetValue und SetValue für den Integertyp von TIntegerProperty. Weil Integer ein Ordinaltyp ist:

  • Ruft GetValue GetOrdValue auf und konvertiert das Ergebnis in einen String.
  • Konvertiert SetValue den String in einen Integerwert, führt Bereichsprüfungen durch und ruft anschließend SetOrdValue auf.
function TIntegerProperty.GetValue: string;
begin
  with GetTypeData(GetPropType)^ do
    if OrdType = otULong then // unsigned
      Result := IntToStr(Cardinal(GetOrdValue))
    else
      Result := IntToStr(GetOrdValue);
end; 
procedure TIntegerProperty.SetValue(const Value: string);
  procedure Error(const Args: array of const);
  begin
    raise EPropertyError.CreateResFmt(@SOutOfRange, Args);
  end;
var
  L: Int64;
begin
  L := StrToInt64(Value);
  with GetTypeData(GetPropType)^ do
    if OrdType = otULong then
    begin   // unsigned compare and reporting needed
      if (L < Cardinal(MinValue)) or (L > Cardinal(MaxValue)) then
      // bump up to Int64 to get past the %d in the format string
        Error([Int64(Cardinal(MinValue)), Int64(Cardinal(MaxValue))]);
    end
    else if (L < MinValue) or (L > MaxValue) then
      Error([MinValue, MaxValue]);
  SetOrdValue(L);
end;

Die Details in diesem Beispiel sind weniger wichtig als das Grundprinzip:

  • GetValue konvertiert den Wert in einen String.
  • SetValue konvertiert den String und validiert vor dem Aufrufen einer der Set-Methoden den Wert.

Siehe auch