المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : [VB6] أفضل الطرق لتجميل برامجك


drakolamax2
13-07-2007, 05:04 PM
أولا
أفضل طريقة لتحكم في تشغيل الفلاش
أخواني هذا الكود بصراحة من أفضل الأكواد تقريبا لتشغيل ملفات الفلاش swf

أولا قم بالضغط على زري Ctrl + T
وأضف الأداة التالية shock wave flash
ثانياً: قم بإدراج الأداة في الفورم بالحجم اللي تبيه
ثالثاً: اضف 5 أزرار أوامر command button ومن ثم عدل الخاصية caption لتصبح كالتالي

الزر الأول تشغيل
الزر الثاني الأمام
الزر الثالث الخلف
الزر الرابع تكبير
الزر الخامس تصغير

والآن قم بوضع الكود التالي في المشروع

**************************************

في التعريف العام للفورمGeneral نضع هذا الكود



Private Sub ShockwaveFlash2_FSCommand(ByVal command As String, ByVal args As String)
If (command = "Zoom") Then
ShockwaveFlash1.Zoom (args)
Else
MsgBox (args)
End If
End Sub
في حدث التحميل للفورم Form_Load نضع هذا الكود

Private Sub Form_Load()
ShockwaveFlash1.Movie = App.Path + "\k.swf"
End Sub

وفي حدث زر التشغيل نكتب


Private Sub Play_Click()
ShockwaveFlash1.GotoFrame (0)
ShockwaveFlash1.Play
End Sub

وفي حدث زر للأمام نكتب


Private Sub Forward_Click()
ShockwaveFlash1.Forward
End Sub
وفي حدث زر للخلف نكتب

Private Sub Back_Click()
ShockwaveFlash1.Back
End Sub

وفي حدث زر التكبير نكتب

() Private Sub ZoomIn_Click
ShockwaveFlash1.Zoom (50)
End Sub

وفي حدث زر التصغير نكتب


Private Sub ZoomOut_Click()
ShockwaveFlash1.Zoom (200)
End Sub

أنتهــــــى

يتبع

drakolamax2
13-07-2007, 05:11 PM
ثانيا الطريقة البرمجيه لتجميل فورم

سنقوم بعمل مثال لتشكيل الفورم على هيئة مستطيل ذو أحرف دائرية وتخرج منه دائرة يظهر بها عنوان الفورم و مستطيل آخر به أزرار شريط العنوان

- الدوال المستخدمة والتي توضع في قسم التصريحات Genaral:

Private Declare Function CreateRectRgn Lib "gdi32" Alias "CreateRectRgn" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

يستخدم هذا الكود لتحديد جزء معين من الفورم على شكل مستطيل



Private Declare Function CreateRoundRectRgn Lib "gdi32" Alias "CreateRoundRectRgn" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long

يستخدم هذا الكود لتحديدي جزء معين من الفورم على شكل مستطيل أحرفه دائرية.

بحيث تكون X3 , Y3 هي أبعاد هذه الأحرف الدائرية وكأنها مستطيل صغير .


Private Declare Function CreateEllipticRgn Lib "gdi32" Alias "CreateEllipticRgn" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

يستخدم هذا الكود لتحديد جزء معين من الفورم على شكل دائرة ومشتقاتها



Private Declare Function CombineRgn Lib "gdi32" Alias "CombineRgn" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long


وتستخدم لإضافة تحديد مسبق إلى تحديد آخر (دمج تحديدين) كما في برامج الجرافيك.
و شكل التداخل CombineMode يأخذ القيمة 2 أو 3 فالقيمة 2 تجعل الأجزاء المتداخلة من التحديدات كجزء واحد بخلفية واحدة ، بينما القيمة 3 تجعل الجزء المتداخل من تحديدين أو أكثر شفاف بلا خلفية.



Private Declare Function SetWindowRgn Lib "user32" Alias "SetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
تستخدم في تشكيل الفورم حسب التحديد المراد استخدامه (لتلاعب في شكل الفورم)

Dim HnHn(3) As Long

هنا فرضنا مصفوفة متغيرات مكونة من 4 عناصر باسم HnHn من 0 إلى 3

أنتهينا من الأكواد المدرجه في قسم التصريحات

- الأكواد المدرجه في خاصية باينت للفورم Paint


