AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Tcompenent über selbst erzeugten namen ansprechen
Thema durchsuchen
Ansicht
Themen-Optionen

Tcompenent über selbst erzeugten namen ansprechen

Ein Thema von SimStar001 · begonnen am 6. Jul 2009 · letzter Beitrag vom 7. Jul 2009
Antwort Antwort
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#1

Tcompenent über selbst erzeugten namen ansprechen

  Alt 6. Jul 2009, 20:08
Hallo,

ich habe ein paar Images erzeugt, und diese will ich gerne ansprechen über einen von mir erzeugten Namen.

BSP: Image1, Image2, Image3... usw.

bitte kein array als lösung vorshlagen, hatte ich schon, und ich brauche aber die andere variante.

über componentcount kann ich ja alle componenten ermitteln.

kann ich jetzt auch das ganze andersherum machen, sprich dass ich z.b. sage, mache was mit

TImage('Image1')...???
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Tcompenent über selbst erzeugten namen ansprechen

  Alt 6. Jul 2009, 20:11
Was spricht gegen ein Array und eine Funktion die darauf zugreift? Es gibt FindComponent aber da musst du in aller Regel casten um die gewünschten Dinge zu bewerkstelligen und intern wird da auch ein Array gefunden - nur mit dem Nachteil das neben den Komponenten die man will auch noch andere mit Array sind und das ganze somit langsamer ist als ein eigenes Array anzulegen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#3

Re: Tcompenent über selbst erzeugten namen ansprechen

  Alt 6. Jul 2009, 20:12
eigentlich nix, aber wollte es halt ohne machen, und wissen obs auch gehen würd...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Tcompenent über selbst erzeugten namen ansprechen

  Alt 6. Jul 2009, 20:14
Hier könnte Form.FindComponent() helfen. Die Lösung mit dem Array wäre aber die besserer.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Tcompenent über selbst erzeugten namen ansprechen

  Alt 6. Jul 2009, 21:29
Ich mache das immer mit einer TList, da muss man sich zwar merken und immer Typecasten das dort ein TImage drinne ist aber mir ist das lieber als mit SetLength das Array zu bedienen. Außerdem kann man Komponenten aus der Mitte schnell und einfach löschen oder welche einfügen.
Sebastian
  Mit Zitat antworten Zitat
fajac

Registriert seit: 1. Jul 2009
60 Beiträge
 
#6

Re: Tcompenent über selbst erzeugten namen ansprechen

  Alt 7. Jul 2009, 07:36
Man kann auch einfach eine neue Klasse von TStringList ableiten und eine entsprechende Zugriffsmethode hinzufügen:
Delphi-Quellcode:
type
  TTImageList = class (TStringList)
  public
    function Image (AName : string) : TImage;
  
  ...

implementation

function TTImageList.Image (AName : string) : TImage;
var
  index : Integer;
begin
  index := IndexOf (AName);
  if index >= 0 then
    Result := TImage(Objects [index])
  else
    Result := nil;
end;
...und zum Hinzufügen eines TImage zur Liste :
Delphi-Quellcode:
var
  liste : TTImageList;
  image : TImage;
begin
  ...
  liste.AddObject (image.Name, image);
Dann geht der Zugriff auf ein Image in der z.B. Liste so:
  image = liste.Image('Image1');
  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 16:56 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