Définition de la valeur de la propriété

De RAD Studio
Aller à : navigation, rechercher

Remonter à Modification de la propriété sous une forme textuelle


La méthode SetValue de l'éditeur de propriétés accepte la chaîne saisie dans l'inspecteur d'objets, la convertit dans le type approprié, et définit la propriété. Si la chaîne n'est pas une valeur convenant à la propriété, SetValue doit déclencher et ignorer la valeur.

Pour lire des valeurs chaîne dans les propriétés, vous devez redéfinir la méthode SetValue de l’éditeur de propriétés.

SetValue doit convertir la chaîne et la valider avant d'appeler une des méthodes.

Exemple

L'exemple suivant montre l'utilisation des méthodes GetValue et SetValue pour le type entier de TIntegerProperty. Car l'entier est un type ordinal :

  • GetValue appelle GetOrdValue et convertit le résultat en une chaîne.
  • SetValue convertit la chaîne d'un entier, effectue quelque vérification des intervalles et appelle SetOrdValue.
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;

Les spécificités des exemples particuliers sont moins importantes qu’en principe :

  • GetValue convertit la valeut en une chaîne.
  • SetValue convertit la chaîne et valide la valeur avant d'appeler une des méthodes "Set".

Voir aussi