HnHn(0) = CreateRoundRectRgn(48, 48, 300, 200, 20, 20)
HnHn(1) = CreateEllipticRgn(16, 4, 90, 80)
HnHn(2) = CreateRoundRectRgn(48, 200, 300, 220, 20, 20)
HnHn(3) = CreateRectRgn(245, 4, 300, 29)

CombineRgn HnHn(0), HnHn(0), HnHn(1), 2
CombineRgn HnHn(2), HnHn(2), HnHn(0), 2
CombineRgn HnHn(3), HnHn(3), HnHn(2), 2
SetWindowRgn Me.hWnd, HnHn(3), True

وهذه الاكواد هي الابعاد للشكل المطلوب أظهاره ويمكنك عمل الكثير من الأشكال حسب تصميمك وإذا أردت أن تكون الأشكال محددة (لها إطار) فيمكنك رسم التصميم أولا على الفورم ثم تحويله إلى أكواد بنفس الطريقة السابقة.

ملاحظة : القيم المستخدمة تكون بنظام البيكسل

يتبع

drakolamax2
13-07-2007, 05:17 PM
ثالثا: أستخدام الأدوات لتجميل فورم

الأداة المستخدمه ActivSkin الأصدار 4.0

وهذه الاداة جدااً رائعه فهي سهلة الاستخدام وليست سهلة البرمجه فهي تحوي الكثير من الاكواد
والخواص والمميزات الخاصة بالمبرمج لتظهر بشكل هذا فتساعد على تجميل
البرامج عن طريق رسمها على الفورم فقط . وكتابة الشفرة التالية في حدث تحميل الفورم



Skin1.LoadSkin App.Path & "\X.skn"
Skin1.ApplySkin Me.hwnd

حيث أن

Skin1 الأداة المرسومة على الفورم
X.skn اسم الصورة الخاصة بهذه الأداة لكي تظهر على الفورم

وهذا مثال لهذه الاداة ومرفق معها ملفاتها الخاصة كما يلي

http://www.al-ebda3.info/ib/imagesuploader/images/EX5.JPG

http://www.al-ebda3.info/ib/imagesuploader/images/EX3.JPG
http://www.al-ebda3.info/ib/imagesuploader/images/EX6.JPG

http://www.al-ebda3.info/ib/imagesuploader/images/EX4.JPG

