كيف يمكن جعل النص يتحرك كmarquee كما في شريط الاخبار على TImage أو على اي Canavas بصورة ناعمة منتظمة ؟
نص متحرك Marquee
استخدم timer مع استعمال TextOut ثم غير في x و y حسب الحاجة
Canvas TextOut(X,Y:Integer;constText:string);
مثال بسيط جدا
var i : integer; Text : string; procedure TForm1.FormCreate(Sender: TObject); begin Text:= 'Text for test'; i:=-50; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if i=MyImage.Width then i:=-50; inc(i); MyImage.Canvas.TextOut(i,10,text); end;
تحياتي :)
طريقة اخرى:
ضع Label على الفورم, و من ثم اكتب بها النص الذي تريد عرضه بشكل كامل, مثلا:"مع تحيات الفريق العربي للبرمجة"
و من ثم ضع Timer و اضبطه بالسرعة المناسبة التي تريدها, و من ثم استخدم الكود التالي:
procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Enabled := true; end; procedure TForm1.Timer1Timer(Sender: TObject); var txt : string; begin txt :=Label1.Caption; Label1.Caption:=Copy(txt, 2, Length(txt) - 1) + Copy(txt,1,1); end;
رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.
لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"
أحببت أن أنوه فقط إلى أن طريقة الأخ وائل باستعمال Label تعمل فقط في مساحة هذا المكون، فمثلا عند جعل هذا المكون Align=alTop
لن يعمل على كامل طول الواجهة أو قاعدة المكون المراد Label ،
لذلك أفضل العمل مع TImage لأنها أسهل في التعامل مع هكذا حركة لغرض المذكور في طلب الأخ أبو زكريا " كما في شريط الاخبار "
أما طريقة Label فهي أحسن حين تطبق على المساحات التي لا تحتاج إلى مساحات فراغ غير معلومة مثل Label و اسم التطبيق في شريط المهام
و السلام عليكم
تم تعديل هذه المشاركة بواسطة merouane في 25 يونيو 2008 في 01:53
يمكنك استعمال مركبات LMD ففيها أمثلة رائعة جدا جاهزة
بالتوفيق