Moin...
du bastelst dir dein eigenes Event und löst es im OnTimer aus und übergibst soviele Parameter wie du vorgibst. Deine "Auswertung verknüpfst du dann mit deinem Event statt mit OnTimer.
Delphi-Quellcode:
TMeinEvent = procedure(Sender: Tobject; aIndex: Integer) of object;
.
FMeinEvent: TMeinEvent; // und als Property MeinEvent nach außen verfügbar machen
.
MeinEvent:= MeineProcedure;
.
Layer_Timer[i] := TTimer.Create(Self);
Layer_Timer[i].Tag := i;
.
Layer_Timer[i].OnTimer := MeinOnTimer;
.
.
procedure MeinOnTimer(Sender: TObject);
begin
if Assigned(FMeinEvent) then
FMeinEvent(Sender,Sender.Tag);
end;
procedure MeineProcedure(Sender: TObject; aIndex);
begin
// deine Auswertung
end;
...einfach so runtergetippt mithalboffenen Augen
Hoffe es gibt zumindest Denkansatz.
Ich hab leider noch keine Ahnung von Events, aber ist das nicht ein bisschen umständlich erst über ein Event zu gehen? Unheilig1977 hat es ja direkt gelöst, auch ohne überhaupt einen weiteren Parameter zu übergeben.
Ich möchte nur einmal einwerfen, dass zuviele Timer kontraproduktiv sind.
Das dachte ich mir auch schon und kam auch schon darauf alles in einen Timer zu packen wie Jumpy schon gezeigt hat. Allerdings hab ich mich dann doch dazu entschlossen, mehrere Timer zu erstellen, einfach um ein wenig Delphi zu lernen, ohne auf Effizienz meines Programms achten zu müssen. Sollte es dann mal funktionieren, kümmere ich mich auch um sowas.
Außerdem sollten 2 bis maximal 10 timer doch kein Problem darstellen oder?
Danke an alle für die guten Vorschläge, ich werd mich heute mal dran setzen.
EDIT:
Ich habe dann mal hier meine Lösung anzubieten. Funktioniert so wie ich sie gerne hätte, alles nur mit einem Timer. Besonderen Dank dafür an Jumpy.
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var i: Integer;
begin
If Timer_Mod < 10000 Then Timer_Mod := Timer_Mod + 1
else Timer_Mod := 0;
For i := 0 to High(Preset_Star_Speed) do
begin
If Timer_Mod mod (Preset_Star_Speed[i] div 10) = 0 Then Layer_Move(i);
end;
end;