http://www.al-ebda3.info/ib/imagesuploader/images/EX1.JPG
يمكنك تحميل الأداه
من هنا (http://www.arabteam2000-forum.com/index.php?act=attach&type=post&id=14554)

يتبع

drakolamax2
13-07-2007, 05:26 PM
رابعا تصميم الفورم بالاعتماد على صورة

الأدوات المطلوبه هي :

1 - Module مديول
2 - Form فورم
3 - Picture بيكتشر وسيتم تسميته بهذا لااسم picMainSkin - صورة من نوع Bmp كهذه
http://hellobrther.jeeran.com/Fo.JPG
هذه احدى الطرق الشخصية لتصميم فورم على شكل صورة
ويمكنك تطبيق هذه الطريقة على اي صورة أخرى مراعين بذلك الابعاد والدوال المطلوبه
كما يجب ان تكون خلفية الصورة بلون موحد كما في الصورة السابقه
لتسهيل عملية إزالته أو أخفاءه وأظهاره بحدود الصورة فقط .

بداية التصميم

في الـــمديول Module

نضع الشفرة التاليه في قسم التصريحات


Public Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function ReleaseCapture Lib "user32" () As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Public Const RGN_OR = 2
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2

ثم نقوم بعمل الوظيفة التالية


Public Function MakeRegion(picSkin As PictureBox) As Long

Dim X As Long, Y As Long, StartLineX As Long
Dim FullRegion As Long, LineRegion As Long
Dim TransparentColor As Long
Dim InFirstRegion As Boolean
Dim InLine As Boolean
Dim hDC As Long
Dim PicWidth As Long
Dim PicHeight As Long

hDC = picSkin.hDC
PicWidth = picSkin.ScaleWidth
PicHeight = picSkin.ScaleHeight

InFirstRegion = True: InLine = False
X = Y = StartLineX = 0

TransparentColor = GetPixel(hDC, 0, 0)

For Y = 0 To PicHeight - 1
For X = 0 To PicWidth - 1

If GetPixel(hDC, X, Y) = TransparentColor Or X = PicWidth Then
If InLine Then
InLine = False
LineRegion = CreateRectRgn(StartLineX, Y, X, Y + 1)

If InFirstRegion Then
FullRegion = LineRegion
InFirstRegion = False
Else
CombineRgn FullRegion, FullRegion, LineRegion, RGN_OR
DeleteObject LineRegion
End If
End If
Else
If Not InLine Then
InLine = True
StartLineX = X
End If
End If
Next
Next

MakeRegion = FullRegion
End Function


حيث أن هذه الشفرة أو هذه الوظيفة هي المسؤولة على أظهار الفورم بشكل الصورة السابقة
وسأترك هذه الشفرة دون تفسير لكي تقوم أنت بتجربتها والتلاعب بها لملاحظة الفروقات التي
تحدثها .....


في الفورم وفي خاصية التحميل Form_Load نكتب الشفرة التالية بعد
رسم البكتشر على الفورم


Dim WindowRegion As Long

picMainSkin.ScaleMode = vbPixels
picMainSkin.AutoRedraw = True
picMainSkin.AutoSize = True
picMainSkin.BorderStyle = vbBSNone
Me.BorderStyle = vbBSNone

Set picMainSkin.Picture = LoadPicture(App.Path & "\main.bmp") 'HnHn هنا استدعاء الصورة

Me.Width = picMainSkin.Width
Me.Height = picMainSkin.Height

WindowRegion = MakeRegion(picMainSkin) ' هنا يتم الاستعانة بالوظيفة الموجوده في امديول HnHn
SetWindowRgn Me.hWnd, WindowRegion, True

هكذا تكون أنتهيت من عملية أظهار الفورم بشكل الصورة وسيكون على الشكل التالي


http://hellobrther.jeeran.com/HnmaHn.gif

أرجو منكم تقييم والمشاركة ولو بشكرا الموضوع و للأمانة الموضوع منقول من منتدي الفيرق العربى للبرمجة والعضو إلى وضع الموضوع فىمنتدي الفريق العربى قام بنقل المضوع من منتدي الابداع الاسلامي و منتدى في بي زووم
ولكنى مجرب كل هذة الأكواد بنفسى
وآسف لإنى قمت بتقطيع المشاركات ولكن يوجد خطأ فى عذويتى لا يسمح لى بكتابة مواضيع كبيرة
ولقد أخبرت الإدارة بهذا الشئ ولكن !!!!!

المنتبه
13-07-2007, 05:55 PM
بارك الله فيك ....

تم التقييم 5/5:)

drakolamax2
13-07-2007, 06:08 PM
شكرا أخى

drakolamax2
13-07-2007, 08:50 PM
up

الجوهر الفرد
15-07-2007, 01:21 AM
http://img337.imageshack.us/img337/2217/rdd35we7.gif

محمد احمد توفيق
15-07-2007, 02:26 AM
مشكور جدا

Gon-hs
15-07-2007, 02:38 AM
شكرا على الموضوع الرائع.......

lamine1
15-07-2007, 01:27 PM
بارك الله فيك

FarDream
15-07-2007, 03:28 PM
http://img337.imageshack.us/img337/8489/rdd42kh7.gif
موضوع أكثر من رائع أخي
و لكني لا أريد أن اخذ أكود - لا افهم فحواها -
لمجرد انها تفعل ذلك

نريد ان نفهم حتي نستطيع تطويع الكود كما نشاء


و في النهاية

تقبل مني كامن التحية
أخوك

محمد احمد توفيق
16-07-2007, 02:09 AM
http://img142.imageshack.us/img142/628/19027125nf7.gif

ADMIRI1
18-07-2007, 05:43 AM
بارك الله فيك ....

drakolamax2
19-07-2007, 05:04 PM
شكرا لكم جميعا اما بلنسبة للشرح فأعتقد أن أكواد تشغيل الفلاش سهلة فمثلا هذا الكود

Private Sub Back_Click()
ShockwaveFlash1.Back
End Sub
السطر الأول هو الحدث
السطر الثانى أول جزء هو أسم الأاداه المستخدمة أو إسم يرمز إلى عرض الفلاش
والجزء الثانى هو الأمر المراد تنفيذة

أما موضوع التصريحات

