Autor Beitrag
Mac Fly
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 02.12.05 11:55 
Ich baue mir gerade einen Mediaplayer zusammen. Hab schon zu fast jedem Problem hier eine Lösung gefunden, nur zu einer Sache gibt es nichts richtiges.

Ich habe einen Timer, der die position des mediaplayers auf eine trackbar überträgt.
Ich möchte die Trackbar betätigen und damit die mediaplayer1.Position updaten. Leider läuft der Timer ja weiter wenn ich den Slider ziehe (ich weiß dass es zu diesem Thema schon einen Thread gibt, aber der hat mir nicht wirklich weitergeholfen)
Es gibt bei mir kein onousedown bei den trackbar ereignissen, also will ich es bei onchange probieren:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
if trackbar1.????????=true then
        begin
        tracktimer.Enabled :=false;
        MediaPlayer1.Pause;
        end;
if trackbar1.????????=false then
        begin
        mediaplayer1.Position:=trackbar1.Position;
        MediaPlayer1.Play;
        tracktimer.Enabled :=True;
        end;

Meine Frage ist jetzt, ob das so geht und was an die Stelle der Fragezeichen muss.
Ich weiß dass es vielleicht besser geht, aber ich möchte meinen eigenen Quelltext danach gerne noch verstehen :)



Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.
Moderiert von user profile iconTino: Option "Großschreibung im Titel erlauben" aktiviert.
Moderiert von user profile iconTino: Topic aus Multimedia / Spiele / Grafik verschoben am Fr 02.12.2005 um 11:03
arcardia
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Di 06.12.05 14:37 
Hi

Anbei eine von TTrackbar abgeleitete Komponente
inkl. MouseDown / MouseUp sowie der Eigenschat "PositionOnly"
damit kann man den Tracker setzen ohne das gleich ein OnChange ausgeführt wird


Im MouseDown der Komponente wird ich z.b einfach den Tag der Trackbar
auf 1 setzen und in MouseUp wieder auf 0.

Im TimerEvent dann einfach

If TrackBar1.Tag=1 then Exit;


Have fun
Einloggen, um Attachments anzusehen!
Mac Fly Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 08.12.05 11:57 
Danke. Ich lade also die Unit in mein Projekt, und dann?
Wie kann ich das Objekt mytrackbar in form1 verfügbar machen? Hab schon ein bisschen probiert, aber bekomme immer nur die alte Trackbar rein.
Danke für die Antwort
arcardia
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Do 08.12.05 18:17 
Das ganze ist eine Design Komponente
du musst das ganze also als neue Komponente
in Delphi importieren

Wenn du das nicht willst so kannste die Komponente
notfalls auch dynamisch erzeugen
(Unit haste ja oben schon drin )


und zwar so

ausblenden volle Höhe Delphi-Quelltext
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:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
type
  TForm1 = class(TForm)
    procedure MyTrackBar1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure MyTrackBar1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure MyTrackBar1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MYTracker: TMyTrackbar;  // <- Hier die kompo deklarieren 
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  MyTracker:=TMyTrackBar.Create(Self);
  MyTracker.Parent := Form1;
  MyTracker.Top:=100;
  MYTracker.Left:=100;
  MYTracker.OnChange := MyTrackBar1Change;
  MYTracker.OnMousedown := MyTrackBar1MouseDown;
  MYTracker.OnMouseUp := MyTrackBar1MouseUp;
  MYTracker.visible:=True;
end;

procedure TForm1.MyTrackBar1Change(Sender: TObject);
begin
  // Haben wir ein MouseDown dann...
  IF MyTracker.Tag=1 then Exit;
  // ...Die Position im Video setzen
end;

procedure TForm1.MyTrackBar1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  MyTracker.Tag := 1;
end;

procedure TForm1.MyTrackBar1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  MyTracker.Tag := 0;
end;


Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt