المساعدة يا أعضاء الرجاء المساعدة
كيف أقوم بعمل toolbar متحركة على سطح المكتب ؟
رجاء الإهتمام..
السلام عليكم
ارفقة لك مرفقات لبرنامج من صنع الاخ HnHn واسمه التاثيرات الضخمه صراحتا
لا اعرف اين رابط الصفحة التي كان فيها
على العموم به ما تريد
قمت بعمل مثال لك تجده في المرفقات ..
علي كيفية عمل شريط أدوات يظهر ويختفي بمرور الماوس عليه..
أخي الحيوتي
شكرا ً على الأمثلة الجميلة
أخي Pharonic Guy
ممتاز هذا ما أردته بالضبط..لكن لي سؤال...
كيف أقوم بعمل نص متحرك أو Scrolling Text على الفورم حيث يظهر على البار كشريط أخبار ؟
الرجاء أخي أن تفيدني لا حرمك الله الأجر
أخوك,
تم تعديل المثال ..
ويمكن التحكم في سرعة ال Scroll بزيادة أو إنقاص مقدار الإزاحة في الكود التالي :
lbl.Left = lbl.Left + 100
ولإنهاء المشروع استخدم Right Click علي الفورم
تم تعديل هذه المشاركة بواسطة Pharaonic_Guy في 6 سبتمبر 2006 في 10:15
أخي Pharonic Guy
جوزيت َ خيرا ً بارك الله فيك وأثابك..
بالضبط مثل ما أردت...
لك الأجر إن شاء الله في هذا العمل : )
لكن سأستثقل نفسي عليك وسأرفق لك تعديل على مثالك ونرى إن كان فيه أخطاء أم لا...
والفكرة هي:
أن الـScroll Text يحتوي على معلومات مأخوذة من قاعدة بيانات mdb ...
سأقوم بعمل المثال وإن واجهتني مشاكل فأتمنى مشاركتي في الحل وكل ُ بأجره : ) وإن إستطعت إمدادي بأي فكرة حول الموضوع فرجاء ً إفعل
أخوك,
أنا معك لنهاية المشروع ..
خلصه أنت بس وأرفقه ..
ولو عندي أي أفكار سأضيفها إن شاء الله للمشروع ..
هل ستستخدمه لعرض أحاديث أم ماذا ؟؟ ..
سأقوم بعملها إن شاء الله الليوم وأرسله لك وبارك الله فيك
أنا أعمله لعرض شبهات عن ديننا والجواب عليها في برنامج البتار الذي إنتهيت من عمل نسخة تجريبية منه
فكرته أنه يقوم بعرض شبهات في 7 تصانيف ويجيب عليها بشكل مختصر ومفيد
الموعد الرسمي لصدور النسخة 1,0 هو 1 رمضان إن شاء الله
والسلام,
أخوك..
ابن الشريف
جميل جدا هذا العمل القيم .. وهذا سبب أدعي لأن أساعد بكل ما أقدر عليه..
فقط ملاحظة صغيرة يا أخي العزيز .. أنه إذا أردت الدعوة بهذا البرنامج ..
فإن كلمة الكفار تأتي في القرءان عندما يخاطب قريش أو أي قبيلة أخري ليست لها ديانة أو لها ديانة وثنية ..
بينما عند مخاطبة غير المسلمين أصحاب الديانات السماوية فيذكرهم دائما بـ (أهل الكتاب)..
علي العموم أنا بانتظار البرنامج اليوم ..
وقد ألقيت نظره علي البرنامج ولكنني لم استطع تشغيله لمشاكل مع الأداة Osen ..
ممكن نغيرها بأصدار أحدث ويكون ثابت علي جميع أنظمة التشغيل ..
بالإضافة إلي أن الاصدار الحالي المستخدم Trial ل 30 يوم ..
والأفضل أن يتم الاستغناء عن هذه الاداة ..وذلك سيؤثر بالإيجاب علي عمل البرنامج وعلي مساحته أيضا..
أخي الكريم
كلمة (الكفار) ليست منفرة لإن كافر بالأصل تعني المغطي أي الذي يغطي الحق : )
وأهل الكتاب هم الذين كفروا بالكتاب الذي أنزل الله وإلا لآمنوا بمحمد صلى الله عليه وآله...
أما بالنسبة لأداة OSenXPSuit فبالفعل إستغنيت عنها تماما ً ...
وملف التسطيب للنسخة الكاملة لن يتعدى الـ3 ميجا فقط !
أشكرك أخي والعفو منكم
والسلام ,
ابن الشريف
لن أدخل معك في مناقشة دينية .. إلا إلي ما بعد أن يخرج البرنامج ..
حتي لا نشغل نفسنا وننسي الأهم..
وكويس جداا إنك استغنيت عن Osen ..
البرنامج نزل حجمه إلي 3 ميجا..
طيب ايه رأيك نخليه ربع ميجا فقط ..يعني تقريبا 300 كيلو ويمكن يوصل لأقل 250 كيلو ..
وذلك بضغط كلا من قاعدة البيانات وال Skin وفك ضغطهم مرة واحدة فقط في أول مرة يعمل فيها البرنامج..
أخي Pharonic Guy
فكرة ممتازة...
هل لديك Demo للضغط ولفك الضغط بإستخدام الوين رار ؟
ثاني سؤال:
كيف ستعلم أنها أول مره يعمل بها البرنامج ؟ هل تحبّذ الـRegistery أم ملفات الـINI ؟
أشكرك أخي على إهتمامك...
أخوك,
تم تعديل هذه المشاركة بواسطة loalsharif.NET في 6 سبتمبر 2006 في 17:45
يمكننا الأعتماد علي برنامج Extract لملفات Cab .. الموجود مع معظم أنظمة التشغيل ..
ولكنني أفضل الاعتماد علي أداة OCX جاهزة..
وخلال البحث وجدت أداة ممتازة تدعي Unzip بعض الضغط حجمها 73 كيلو ..تجدها مرفقة مع مشروع يبين كيفية استخدامها ..
واستخدامها سهل ..
UnZip.InputFile = Path of the file to be extracted UnZip.OutputFolder = Path of The Output Folder UnZip.Go ' Do Extracting
بالتأكيد الريجستري سيكون أفضل ..
فقط للتأكد من أنها أول مرة يعمل فيه البرنامج.. سيتم فحص وجود مفتاح أو قيمة في الريجستري..ولتكن قيمة باسم Used ..
إذا لم تكن موجودة فهو يعمل لأول مرة وبالتالي يتم فك الضغط ثم إنشاء القيمة Used ..
وإذا كانت القيمة الموجودة فلا يفعل شيء ..
وسأقوم بإرفاق مثال شامل لتلك العملية اليوم ..
تم تعديل هذه المشاركة بواسطة Pharaonic_Guy في 7 سبتمبر 2006 في 09:20
أشكرك أخي الكريم على إهتمامك..
بالمناسبة .. ما رأيك بالوصف الجديد ؟
( البتّار..قاطع شبهات المحتار) : ) ؟
والسلام
مبروك تغيير الاسم لـ(ابن الشريف) ..
وأنا لسه صاحي من النوم .. فقط هأعمل كام مشوار . وهأجي أخلص برنامج الإعداد ..
بالنسبة للـ Slogan الجديد.. فهو جميل جدا.. وأحبذ استخدامه ..ما دام الدعوة ستكون لغير المسلمين ..
مرفق مشروع التجربة النهائي .. لفك الضغط عن ملفات البرنامج وستجد الملفات مرفقة أيضا ومضغوطة..
ولكنني وجدت أن أداة الـ OCX تظهر الرسالة التالية بعد القيام بفك الضغط..
وبالتالي الرسالة ملهاش لازمة وقد قمت بإبطال ظهورها من أداة الـ OCX نفسها..والأداة الجديدة مرفقة مع المشروع ..
حجم الأداة + الملف المضغوط (الاسكين +قاعدة البيانات+ملف الصوت) = 356 كيلو بايت
بإلاضافة إلي 50 كيلو وهو حجم ال EXE لبرنامج البتار بعد الضغط .. وسيكون الحجم النهائي لمشروع اليتار في حدود 400 كيلو بايت في حالة إذا لم تستخدم أدوات أخري
تم تعديل هذه المشاركة بواسطة Pharaonic_Guy في 8 سبتمبر 2006 في 06:19
ممتاز أخي بارك الله فيك الأداة تعمل بشكل ممتاز لكن سؤال:
أليست هذه الأداة تجريبية يعني trial ؟
سأقوم بإذن الله بإنجاز مثال الـdesktop bar مع قاعدة البيانات وأرفقه لك حتى تقوم بالتعديل عليه
أشكر لك إهتمامك الجم
والسلام,
الأداة طلعت غير مجانية فعلا ..ولكنها ليست Trial..
النسخة المجانية لا تفرق شي عن هذه النسخة التي نستخدمها سوي في عدم ظهور الرسالة بعد فك الضغط والتي قمت بحذفها بالفعل..
وأنا في انتظار المشروع ..
شكرا ً أخي قمت بعمل اللازم وبإذن الله سأخبرك بما وصلت إليه : )
البرنامج جاهز وبه 70 شبهة لكني أقوم بعمل Rough Test عليه حتى 1 رمضان
شكرا ً لك أخي الكريم على تفاعلك وبالتأكيد سأحتاجك : )
والسلام,
السلام عليكم : اولا الف شكر على كل المعلومات الجميلة دى وجزاكم الله خير بس انا لسه بقول ياهادى فى البرمجم ممكن بخصوص (desktop bar2 ) يتم شرح الاكواد بس علشان نبقى فاهمين احنا بنعمل ايه بالضبط وانا اسف لو بتقل عليكم
السلام عليكم : اولا الف شكر على كل المعلومات الجميلة دى وجزاكم الله خير بس انا لسه بقول ياهادى فى البرمجم ممكن بخصوص (desktop bar2 ) يتم شرح الاكواد بس علشان نبقى فاهمين احنا بنعمل ايه بالضبط وانا اسف لو بتقل عليكم
اولا شكرا على الاهتمام :
ثانيا هذه هى الاكواد
Private Sub Timer1_Timer()
GetCursorPos pt
If pt.Y * Screen.TwipsPerPixelY > 930 Then Check
If lbl.Left > Me.Width Then lbl.Left = Me.Left - lbl.Width
lbl.Left = lbl.Left + 100
End Sub
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Const HWND_TOPMOST = -1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const Flags = SWP_NOMOVE Or SWP_NOSIZE
Dim bDown As Boolean
Dim pt As POINTAPI
Sub Restore()
Timer1.Interval = 0
Me.Left = 0
Me.Top = 0
Me.Height = 40
Me.Width = Screen.Width
Call SetWindowPos(Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, Flags)
lbl.Left = Me.Left - lbl.Width
End Sub
شكراااااااا
الأول أنا شايف إن مشكلتك مع دوال API ..
يمكنك تحميل برنامج API Guide ليساعدك علي استكشاف تلك الدوال مع شرح وظيفتها ومعاملاتها..
دالة SetWindowPos تستخدم في تغيير موضع النافذة أو حجمها..
وإذا مررت لها القيمة (1-) المصرح عنها بـ HWND_TOPMOST في المعامل الثاني ومررت مثلا القيمة (1) في المعامل الأخير Flags
فسيتم وضع النافذة On Top أي في مقدمة جميع النوافذ..
دالة GetCursorPos تستخدم في معرفة موضع الإحداثين X,Y لمؤشر الماوس..
ويتم تخزين هذا الموضع في بنية من نوع POINT ..
Type POINT X As Long Y As Long End Type
بالنسبة لإجراء الـ Timer
فيتم فيه أولا معرفة إحداثيات الماوس ..
GetCursorPos pt
ويتم تخزين تلك الإحداثيات في البنية pt ولاحظ أننا عرفنا pt علي أنها من نوع POINTAPI
وبالتالي سيكون لدينا الإحداثي X مخزن في (pt.X) ..
والإحداثي Y مخزن في (pt.Y)
الذي يهمنا هنا هو الإحداث Y للماوس .. وهذا حتي نعلم هل تجاوز الماوس حدود الفورم ..
فإذا كان تجاوزه فيتم الإجراء Check
وإذا لم يكن تجاوزه فلا يستدعي Check ويقوم بتنفيذ إجراء تحريك الليبل..
lbl.Left = lbl.Left + 100
مع التأكد من أنه إذا وصل الليبل لنهاية الفورم فيتم إعادته من جديد لبدايه الفورم
If lbl.Left > Me.Width Then lbl.Left = - lbl.Width
فقط يبقي شرح إجراء معرفة هل تجاوز مؤشر الماوس Y حدود الفورم ..
اتفقنا علي أن الإحداث Y مخزن في المتغير pt.Y ولكن الدالة GetCursorPos تعيد القياس بوحدة البيكسل Pixel ..
بينما القياس الافتراضي للفورم لدينا هو بوحدة التويب Twip ..
وبالتالي نريد تحويل القياس pt.Y إلي وحدة التويب ومن ثم مقارنته بقياس الفورم.. أو العكس .. نحول قياس الفورم إلي وحدة البيكسل ومن ثم مقارنته بقياس
pt.Y.
سأعطيك مثال ..
إذا كانت إحداثيات الشاشة لديك 800*600 بيكسل ..
افتح مشروع جديد واكتب فيه الأتي :
Private Sub Form_Load() MsgBox Screen.Width & "*" & Screen.Height End Sub
ستجد القيم المعادة هي 12000*9000 وليست 800*600
القيم التي عادت مقاسة بوحدة التويب ولتحويلها إلي بيسكل نقوم بقسمة القيم علي القيمة 15 هكذا ..
Private Sub Form_Load() MsgBox Screen.Width / 15 & "*" & Screen.Height / 15 End Sub
بمعني أخر أن كل 15 تويب يساوا واحد بيكسل وهذا لمعظم كروت الشاشة ..
والأفضل أن نقسم علي الخاصية Screen.TwipsPerPixelX بالنسبة لأي إحداث أفقي X
والقسمة علي الخاصية Screen.TwipsPerPixelY بالنسبة لأي إحداث رأسي Y
لأنه أعتقد أن هناك كروت تغيير تلك القيمة .. وإلا ما كانو وضعوا تلك الخصائص..
Private Sub Form_Load() MsgBox Screen.Width / Screen.TwipsPerPixelX & "*" & Screen.Height / Screen.TwipsPerPixelY End Sub
المهم أن طول Height الفورم لدينا هو مثلا 930 بوحدة التويب وبالتالي نريد أن نتأكد من أن مؤشر الماوس Y الذي سنقوم بتحويل إلي وحدة التويب أيضا لم يتجاوز هذا
الطول..
ولهذا قمنا بكتابة الأتي :
If pt.Y * Screen.TwipsPerPixelY > 930 Then Check
كان يمكننا بالطبع أن نحول وحدة القياس لدينا في الفورم إلي Pixel من خاصية ScaleMode وبالتالي ليس هناك داعي لهذا التحويل.
الآن في الإجراء Check ..
Sub Check() If bDown Then bDown = False Up End If End Sub
أنا عامل متغير bDown من نوع Boolean .. هذا المتغير يكون قيمته True في حالة إذا كان الفورم تم إظهاره أي أنه Down..
ويكون قيمته False في حالة إذا كان الفورم UP
وفي هذا الإجراء يتم التأكد من أن الفورم في حالة Down
If bDown = True Then
نقوم بتغيير حالة المتغير bDown إلي False ..
bDown = False
ومن ثم نقوم بإستدعاء الإجراء UP.. والذي بدوره سيقوم بإستدعاء الإجراء Restore..
والذي نقوم فيه بإرجاع الفورم إلي حالته الأولي في وضع Up..
يبقي عند مرور الماوس علي الفورم فيتم تنفيذ الكود التالي :
If Not bDown Then bDown = True Down Timer1.Interval = 100 End If
بمعني أنه إذا لم يكن الفورم في وضع Down فيتم تغيير حالة المتغير bDown إلي True ثم إستدعاء الإجراء Down
ووضع قيمة للمؤقت كي يبدأ في فحص حالة الماوس وتحريك الليبل..
هذا الموضوع مغلق.