Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#22

AW: einen Datensatzmitgliedsnamen dynamisch zuweisen

  Alt 7. Jul 2022, 10:07
Array-Property, das ist sowas, wie bei TList/TStrings/TStringList ... halt wie beim Array.
Delphi-Quellcode:
property Strings[Index: Integer]: string read GetString write SetStrings;

SL.Strings[index]
SL.Value[Name]
Default-Property, sind jene, welche "implizit" genutzt werden können.
Delphi-Quellcode:
property Strings[Index: Integer]: string read GetString write SetStrings; default;

SL.Strings[index] // direkt
SL[index] // default
dagegen die Default-Value bzw. Default-Property-Value

property Cool: Boolean read GetCool write SetCool default True;
Die Klasse Instanz neu erstelt, da ist der Wert True ... bzw. eigentlich heißt es, dass "True" nicht in der DFM gespeichert wird, also nur "False" steht drin.
(stimmen beide Aussagen aber nicht überein, dann hast du ein Problem, beim Laden einer DFM ... also aufpassen, wenn du Klassen baust)

Delphi-Quellcode:
property StringEx: string index 123 read GetString write SetStrings;

SL.StringEx // Index nur intern, z.B. zur Haldung von Kontroll-Daten und/oder um für mehrere Property nur "einen" Getter/Setter zu nutzen


// aber so fällt bestmmt auf, dass diese beiden "Index" nicht das Gleiche sind
property StringEx[Index2: Integer]: string index 123 read GetString write SetStrings;


// der Getter und Setter sieht hier erstmal gleich aus
property A: string index 1 read GetABC write SetABC;
property B: string index 2 read GetABC write SetABC;
property C: string index 3 read GetABC write SetABC;

property X[Index: Integer]: string read GetABC write SetABC;

procedure GetABC(Index: Integer): string;
begin
  //Assert((Index => 1) and (Index <= 3), 'peng');
  case Index of
    1: Result := 'Aaa';
    2: Result := 'Bbb';
    3: Result := 'Ccc';
    else raise Exception.Create('peng');
  end;
end;
$2B or not $2B

Geändert von himitsu ( 7. Jul 2022 um 10:23 Uhr)
  Mit Zitat antworten Zitat