delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف اربط TrackBar بـMediaPlayer .. بحيث يتغير مع الوقت و يغير موقع العرض
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاتة
اول مشاركة لي بالمنتدى , في الحقيقة منكم تعلم الدلفي .. جزاكم الله خير على هذا العمل ..

اليوم بدأت برمجة برنامج بسيط وهو [ مشغل فيديو ] بدأت به الساعة 9 صباحاً [ تقريبا ] واها آنا الأن أوجه بعض المشاكل البسيطة
ماقمت به حتى الآن :

في البداية قمت بتصميم واجه البرنامج وهي تتكون من
1- Button1
2- MediaPlayer1
3- OpenDialog1
4- Panel1
5- Timer1
6- TrackBar1

طيب بعد ان اضفت المكونات ...
بدأت اضيف الأكود
و في الـ Button1 في حدث الـ OnClick اضفت الكود
كود :
procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then begin MediaPlayer1.FileName := OpenDialog1.FileName; MediaPlayer1.Open; MediaPlayer1.Play; TrackBar1.Max := MediaPlayer1.Length; end; end;

وأضفت في الـ Timer1 في حدث الـ OnTimer اضفت الكود
كود :
procedure TForm1.Timer1Timer(Sender: TObject); begin try TrackBar1.Position := MediaPlayer1.Position; except exit; end; end;

وأضفت في الـ TrackBar1 في حدث الـ OnChange أضفت الكود
كود :
procedure TForm1.TrackBar1Change(Sender: TObject); begin try MediaPlayer1.Position := TrackBar1.Position; except exit; end; end;

طيب الأكود لا توجد معها أي مشكلة .. اين المشكلة .. المشكلة اطاال الله في اعمااركم
هي تضاارب الأحداث ي الـ Timer1 والـ TrackBar1 .... كيف ؟

التآيمر يقوم بـ
كود :
TrackBar1.Position := MediaPlayer1.Position;
يعني راح يكون المكون TrackBar1 يمشيء مع الوقت الفيديو << كعداد مثل مشغلات الفيديو الباقية
هنا تمام ...

لكن يعتبر هذا الأمر تغيير بالـ TrackBar1 ويكذا راح نفعل الامر حقه الي هو [ OnChange ]
وراح يتضاارب حدث الـ TrackBar1 وال هو
كود :
MediaPlayer1.Position := TrackBar1.Position;

مع حدث الـ Timer1 ويتوقف الالفيديو ... ولكي اشغله يتوجب علي إعطاء امر للـ MediaPlayer1 وهو
كود :
MediaPlayer1.Play;

وما راح يكون برنامج تشغيل ملتيميديا إذا كل ما اشغله يتوقف

أعتقد اني وضحت المشكلة .. بطريقة مناسبة Smile
والي ما فهم او عنده لبس .. يتفضل السرورس كود للبرنامج وينظر للمشكلة بنفسة
PHP كود :
http://www.gulfup.com/X2cq7ykj1quhw4 
السلام عليكم
قم بتعطيل حدث TrackBar في Timer ثم اعد انشاءه ...

PHP كود :
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  
if MediaPlayer1.FileName = '' then Exit;
  
TrackBar1.OnChange := nil;
  
TrackBar1.Position := MediaPlayer1.Position;
  
TrackBar1.OnChange := Form1.TrackBar1Change;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  MediaPlayer1
.Position := TrackBar1.Position;
  
MediaPlayer1.Play;
end; 

بالتوفيق
مكشور اخي [ S.FATEH ] ... فكرتك كانت جميلة .. ان اقوم بتعطيل الحدث اثناء تنفيذ السطر
كود :
TrackBar1.Position := MediaPlayer1.Position;
لم افكر بها. اصلا لم اكن اعرف اني استطيع فعل هذا فانا بعد كل شيء مبتدى على هذه اللغة الجميلة
اشكرك مره اخرى

ساضيف سؤال آخر بما اني فتحت موضوع

كيف اعيد تحجيم الفيديو على حسب حجم المكون ؟
يعني عندما افتح فيديو تكون ابعاد الفيديو نفس ابعاد المكون. وعندما اكبر الكون تتغير ابعاد الفيديو
وتكون مثل ابعاد المكون
والسلام عليكم

وعليكم السلام ورحمة الله

من الاحسن عدم الاعتماد على MediaPlayer
به انت تعتمد على برنامج اخر مفروض يكون مثبت بنظام Windows لكن يمكن الايكون مثبت أو محذوف طبعا هذا نادر لكنه موجود بالواقع
أيضا برنامجك محصور بتشغيل الصيغ التي يعرفها MediaPlayer ويفشل مع غيرها

ما البديل ؟ البدائل كثيرة لكن الطريق طويل ومجهد
أولا راجع هاذين الموضوعين وبعدها لنا حديث:
http://www.delphi4arab.net/forum/showthr...p?tid=6282
http://www.delphi4arab.net/forum/showthr...p?tid=5390