AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Neues Live Template einbinden

Ein Thema von Jelly · begonnen am 11. Jan 2006 · letzter Beitrag vom 11. Jan 2006
Antwort Antwort
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#1

Neues Live Template einbinden

  Alt 11. Jan 2006, 20:59
Nachdem die Templates ja so toll hier in den Videos gelobt wurden, wollt ich auch mal was ausprobieren, und hab Folgendes Template erstellt:

XML-Code:
<?xml version="1.0" encoding="utf-8" ?>

<codetemplate   xmlns="http://schemas.borland.com/Delphi/2005/codetemplates"
            version="1.0.0">
   <template name="collection" invoke="manual">
      <description>
         Collection Klasse mit dazugehöriger Item Klasse
      </description>
      <author>
         Tom Peiffer, 2006
      </author>
      <point name="ContainerClass">
         <text>
            TContainerClass
         </text>
         <hint>
            Klassentyp, in dem die Collection aufgenommen wird
         </hint>
      </point>
      <point name="CollectionItemClass">
         <text>
            TMyCollectionItem
         </text>
         <hint>
            Item Klasse eines Eintrags in der Collection
         </hint>
      </point>
      <point name="CollectionClass">
         <text>
            TMyCollection
         </text>
         <hint>
            Collection Klasse
         </hint>
      </point>
      <code language="Delphi" context="decl" delimiter="|"><![CDATA[

|ContainerClass| = class ;
  { Den Typen |ContainerClass| muss als }
  { forward deklariert sein da er selbst }
  { in der Collection benutzt wird }

|CollectionItemClass| = class (TCollectionItem)
  private
  protected
  procedure DefineProperties (Filer : TFiler) ; override ;
  function GetDisplayName : string ; override ;
  public
  constructor Create (Collection : TCollection) ; override ;
  destructor Destroy ; override ;
  procedure Assign (Source : TPersistent) ; override ;
  published
  { Hier werden die eigenen Item Properties definiert }
  |*|
  end ;


  |CollectionClass| = class (TCollection)
  private
  FOwner : |ContainerClass| ; { Benutze hier den Typ deiner Komponente }
  function GetItem(Index: integer): |CollectionItemClass|;
  procedure SetItem(Index: integer; const Value: |CollectionItemClass|);
  protected
  function GetOwner : TPersistent ; override ;
  procedure Update (Item : TCollectionItem) ; override ;
  public
  constructor Create (AOwner : |ContainerClass|) ;
  function Add : |CollectionItemClass| ;
  property YourComponent : |ContainerClass| read FOwner ;
  property Items[Index : integer]: |CollectionItemClass| read GetItem write SetItem ; default ;
  end ;

  |ContainerClass| = class (TComponent)
  private
  FItems: |CollectionClass|;
  procedure SetItems(const Value: |CollectionClass|);
  public
  constructor Create (AOwner : TComponent) ; override ;
  published
  property Items : |CollectionClass| read FItems write SetItems;
  end ;


{ |CollectionItemClass| }

procedure |CollectionItemClass|.Assign(Source: TPersistent);
begin
  inherited Assign (Source) ;
end;

constructor |CollectionItemClass|.Create(Collection: TCollection);
begin
  inherited Create (Collection) ;
end;

procedure |CollectionItemClass|.DefineProperties(Filer: TFiler);
begin
  inherited DefineProperties (Filer) ;
end;

destructor |CollectionItemClass|.Destroy;
begin
  inherited Destroy ;
end;

function |CollectionItemClass|.GetDisplayName: string;
begin
  if (FProp = '')
  then GetDisplayName := inherited GetDisplayName
  else GetDisplayName := FProp ;
end;

{ |CollectionClass| }

function |CollectionClass|.Add: |CollectionItemClass|;
begin
  Result := |CollectionItemClass|(inherited Add) ;
end;

constructor |CollectionClass|.Create(AOwner: |ContainerClass|);
begin
  inherited Create (|CollectionItemClass|) ;
  FOwner := AOwner ;
end;

function |CollectionClass|.GetItem(Index: integer): |CollectionItemClass|;
begin
  Result := |CollectionItemClass|(inherited GetItem(index)) ;
end;

function |CollectionClass|.GetOwner: TPersistent;
begin
  Result := FOwner ;
end;

procedure |CollectionClass|.SetItem(Index: integer;
  const Value: |CollectionItemClass|);
begin
  inherited SetItem (Index,Value) ;
end;

procedure |CollectionClass|.Update(Item: TCollectionItem);
begin
  //
end;


{ |ContainerClass| }

constructor |ContainerClass|.Create(AOwner: TComponent);
begin
  inherited Create (AOwner) ;
  FItems := |CollectionClass|.create (Self) ;
end;

procedure |ContainerClass|.SetItems(const Value: |CollectionClass|);
begin
  FItems := Value;
end;


]]>
      </code>
   </template>
</codetemplate>
Eine Fehler drin seh ich auf Anhieb nicht. Aber ich kann das Template nicht nutzen. In der Template Liste in der IDE taucht mein Collection gar nicht auf.

Muss ich da noch was installieren ?
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Neues Live Template einbinden

  Alt 11. Jan 2006, 21:26
Seltsam, irgendwie klappts beim zweiten Versuch. Am Code hab ich nichts verändert

Stinkt mir sehr nach Bug
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz