الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف اربط TrackBar بـMediaPlayer .. بحيث يتغير مع الوقت و يغير موقع العرض

بدأه ALmuhhnad في 30 أغسطس 2012 · 2 رد · 670 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اول مشاركة لي بالمنتدى , معذرة على ذلك ^^"

في البداية اعتذر لطول العنوان

... اين وصلت وأين انتهيت واين هي مشكلتك ؟؟

اليوم بدأت برمجة برنامج بسيط وهو [ مشغل فيديو ] بدأت به الساعة 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;

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

أعتقد اني وضحت المشكلة .. بطريقة مناسبة :)

والي ما فهم او عنده لبس .. يتفضل السرورس كود للبرنامج وينظر للمشكلة بنفسة

http://www.gulfup.com/X2cq7ykj1quhw4

تم تعديل هذه المشاركة بواسطة ALmuhhnad في 30 أغسطس 2012 في 23:13

#2

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

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

يعني اريد عندما افتح فيديو تكون ابعاد الفيديو نفس ابعاد المكون ...

شاكر لكم حسن قراائتكم

والسلام عليكم

#3

مر على السؤال اكثر من يومين ... ولا رد ... @@

المهم ... يوم جيت اطرح السؤال طرحته باكثر من منتدى ... في احد المنتيدات

اجابني احد الاخوة مشكورا وهو الأخ [ S.FATEH ]

اشاار لي بان اقوم بتعطيل حدث الـ OnChange في المكون TrackBar1 ثم انفذ امر نقل قيمة موقع

العرض من المكون MediaPlayer1 وهي "Position" إلى المكون TrackBar1 وبعد ذلك اقوم بتفعيل

حدث الـOnChange في المكون TrackBar1 كي لا يتعارض الـTimer1 مع المكون TrackBar1 ...

وذكر ان اضع هذا الكود في المكون TrackBar1 في حدث الـOnChange

  MediaPlayer1.Position := TrackBar1.Position;
  MediaPlayer1.Play;

وبكون التعديل على الـTimer1 والـTrackBar1 وهذا الكود النهائي لهما

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;

...

منتظر منكم المساعده في السؤال الثاني [ الذي وضعته بالمشااركة الثانية ]

... شاكر لكم حسن قرائتكم

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…