Hey,
die schleife hab ich ganz übersehen, das is ziemlich unpraktich. An den Index, der grade geklickt wurde kommt man so:
ListBox1.ItemIndex. Zum Speichern brauchst du eine Variable die auch außerhalb der Prozedur gültig ist, also entwerder
eine globale Variable:
- für alle Units sichtbar
- deklaration vor implementation
- ABER: globale Variablen sollte man vermeiden
eine Klassen-Variable:
- nur dür die aktuelle Unit sichtbar
- deklaration nach implementation
- ABER auch die sollte man nur gebrauchen wenn sie unbedingt notwendig sind.
eine Objekt-Variable
- sichtbar für das Objekt in dem sie deklariert wurde
- deklaration im private-Teil des Objekts (also bei dir unter TForm1 private)
- --> das was du sucht
kleines Beispiel:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| type TForm1 = class(TForm) ListBox1: TListBox; MediaPlayer: TMediaPlayer; TimeProgressBar: TProgressBar; TimeLabel: TLabel; FileNameLabel: TLabel; procedure ListBox1Click(Sender: TObject); private CurrentTrackIndex: Integer; procedure PlayFile(Filename: String); public end;
procedure TForm1.PlayFile(Filename: String); begin MediaPlayer.FileName := Filename; MediaPlayer.Open; MediaPlayer.Play; TimeProgressBar.Max := Mediaplayer1.Length; TimeLabel.Caption := TimeToStr((MediaPlayer.TrackLength[1]/(3600000*24))); FilenameLabel.Caption := Filename; end;
procedure TForm1.ListBox1Click(Sender: TObject); begin CurrentTrackIndex := ListBox1.ItemIndex; PlayFile(ListBox1.Items[CurrentTrackIndex]); end; |
Außerdem solltest du dir angewöhnen, deinen Komponenten ordentliche Namen zu geben, sonst wird das schnell unübersichtlich. Außerdem bietet es sich an, eine TeilAktion wie z.B. das Abspielen einer Datei, in eine Prozedur auszulagern. Da du ja scheinbar auch noch nicht so lange dabei bist kann ich dir
diesen Crashkurs ans Herz legen, da werden die Grundlagen ausführlich erklärt
MfG Bergmann