HnHn

جمل برنامجك

112 ردود في هذا الموضوع

بسم الله الرحمن الرحيم

:)

حبيت أن اقوم بإنزال هذا الموضوع بشكل من التفصيل لكي تعم الفائدة في تجميل البرامج

كما اريد ان تتم المساهم بوضع فكرة أو عمل وشرح مبسط حول الاداه المستخدمه فيه

أو الأكواد المدرجه وكيفية عمل كل كود ولماذا !!!! وهذا الرابط لكيفية التعامل مع الفلاش

والبقية ستأتي الأن . ..

فالنبدأ ...

أولا: الطريقة البرمجيه لتجميل فورم

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

- الدوال المستخدمة والتي توضع في قسم التصريحات 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

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

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

ثانياً: أستخدام الأدوات لتجميل فورم

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

وهذه الاداة جدااً رائعه فهي سهلة الاستخدام وليست سهلة البرمجه فهي تحوي الكثير من الاكواد

والخواص والمميزات الخاصة بالمبرمج لتظهر بشكل هذا فتساعد على تجميل

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

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

حيث أن

Skin1 الأداة المرسومة على الفورم

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

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

EX5.JPGEX6.JPG

EX4.JPGEX3.JPG

EX2.JPGEX1.JPG

ملاحظة : تم الاستعانة بمنتدى الابداع الاسلامي و منتدى في بي زووم للحصول على هذه المعلومات

تحياتي :rolleyes:

DEMO.rar

تم تعديل بواسطه HnHn
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

fantastic it vere fantastic

thnk u HnHn 5 stars

*****

(",)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مشكور اخي وبارك الله فيك وكثر الله من امثالك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

نتـــــابع

تصميم الفورم بالاعتماد على صورة

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

1 - Module مديول

2 - Form فورم

3 - Picture بيكتشر وسيتم تسميته بهذا لااسم picMainSkin - صورة من نوع Bmp كهذه

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

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

HnmaHn.gif

تحياتي (h) .. لطريقة جديدة في الأيام القادمه

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

يا سلام عليك يأخ عبدالله فتحي أنا كنت ابحث عن هذا الموضوع في هذا المنتدى لأضافة روابطه

وأنت سبقتني .. وأتمنى من بقية الأعضاء المشاركة لتجميع اكبر قدر من المعلومات في صغحة واحدة

وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بارك الله فيك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

df رائع بل اكثر من رائع

بارك الله فيك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

نموذج على شكل علامة ويندز

win.JPG

نضع هذه الشفرة في مديول

Private Type RECT
   Left As Long
   Top As Long
   Right As Long
   bottom As Long
End Type


Private Declare Function BeginPath Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Private Declare Function EndPath Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function PathToRegion Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function GetRgnBox Lib "gdi32" (ByVal hRgn As Long, lpRect As RECT) As Long
Private Declare Function CreateRectRgnIndirect Lib "gdi32" (lpRect As RECT) As Long
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Private Const RGN_AND = 1
Private Const RGN_OR = 2
Private Const RGN_XOR = 3
Private Const RGN_DIFF = 4
Private Const RGN_COPY = 5
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2

Private Function GetTextRgn() As Long
   Dim hRgn1 As Long, hRgn2 As Long
   Dim rct As RECT
   
   BeginPath hdc

   TextOut hdc, 10, 10, Chr$(255), 1     'Windows Flag

   'Circle (2000, 2000), 1000            'Circle window

'Create any path you want in this section to create your irregular window.

   EndPath hdc
   
   hRgn1 = PathToRegion(hdc)
   GetRgnBox hRgn1, rct
   hRgn2 = CreateRectRgnIndirect(rct)
   CombineRgn hRgn2, hRgn2, hRgn1, 1
   DeleteObject hRgn1
   GetTextRgn = hRgn2
End Function

ثم نضع هذه الشفرة في حدث التحميل للفورم

Private Sub Form_Load()
   Dim hRgn As Long
   Me.Font.Name = "Wingdings"
   Me.Font.Size = 100
   hRgn = GetTextRgn()
   SetWindowRgn hwnd, hRgn, 1
End Sub

وهذه في حدث ماوس داون للفورم

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   ReleaseCapture
   SendMessage hwnd, WM_NCLBUTTONDOWN, HTCAPTION, ByVal 0&
End Sub

;)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

هذا مثال لفورم شفاف ,, وآخر مخفي

:)

visible_form.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

استخدام المساعد أو الجني

MAgent.gif

منتدى الأبداع الأسلامي

بواسطة القســــام  .. قلم موهوب

أول من قائمة Components

أختر Microsoft Agent Control

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

والذي أريد أن نعرفه هنا أنه يمكننا أن نستفيد من هذا المساعد بحيث يظهر في برنامجنا الخاص، وأن نتحكم به كما يحلو لنا، وفيما يلي سنرى كيف يمكننا ذلك:

Ex1A.jpgEx1B.jpgEx1C.jpg

Ex2A.jpgEx2B.jpgEx2C.jpg

:rolleyes:

[1] أولاً سنحتاج إلى الأداة Microsoft Agent controlيجب إدراج هذه الأداة في الفورم وذلك عن طريق الضغط على Ctrl + T واختيار الأداة السابقة، ثم الضغط على OK، وبعدها قم برسمها داخل الفورم.

:blink:

[2] سنحتاج أيضاً إلى ملف المساعد، حيث أن لكل مساعد ملفه الخاص به والذي يحمل الامتداد acs، وستجد - بعد البحث - أن جهازك يحوي على مساعد أو مساعدين على الأقل، وغالباً ما ستجده على المسار التالي: [\c:\windows\msagent\char] وهذا ما سنتعامل على أساسه الآن، حيث سنفترض أننا وجدنا ملف المساعد Merlin على المسار السابق.

:blink:

[3] الآن نقوم بكتابة الكود التالي في قسم التصريحات العامة General_Declarations:

Public Genie As Object

[4] ثم هذا الكود في حدث تحميل الفورم Form_Load:

Dim Filename
Filename = "c:\windows\msagent\char\Merlin.acs" 'هذا المسار افتراضي، ويمكنك التغيير فيه حسب الحاجة
Agent1.Characters.Load CharacterID:="Genie", LoadKey:=Filename
Set Genie = Agent1.Characters("Genie")

والذي يقوم كما هو واضح بتجهيز المساعد Merlin للاستخدام عند الطلب.

[5] المساعد جاهز للاستخدام الآن ويمكنك إظهاره بواسطة الكود التالي: Genie.Show، وإخفاؤه بواسطة الكود التالي: Genie.Hide.

:blink:

Ex5A.jpgEx5B.jpgEx5C.jpg

[6] لكل مساعد حركاته الخاصة به، وهذه أكواد لبعض الحركات الخاصة بالمساعد Merlin:

"Genie.Play "Congratulate لجعل المساعد يهنئك

"Genie.Play "Pleased لجعل المساعد يرجوك

"Genie.Play "lookup لجعل المساعد ينظر إلى أعلى

"Genie.Play "Think لجعل المساعد في حالة تفكير

[7] نقطة أخيرة وهي ماذا لو أردنا معرفة جميع الحركات الخاصة بأي مساعد فما هي الطريقة لذلك:

فقط قم بإدراج أداة قائمة ListBox ، وضع هذا الكود في حدث تحميل الفورم Form_Load:

Dim Animation As Variant
For Each Animation In Genie.AnimationNames
 List1.AddItem Animation
Next

وهذا الكود في حدث النقر على القائمة List1_Click:

Genie.Play List1.Text

يمكن تحميل الملف التالي والذي يحتوي على مثال لاستخدام هذا المساعد عن طريق الخطوات السابقة .. انقر هنـــــــا لتحميل الملف من المنتدى الأساسي

أنتــــــهى

منتدى الأبداع الأسلامي

بواسطة القســــام  .. قلم موهوب

MsAgent.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

يعطيكم العافية على هذا الموضوع

الجميل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

OK

تم تعديل بواسطه APAS
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بارك الله فيك اخي / HnHn

على هذه المعلومات الاكثر من رائع

ومعك معك وبانتظار كل الجديد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أشكرك هوب على هذه المبادرة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ممتاز و قيم و إن شاء الله في تقدم مستمر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

هذه أداة من تصميم رغيد الطيب

وهي عبارة عن زر .. وأعتقد أنه معروف

ولكن لتكمل موضوع جمل برنامجك .. تم أدراجه .. :rolleyes:

RgheedButtonControlV2.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

وهذي مجموعة من تصاميم لأزرار ببرمجة

الأخ هانــــــــــــــي

buton.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

وماذا عن فلاش الا يفي بالغرض و زيادة ايضا؟

بل انه مذهل و لا داعي لهذه الاجرائات معه.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اشكرك أخي amervb للمرور

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

ولكن أصابعك ليست متساوية .. البعض يريد والبعض لا.. :lol:

تم تعديل بواسطه HnHn
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

اخي العزيز HnHn

الملف المضغوط الخاص بــ ( مجموعة من تصاميم لأزرار ببرمجة الخاصة بهاني ) عليها كلمة مرور فاماهي

ثانيا ارجوا وضع مثل للمقال السابق الخاص بــ( تصميم الفورم بالاعتماد على صورة ) ويكون التطبيق على صورة

حيث اني حاولت التطبيق ولم استطيع

وجزاكم الله خير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أولا بخصوص كلمة مرور فهذا شي خاص بالمبرمج هـاني واتمنى أن يكون موجودا ويقدم المساعدة

أما بخصوص تصميم الفورم بالأعتماد على الصورة . ... يوجد رابط من روابط التي انزلها الاخ عبدالله فتحي يوجد به مثال قم بتنزيله

وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

دروس في الاكتف اسكين حتى هذه اللحظه ثلاث دروس والبقيه تاتي

أضغط هنا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .