[Delphi] Trackbar moet MediaPlayer besturen

Pagina: 1
Acties:

  • Dirickteur
  • Registratie: Januari 2003
  • Laatst online: 14:58
Hallo!

Ik zit met een probleempje. Ik heb een programmatje in Delphi7 geschreven dat onder andere mp3'tjes kan afspelen. Ik heb met behulp van een Timer een trackbar gemaakt die meeloopt met het mp3'tje. Dat werkt hartstikke goed en ziet er leuk uit, echter ik wil de trackbar ook gaan gebruiken om de het liedje te 'scrollen' zeg maar.
Het probleem is echter, dat als de trackbar via de timer verandert, hij ook Trackbar OnChange aanroept. Op de een of andere manier werkt het dan niet om de mediaplayer.position te veranderen. Ik heb diverse dingen gezocht en geprobeerd (zoals de player en timer laten stoppen, positie veranderen en alles weer aanzetten), maar ook dat werkte niet.

Hebben jullie nog suggesties?

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Bijhouden wanneer je aan het slepen bent en dan niet de positie van de trackbar aanpassen via de timer? Zet de timer uit in de MouseDown en weer aan in de MouseUp? Of gebruik een vlaggetje (boolean).

We adore chaos because we like to restore order - M.C. Escher


  • Robbemans
  • Registratie: November 2003
  • Laatst online: 17-07-2025
Aan het begin van de OnTimer een vlag zetten: FInTimer := True
dan in Trackbar.OnChange testen of FInTimer True is en zoja, een Exit.

Aan het eind van de OnTimer zet je dan dit vlaggetje weer op False:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  FInTimer := True;
  try
    Timer1.Enabled := False;
    TrackBar1.Position := TrackBar1.Position + 1;
    Timer1.Enabled := True;
  finally
    FInTimer := False;
  end;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  if FInTimer then Exit;
  // Doe wat je wil...
end;

[ Voor 8% gewijzigd door Robbemans op 25-04-2005 14:42 ]