![]() |
AW: Mehrere TImages mit einer Procedure erstellen
Zitat:
Delphi-Quellcode:
Ich habe das jetzt nicht getestet aber das müsste doch eigentlich so funktionieren, oder?
procedure TForm1.Button1Click(Sender: TObject);
var MeineObjectList: TObjectList; Test: TBild; begin MeineObjectList := TObjectList.Create; Key := 'Feld'+IntToStr(Feldx)+','+IntToStr(Feldy); Test := TBild.Create; Test.FImageName:=Key; Test.FImageHeight:=Feldsize; Test.FImageWidth:=Feldsize; Imagelist1.GetBitmap(0,Test.FImageContent); MeineObjectList.Add(Test); // Irgendwo musst du dann auch die ObjectListe wieder freigeben. end; |
AW: Mehrere TImages mit einer Procedure erstellen
Moin...:P
Zitat:
Zitat:
Delphi-Quellcode:
... und dann greifst du auf die Liste zu um mit dem Bild (TBild) zu arbeiten...
TForm1 = class(TForm) // bestehend
. . private MeineObjectList := TObjectList<TBild>; // die Instanz der Liste public constructor Create; destructor Destroy; override; end; procedure TForm1.Button1Click(Sender: TObject); var //MeineObjectList: TObjectList; Test: TBild; begin // MeineObjectList := TObjectList<TBild>.Create(True); // -> Generics, das True bedeutet das die Listeneinträge von der Liste verwaltet werden (Freigabe) // -> Verlagern in den constructor Key := 'Feld'+IntToStr(Feldx)+','+IntToStr(Feldy); Test := TBild.Create; Test.FImageName:=Key; Test.FImageHeight:=Feldsize; Test.FImageWidth:=Feldsize; Imagelist1.GetBitmap(0,Test.FImageContent); MeineObjectList.Add(Test); // Irgendwo musst du dann auch die ObjectListe wieder freigeben. end;
Delphi-Quellcode:
... die Listen haben noch weitere Funktionen um auf das Bild zuzugreifen.
var
DasBild: TBild; begin DasBild := MeineObjectList[DeinGewünschterIntex]; // durch die Generics kannst das Object direkt ohne Casten benutzen end; ![]() ![]() ...Freigabe der "MeineObjectList"
Delphi-Quellcode:
constructor Create;
begin MeineObjectList := TObjectList<TBild>.Create(True); end; destructor Destroy; begin MeineObjectList.Free; inherited; end; |
AW: Mehrere TImages mit einer Procedure erstellen
Man kann statt der
Delphi-Quellcode:
/
TObjektList
Delphi-Quellcode:
auch ein
TObjektList<TBild>
Delphi-Quellcode:
verwenden, denn da kann man dann auch noch schöner auf ein bestimmtes Bild zugreifen.
TObjectDictionary<string,TBild>
Also statt über den Index, welchen man vorher noch suchen müsste, direkt über den Namen.
Delphi-Quellcode:
Oder statt dem Namen direkt die Koordinaten
//MeineObjectList.Add(Test);
MeineObjectList.Add(Key, Test); // oder MeineObjectList.Add(Test.ImageName, Test); DasBild := MeineObjectList['DerBildName'];
Delphi-Quellcode:
var MeineObjectList: TObjectDictionary<TPoint,TBild>;
MeineObjectList.Add(Point(FeldY, FeldY), Test); DasBild := MeineObjectList[Point(HoleY, HoleY)]; |
AW: Mehrere TImages mit einer Procedure erstellen
Konstruktoren und Destruktoren sollte man in der Regel überschreiben, nicht neu definieren.
Sonst werden diese nicht aufgerufen. Dabei auch den richtigen Konstruktor überschreiben und das inherited nicht vergessen.
Delphi-Quellcode:
TForm1 = class(TForm) // bestehend
. . private MeineObjectList := TObjectList<TBild>; // die Instanz der Liste public constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; constructor Create(AOwner: TComponent); begin inherited; MeineObjectList := TObjectList<TBild>.Create(True); end; destructor Destroy; begin MeineObjectList.Free; inherited; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz