AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Mehrere TImages mit einer Procedure erstellen

Mehrere TImages mit einer Procedure erstellen

Ein Thema von Benni0811 · begonnen am 3. Okt 2016 · letzter Beitrag vom 11. Okt 2016
Antwort Antwort
Seite 2 von 2     12
Jim Carrey
(Gast)

n/a Beiträge
 
#11

AW: Mehrere TImages mit einer Procedure erstellen

  Alt 10. Okt 2016, 17:12
Wie kombiniere ich das jetzt mit der TObjectlist?
Also ohne Generics (ja, haut mich), müsstest du jetzt eine TObjectList irgendwo erstellen und sie füllen:

Delphi-Quellcode:
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;
Ich habe das jetzt nicht getestet aber das müsste doch eigentlich so funktionieren, oder?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.766 Beiträge
 
Delphi 10.1 Berlin Professional
 
#12

AW: Mehrere TImages mit einer Procedure erstellen

  Alt 10. Okt 2016, 18:18
Moin...
Zitat:
Ich habe den Crashkurs jetzt gelesen und außerdem der Klasse die Eigenschaften ImageTop und ImageLeft hinzugefügt:
Ein Schritt nach dem Anderen...

Zitat:
Also ohne Generics (ja, haut mich)
... knapp daneben. Warum sollte er nicht die neuen Möglichkeiten nutzen?

Delphi-Quellcode:
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;
... und dann greifst du auf die Liste zu um mit dem Bild (TBild) zu arbeiten...
Delphi-Quellcode:
var
  DasBild: TBild;
begin
  DasBild := MeineObjectList[DeinGewünschterIntex]; // durch die Generics kannst das Object direkt ohne Casten benutzen
end;
... die Listen haben noch weitere Funktionen um auf das Bild zuzugreifen.
http://docwiki.embarcadero.com/Libra...ns.TObjectList
http://docwiki.embarcadero.com/Libra...ctList_Methods

...Freigabe der "MeineObjectList"
Delphi-Quellcode:
constructor Create;
begin
  MeineObjectList := TObjectList<TBild>.Create(True);
end;

destructor Destroy;
begin
  MeineObjectList.Free;
  inherited;
end;

Geändert von haentschman (11. Okt 2016 um 12:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.382 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Mehrere TImages mit einer Procedure erstellen

  Alt 10. Okt 2016, 18:30
Man kann statt der TObjektList /TObjektList<TBild> auch ein TObjectDictionary<string,TBild> verwenden, denn da kann man dann auch noch schöner auf ein bestimmtes Bild zugreifen.

Also statt über den Index, welchen man vorher noch suchen müsste, direkt über den Namen.
Delphi-Quellcode:
//MeineObjectList.Add(Test);
MeineObjectList.Add(Key, Test); // oder MeineObjectList.Add(Test.ImageName, Test);

DasBild := MeineObjectList['DerBildName'];
Oder statt dem Namen direkt die Koordinaten
Delphi-Quellcode:
var MeineObjectList: TObjectDictionary<TPoint,TBild>;

MeineObjectList.Add(Point(FeldY, FeldY), Test);

DasBild := MeineObjectList[Point(HoleY, HoleY)];
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (10. Okt 2016 um 18:37 Uhr)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
1.296 Beiträge
 
Delphi 2007 Professional
 
#14

AW: Mehrere TImages mit einer Procedure erstellen

  Alt 11. Okt 2016, 11:30
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;
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 23:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf