مشاهدة النسخة كاملة : [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
يعطيك العافيه
مشكور لكن الصور لا تظهر ما المشكلة
alaaghith
24-07-2011, 06:28 PM
موضوع قيم يا أخى والله
دعاء2011
20-08-2011, 05:48 PM
بارك الله فيك
يارب ما يكون فحياتك dark
ربنا يوفقك