Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Trackbar OnMousedown?
Mac Fly - Fr 02.12.05 11:55
Titel: Trackbar OnMousedown?
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:
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
Tino: Delphi-Tags hinzugefügt.
Moderiert von
Tino: Option "Großschreibung im Titel erlauben" aktiviert.Moderiert von
Tino: Topic aus Multimedia / Spiele / Grafik verschoben am Fr 02.12.2005 um 11:03
arcardia - 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
Mac Fly - 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 - 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
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 public end;
var MYTracker: TMyTrackbar; 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 IF MyTracker.Tag=1 then Exit; 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
raziel: Code- durch Delphi-Tags ersetzt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!