Private Sub ShockwaveFlash2_FSCommand(ByVal command As String, ByVal args As String)
If (command = "Zoom") Then
ShockwaveFlash1.Zoom (args)
Else
MsgBox (args)
End If
End Sub
العامة فهو كود خاص بأداة مثل تفعيلها و رسائل الخطأ وكده يعنى
أما عن الكود إلى فى الفورم لود
Private Sub Form_Load()
ShockwaveFlash1.Movie = App.Path + "\k.swf"
End Sub
فهو خاص بتشغيل الفلاش من على الرابط الخاص به

__________________________________________________ ___________________
أما أكواد الأداه إلى هيا ActivSkin
Skin1.LoadSkin App.Path & "\X.skn"
Skin1.ApplySkin Me.hwnd

انا لاأعتقد إنة محتاج شرح السطر الأول هو يقوم بتحميل الأسكين من الرابط الخاص به

السطر التاانى يقوم بتفعيل الأسكين على الفورم إلى تختارة إنت
__________________________________________________ ____________________

أما عن أكواد الطريقة البرمجية
فأنا لن أستطيع شرحها شرحا جيدا لإنها لايوجد بها شرح كل ما يهم المبرمج هنا هو قيم الx و الy ويمكن تغييرها للحصول على الشكل المطلوب
__________________________________________________ _______________________

أما عن موضوع الصورة ده فل~أفضل للكل عدم التلاعب فى الكود لأن الكود أو مجموعة الأكواد مهمتها إنها تقوم بقص وقطع الفورم على حسب الصورة وجعل الصورؤة خلفيه للفورم وتلاحظ إختيار صورة من نوع Bmp و يفضل أن تكون خلفيتها لون واحد حتى يقوم البرنامج بقص الخلفية وجعل الفورم على الصورة فقط
__________________________________________________ ______________________
انا آسف جدا على التقصير الكبير منى ولكن انا ماذلت مبتدأ
وأرجو من الأعضاء المحترفين أن يقومو بشرح أي كود يعتقدوا إنو محتاج شرح وانا لم أوفيه حقة
وشكرا

yasser salh
21-07-2007, 04:11 PM
مشكور اخى الكريم على الموضوع الرائع

drakolamax2
04-08-2007, 03:56 PM
up

محمد نجيب
12-09-2007, 11:22 PM
بارك الله فيك

عاشق المجد20000
14-09-2007, 01:49 AM
شكرا على الشرح...

adamzin
22-09-2007, 09:19 PM
شكرا لك يا أخdrakolamax2 (http://www.absba.org/member.php?u=244531) على هذه الطلايقة

mahmoudsizar
22-09-2007, 11:48 PM
بارك الله فيك

اللهيب 12
30-09-2007, 10:58 PM
merci

sayedxp
01-10-2007, 06:12 AM
بكل أمانة موضوع رائع .. شكرا جزيلا .. والى الأمام

تقبل تحياتي

drakolamax2
18-10-2007, 10:03 AM
شكرا لكم جميعا

احمدخلاف
18-10-2007, 09:36 PM
مشكور جدا

drakolamax2
31-10-2007, 04:43 PM
شكرا لكم جميعا

TheFantasy
21-06-2009, 02:42 PM
بارك الله فيك أخي دراكولاماكس

ينقل الى قسم الشروحات:)

محمد القضارف
30-06-2009, 12:46 PM
جزاكم الله عنا كل خير وزادكم علماً

MEZO_FOX
10-01-2011, 07:59 AM
http://img43.imageshack.us/img43/8820/jzakbymrmile.gif

shooter1000
28-01-2011, 03:48 PM
بارك الله فيك

علي_الصقر
10-02-2011, 10:27 PM
مع خااااااااااااااااااااااااااااااااااااااااااااااااا اص
التشكراااااااااااااااااااااااااااااااااااااااااااا ااااااااااات
---------------------------------------------------------------------------------------------------

عبدالمجيدجحيدر
21-03-2011, 05:20 AM
يعطيك العافيه

M@F
29-03-2011, 12:20 AM
مشكور لكن الصور لا تظهر ما المشكلة

alaaghith
24-07-2011, 06:28 PM
موضوع قيم يا أخى والله

دعاء2011
20-08-2011, 05:48 PM
بارك الله فيك
يارب ما يكون فحياتك dark
ربنا يوفقك