Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Objekte und Variablen nummeriet verwenden (https://www.delphipraxis.net/87125-objekte-und-variablen-nummeriet-verwenden.html)

schrimm 23. Feb 2007 16:20


Objekte und Variablen nummeriet verwenden
 
Also ich hab hier ein hoffentlich leicht zu lösendes Problem:
ich will, dass der mit mehreren objekten inherhalb einer zählschleife was gemacht wird.
also
Delphi-Quellcode:
image1.left:=image1.left+5
image2.left:=image2.left+5
image3.left:=image3.left+5
oder irgend sowas nun die frage: wie krig ich die Zählvariable in das objekt rein?

das ganze mit variablen wäre auch ganz praktisch
also a1,a2,a3,a4, ... alle um das gleiche verändern

[edit=SirThornberry]Delphi-Tags gesetzt, doppelte Buchstaben im Titel entfernt, Buchstabendreher berichtigt und Leerzeichen im Titel gesetzt - nächstes mal bitte die Zeit nehmen nochmal zu schauen was du getippt hast!! Mfg, SirThornberry[/edit]

DGL-luke 23. Feb 2007 16:23

Re: Obbjekteund variabeln nummerieet verwenden
 
Hallo,

dazu musst du deine Objekte einfach in ein array packen:

Delphi-Quellcode:
var
  Images: array[0..4] of TImage; //statisches array
  ImagesO: array of TImage //dynamisches array
Zuweisung so:

Delphi-Quellcode:
//statisch
Images[0] := Image1;
//dynamisch
SetLength(ImagesO, 1);
Images[0] := Image1;
Die Deklaration packst du am besten in den private-abschnitt deiner formdeklaration und weist die werte im OnCreate zu.

schrimm 24. Feb 2007 12:55

Re: Obbjekteund variabeln nummerieet verwenden
 
das mit den arrays hatte ich auch schon, aber muss man da nicht trotzdem wieder jedes Bild zuweisen?
also
bildarray[1]:=Image1.left;
bildarray[2]:=Image2.left;
...
könnta man das nicht irgendwie so:
Delphi-Quellcode:
for k:=1 to 30 do
 begin
  bildarray[k]:=Image[k].left;
 end;
das problem ist nur, dass ich das Image nicht mit der variablen verbinden kann, also das oben gezeigte geht so ni. :coder2:

Jürgen Thomas 24. Feb 2007 13:17

Re: Obbjekteund variabeln nummerieet verwenden
 
Bei DGL-Luke ist Images ein array of TImage. Wenn ich Dich richtig verstanden habe, gilt das auch für Dein bildarray. Dann darfst/kannst Du einem Element doch keine Zahl zuweisen (bei Deinem Versuch left). Folgendes ist dann möglich:
Delphi-Quellcode:
// Zuweisen eines Bildes; das muss "am Anfang" gemacht werden
Images[0] := Image1;
// Zuweisen der Eigenschaft left
Images[1].Left := 344;
// oder
Images[1].Left := Images[1].Left + 5;
oder was auch immer Du machen willst.

Gruß Jürgen

Thorben_K 24. Feb 2007 14:40

Re: Objekte und Variablen nummeriet verwenden
 
Ich denke das Stichwort ist wie so oft: FindComponents


Delphi-Quellcode:

var
  Img : TComponent;
  i : LongInt;

begin
  for i := 1 to AnzahlImage do
  begin
    Img := FindComponent('Image' + IntToStr(i));
    (Img as TImage).Left := (Img as TImage).Left + 10;
  end;
end;

DGL-luke 24. Feb 2007 15:29

Re: Objekte und Variablen nummeriet verwenden
 
Wah nein, das ist das Stichwort für "wie mache ich es nicht?"!

Delphi-Quellcode:
for k:=1 to 30 do
begin
  bildarray[k]:=Image[k].left;
end;
Was heißt da das geht so nicht? nix da!

Einmal ins formcreate reingepackt:

Delphi-Quellcode:
SetLength(Images,5);

Images[0] := Image1;
Images[1] := Image2;
Images[2] := Image3;
Images[3] := Image4;
Images[4] := Image5;
Und schon kann man durch seine Images durchiterieren wie man will.

FindComponent mach ich erst, wenns über 100 Images sind - die werden dann aber eh dynamisch erzeugt und das Problem stellt sich erst gar nicht, weil sie dann gleich ins Array kommen! :warn:

schrimm 24. Feb 2007 19:29

Re: Objekte und Variablen nummeriet verwenden
 
Jo, also DANKE für eure Lösungen.
Ich werds erstma mit dem FindComponent probieren, bin ja noch in der Grundlagenforschung, dann mach ich auch mal das andere, fallst es weitere Fregen gibt nerv ich wieder :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 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