Einzelnen Beitrag anzeigen

fisipjm

Registriert seit: 28. Okt 2013
299 Beiträge
 
#10

AW: Erweitern einer vorahandenen Property in einer VCL Komponente

  Alt 25. Jul 2017, 11:29
Ich habs befürchtet, den Wert ID hat der Marker ja, den kann man dafür verwenden um ihn später auch wieder anzusprechen. Ich wollte das aber eigentlich lieber umgehen, da es der ohnehin schon recht umständlichen Programmierung noch einen weiteren Step hinzufügt
Anzeigen und Speichern hängt aber nicht immer untrennbar zusammen.

Du kannst problemlos die GUIDs in einer externen Liste verwalten, aber die jeweilige GUID dennoch in deinen Marker-Items als Property bereitstellen.

Stichwort: Class-Helper
Also das Property nachträglich/virtuell an dem Marker hängend, aber im Getter/Setter dieses Property die GUID extern verwalten. (z.B. in dem Dictionary)
Himitsu du bist offiziel der Held des Tages

Hab es jetzt folgendermaßen gelöst:

Delphi-Quellcode:
USES
..., Generics.Colletions,....

type
TMarkerHelper = class helper for TMarker
  class var
    AddressGGUIDDictionary : TDictionary<TMarker,String>;
  public
    procedure SetAddressGGUID(lAddressgguid : string);
    function GetAddressGGUID : string;
  published
    property AddressGGUID:string read GetAddressGGUID write SetAddressGGUID;
end;

.....

procedure tmarkerhelper.SetAddressGGUID(lAddressgguid: string);
begin
  if not assigned(AddressGGUIDDictionary) then
    AddressGGUIDDictionary:=TDictionary<TMarker, String>.Create;
  AddressGGUIDDictionary.Add(self,lAddressgguid);
end;

function tmarkerhelper.getAddressGGUID : string;
begin
  AddressGGUIDDictionary.TryGetValue(self,result);
end;
 
...
Habs getestet und macht was es soll. Gibts da noch was zu beachten oder passt der Code so?
MFG
PJM
  Mit Zitat antworten Zitat