859 Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hallo supportnet.

Ich arbeite gerade an einer GUI für eine Strassenkreuzung. Die Keuzung liegt als TImage vor. Auf dieser bewegen sich Autos welche auch durch Images umgesetzt sind.
Ich hoffe ihr könnt mir irgendwie helfen, da die Suche im Internet bisher erfolglos war.

Jetzt möchte ich für jedes Einzelne in einer Prozedur anwählen.
Zum Beispiel: ImageAuto1.Left := ImageAuto1.Left+1; ,
um ein Auto auf der Oberfläche zu bewegen.
Um es dynamischer zu machen will ich diesen Befehl nicht für jedes Einzelne schreiben.
Aus Javascript kenne ich den Befehl "getElementById(x)".
Gibt es etwas vergleichbares in Delphi?

Dass man zum Beispiel folgendes umsetzen könnte:
for (i:=0; i++; i <= 10) // Keine Ahnung, ob das die richtige Syntax ist ;-)
begin
getElementByName('ImageAuto'+i).Left := ...
end;


Ist dies in Delphi möglich?? Oder gibt es eine Alternative??
Über Antworten würde ich mich sehr freuen.

mfg.
rotte8

2 Antworten

0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
for (i:=0; i++; i <= 10) // Keine Ahnung, ob das die richtige Syntax ist ;-)
Nein.

Das wäre viel zu ressourcenverschwenderisch, jedesmal erneut ein Objekt zu suchen - JavaScript ist eine Skriptsprache - Delphi eine Compilersprache. Je nachdem, wie oft sich die Anzahl deiner Autos ändert könntest du ein Feld mit allen Bildern definieren:
var
aAuto: array of TImage;
begin
SetLength( aAuto, 3 );
aAuto[0]:= ImageAuto1;
aAuto[1]:= ImageAuto2;
aAuto[2]:= ImageAuto3;


Um dann alle Bilder um einen Pixel nach rechts zu verschieben, ginge es so:
var
iAuto: Integer;
begin
for iAuto:= Low( aAuto ) to High( aAuto ) do aAuto[iAuto].Left:= aAuto[iAuto].Left+ 1;
0 Punkte
Beantwortet von
Hey geil danke!
Das ist genau was ich brauche.
...