Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Object dynamisch in einem Array erzeufen (https://www.delphipraxis.net/155162-object-dynamisch-einem-array-erzeufen.html)

David Martens 13. Okt 2010 22:17

AW: Object dynamisch in einem Array erzeufen
 
@Jens01: Das hab ich auch schon festgestellt.

@alle: Diese Art des Templates ist leider nicht auf meinem Mist gewachsen. Ich hab das Ganze nur leicht abgewandelt.

@gangs-taas:
Zitat:

http://www.dummzeuch.de/delphi/objec...tsch.html] Dies ist eine Klasse mit einem Array, die beim Zugriff ueberprueft, ob der Index innerhalb der Arraygrenzen liegt.
Da wird nur Bezug auf das obrige Beispiel genommen. Hier ein Link zum allgemeinen Thema Template http://de.wikipedia.org/wiki/Template_(Programmierung)

Mehr Hilfe als in Posting 13 kann ich kaum geben, aber ich versuchs mal:

Hier der ENTSCHEIDENDE Teil:
Delphi-Quellcode:
unit u_FilterItemList; /// /// 1. Anpassung ////// HIER ein sinnvoller Name für die Unit

interface

uses
  Classes,
  // Unit mit Klasse für _ITEM_TYPE_ (eine ganz normale Klasse)
  u_FilterItem; /// /// 2. Anpassung ////// HIER die Unit in dem das Objekt steht das die Liste soll

// Kompilerdirektive für das Template
{$DEFINE LIST_TEMPLATE_}

type
  // Vorfahr der "Listklasse"
  _LIST_ANCESTOR_ = TObject;
  // Vorfahr der "Kontainerklasse", sollte ein Nachfahr von TList sein
  _LIST_CONTAINER_ = TList;
  // Typ des Items in der "Kontainerklasse" (z.B.: Pointer für TList, IInterface für TInterfaceList}
  _LIST_CONTAINER_ITEM_TYPE_ = pointer;
  // Item der typisierten Klasse, dieser Typ wird von der Klasse ausgegeben
  _ITEM_TYPE_ = TFilterItem; /// /// 3. Anpassung ////// HIER das Objekt das aus der Unit (siehe 2. Anpassung) in die Liste soll

// Verzeichnis: \Delphi\Komponenten\Templates nicht in Umgebungsvariablen vorhanden daher so:

// 1. Template-aufruf: erstellt den Kopf der _LIST_TEMPLATE_ Klasse anhand der oben gemachten Angaben
{$INCLUDE '..\Templates\t_TypedObjectList.pas'}  /// /// 4. Anpassung ////// HIER den Pfad anpassen wenn das Template wo anders ist

type
  // "Umbenennung" von _LIST_TEMPLATE_ und weitere spezielle Eigenschaften für die Klasse
  TFilterItemList = class(_LIST_TEMPLATE_) /// /// 5. Anpassung ////// HIER der ListenKlasse deinen Namen geben
  protected
    // muss implementiert werden, falls die Items freigegeben werden müssen (destructor Aufruf)
    procedure FreeItem(_Item: _ITEM_TYPE_); override;
  end;

implementation

// 2. Template-aufruf: implementiert die _LIST_TEMPLATE_ Klasse anhand der oben gemachten Angaben
{$INCLUDE '..\Templates\t_TypedObjectList.pas'}  /// /// siehe 4. Anpassung


// Implementierung der speziellen Eigenschaften der Klasse

{ TFilterItemList } /// /// siehe 5. Anpassung

procedure TFilterItemList.FreeItem(_Item: _ITEM_TYPE_); /// /// siehe 5. Anpassung
begin
  _Item.Free;

  inherited;
end;

end.
Alle entscheidenden Teile hab ich mit /// /// X. Anpassung bzw. /// /// siehe X. Anpassung markiert / zusätzlich kommentiert.

gangs-taas 13. Okt 2010 22:23

AW: Object dynamisch in einem Array erzeufen
 
Zitat:

Zitat von stahli (Beitrag 1055662)
Also der arme gangs-taas tut mir leid.
Er wollte doch nur wissen, was sich für den Einstieg am einfachsten anwenden lässt...

ist ja schön, dass du dich über mich lustig machst -.-
aber ich ziehe eine einfach lösung, die ich versteh, einer komplizierten, die ich per copy&past benutzen kann, vor

sorry wenn das hier auf unverständnis trifft

euch übrigen danke nochmal

@ David Martens :
danke ich glaub langsamm versteh ich es (zwar nicht alles & nicht warum) aber ich denk, ich kann esn utzen ...
danke

David Martens 13. Okt 2010 22:29

AW: Object dynamisch in einem Array erzeufen
 
@gangs-taas: Du mußt es ja auch nicht alles verstehen, nur die entscheidenden Stellen ändern :-D

stahli 13. Okt 2010 22:30

AW: Object dynamisch in einem Array erzeufen
 
Nee, sorry, da hast Du mich falsch verstanden!
Ich meinte das so, dass Du hier mit komplexen Lösungen bombardiert wirst. Ich hätte da als Anfänger schon aufgegegeben.

M.E. ist halt TObjectList mit einem TypeCast die einfachste und übersichtlichste Lösung.

Also ich meinte letztlich genau das:
Zitat:

aber ich ziehe eine einfach lösung, die ich versteh, einer komplizierten, die ich per copy&past benutzen kann, vor
Ich hoffe, dass das Missverständnis damit geklärt ist...

gangs-taas 13. Okt 2010 22:32

AW: Object dynamisch in einem Array erzeufen
 
Zitat:

Zitat von David Martens (Beitrag 1055671)
@gangs-taas: Du mußt es ja auch nicht alles verstehen, nur die entscheidenden Stellen ändern :-D

ookay :D
probier ich morgne
heute ist zu spät um vernünftig zu denken und zu ändern :D

gute nacht


ps
Zitat:

Zitat von stahli (Beitrag 1055672)
Nee, sorry, da hast Du mich falsch verstanden!
Ich meinte das so, dass Du hier mit komplexen Lösungen bombardiert wirst. Ich hätte da als Anfänger schon aufgegegeben.

M.E. ist halt TObjectList mit einem TypeCast die einfachste und übersichtlichste Lösung.

Also ich meinte letztlich genau das:
Zitat:

aber ich ziehe eine einfach lösung, die ich versteh, einer komplizierten, die ich per copy&past benutzen kann, vor
Ich hoffe, dass das Missverständnis damit geklärt ist...

okay
sorry ich hatte dich echt falsch verstanden
ja mir schwirrt der kopf :D
aber scheinbar muss man es nicht alles verstehn :D
ich versuchs morgne in ruhe nachzuvollziehen ...



danke für eure hilfe

Luckie 14. Okt 2010 00:16

AW: Object dynamisch in einem Array erzeufen
 
Wo wird hier was der Liste hinzugefügt:
Delphi-Quellcode:
   // dynamisch Komponenten erzeugen und in die Liste packen
   for i := 0 to 10 do
   begin
      lbl := TLabel.Create(FMyList {<==});
      lbl.Caption := Format('Label %d',[i]);
      lbl.Top := i * 15;
      lbl.Left := i * 9;
      lbl.Parent := Self;
   end;

schlecki 14. Okt 2010 07:22

AW: Object dynamisch in einem Array erzeufen
 
Zitat:

Zitat von Luckie (Beitrag 1055676)
Wo wird hier was der Liste hinzugefügt:
Delphi-Quellcode:
   
      lbl := TLabel.Create(FMyList {<==});

hier ;)

Gruß
schlecki

[edit]wurde aber auch schon in #14 erwähnt[/edit]

Luckie 14. Okt 2010 11:31

AW: Object dynamisch in einem Array erzeufen
 
Wird da nicht nur der Besitzer gesetzt?

Sir Rufo 14. Okt 2010 11:34

AW: Object dynamisch in einem Array erzeufen
 
Das wurde doch schon in #15 angesprochen

Luckie 14. Okt 2010 11:41

AW: Object dynamisch in einem Array erzeufen
 
Das ist der Schlüsselsatz:
Zitat:

Dadurch das du FMylist als sogannten Owner (Besitzer) im Create angegeben hast,
landet das neue Label in FMyList.
Danke für den Hinweis.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:46 Uhr.
Seite 3 von 3     123   

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