Posted: Tue Apr 12, 2005 10:29 pm Post subject: برنامه نويسي كنترل ActiveX قسمت 1
Quote:
ActiveX چيست ؟
دو نوع ActiveX داريم : ActiveX Component , ActiveX Control
يك ActiveX Component لغتيست كه در حيطه هاي زير عمل ميكند :
Quote:
ActiveX EXE , ActiveX DLL , ActiveX Control
يك مولفه ActiveX (component) شكل يا فرمي ندارد . بلكه ميتوان اينگونه تصور كرد كه يك دسته كد هستند كه در پروژه شما مينشينند . مثلا اينكه چگونه با استفاده از ADO يا DAO به بانك اطلاعاتي وصل ميشويد ميتوان گفت كه بنحوي از يك مولفه ActiveX استفاده ميشود .
اما ActiveX Control ها را بارها بدون انكه بدانيد استفاده كرده ايد . در واقع هر وقت كه property يك textbox را تنظيم ميكنيد داريد با يك ActiveX كار ميكنيد . يا هروقت كه روي دكمه اي كليك ميكنيد با يك كنترل ActiveX كار ميكنيد . ميتوان اينگونه گفت كه تمامي چيزهايي كه در ToolBox ميبينيد ActiveX هستند .
البته ميتوانيد به تعداد اين كنترل ها از مسير Projects , Components بيافزاييد .
شايد بخواهيد كنترلي در toolbox خود داشته باشيد كه شبيه به TextBox باشد اما بتوانيد در ان فقط عدد وارد كنيد يا فقط حروف دريافت كنيد .
براي شروع يك دكمه option كوچولو را طوري مينويسيم كه هر گاه متدي مشخص را در برنامه اجرا كرديد اين دكمه راديويي به ميزان معيني چشمك بزند .
Visual Basic را باز كنيد .
يك پروژه جديد ActiveX Control درست كنيد .
صفحه اي طوسي روي صفحه نمايش شما به نمايش در مي ايد كه محيط كاري شماست . ظاهرا شبيه به يك فرم است كه هيچ حاشيه و دكمه بزرگ و كوچك كردن يا بستن ندارد . ( راستي تا حالا كنترلي ديده ايد كه دكمه close داشته باشد ؟ )
property نام كنترل را از UserControl1 به Flasher تغيير دهيد .
حالا نام Project1 را نيز به Animation تغيير دهيد .
روي دكمه Option از toolbox دو بار كليك كنيد .
Caption دكمه Option را پاك كنيد . و property نام انرا به optFlasher تغيير دهيد .
حال يك تايمر (زمان سنج) به به پروژه اضافه كنيد . و property نام انرا به tmrAnimation تغيير دهيد .
حالا كمي بايد تغييرات در وضع ظاهري محيط كاري بدهيد . به اين ترتيب كه ساير محيط كاري را كوچك كنيد . ابتدا optFlasher را به گوشه بالا سمت چپ كادر ببريد .
حالا محيط كاري را كوچك كنيد . بصورت شكل زير :
اين چيزي كه درست كرده ايد همان control شما خواهد بود .
حال به سراغ كد نويسي ميرويم از مسير view به code برويد . و كد زير را بنويسيد :
Public Sub Flash()
tmrAnimation.Interval = 300
End Sub
دستور فوق باعث ميشود كه interval property كنترل tmrAnimation شما به 300 ميلي ثانيه تغيير كند . وقتي تايمر وارد عمل ميشود پس از 300 ميلي ثانيه رخداد مورد نظر روي ميدهد .
از منوي پايين افتادني در صفحه كدنويسي كه General نام دارد tmrAnimation را انتخاب كنيد . منوي پايين افتادني كناري ان بايد مقدار timer داشته باشد . اگر ندارد timer را بگذاريد .
كدهاي زير را بنويسيد :
Static NoOfFlashes As Integer
‘the static is means that the value of this variable
‘wont over when procedure is over
optFlasher.Value=Not (optFlasher.Value)
NoOfFlashes=NoOflashes+1
If NoOfFlashes=8 Then
NoOfFlashes=0
tmrAnimation.Interval=0
End If
تمام شد . هم اكنون يك ActiveX ساخته ايد .
به file برويد و از انجا Add Project كنيد و سپس Standard Exe را باز كنيد .
حالا دو پروژه باز شده در صفحه داريم . حال ميتوانيد كنترل خود را وارد فرم پروژه كنيد .
اگر كنترل فلاشر شما قابل انتخاب نيست به ان دليل است كه محيط طراحي كنترل شما هنوز باز است انرا ببنديد و دوباره نگاه كنيد .
حتما در properties كنترلي كه ساخته ايد متوجه property هايي شده ايد . انها بصورت پيشفرض در انجا هستند .
حال براي عملكرد كنترلمان ميتوانيم يك دكمه به فرم اضافه كنيم و در قسمت كد ان بنويسيم :
Flasher1.Flash
اين property با نام flash را قبلا خودتان با استفاده از Public Sub Flash ساخته ايد .
بهتر است به کاربر(برنامه نویس) اجازه دهید خود مقدار InterVal را برای کنترل تعیین کند. برای این که یک Property یا خاصیت را بتوانید به کنترلی نسبت دهید از دستورات زیر استفاده کنید:
Public Property Get FlashInterval() As Long
End Property
Public Property Let FlashInterval( Something )
End Property
از Let برای مقدار دهی به یک خاصیت و از Get برای گرفتن یک خاصیت استفاده می شود.
پس کد زیر را نیز امتحان کنید . البته این کد را باید در قسمت ActiveX Control خود بنویسید:
Public Property Get FlashInterval() As Long
FlashInterval = tmrAnimation.Interval
End Property
Public Property Let FlashInterval(ByVal NewInterval As Long)
tmrAnimation.Interval = NewInterval
End Property
Public Sub StopFlashing()
tmrAnimation.Interval = 0
End Sub
Private Sub tmrAnimation_Timer()
Static NoOfFlashes As Integer
'the static is means that the value of this variable wont over when procedure is over
optFlasher.Value = Not (optFlasher.Value)
NoOfFlashes = NoOflashes + 1
If NoOfFlashes = 8 Then
NoOfFlashes = 0
tmrAnimation.Interval = 0
End If
End Sub
Private Sub UserControl_Resize()
'You can't resize the control
UserControl.Height = optFlasher.Height
UserControl.Width = optFlasher.Width
End Sub
'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!
'MemberInfo=5
Public Sub Flash()
tmrAnimation.Interval = FlashInterval
End Sub
حال برای اجرا باید مقدار InterVal را نیز مشخص کنید:
Private Sub CmdFlash_Click()
Flasher1.FlashInterval = 200
Flasher1.Flash
End Sub
Private Sub CmdStopFlash_Click()
Flasher1.StopFlashing
End Sub
براي استفاده از اين ActiveX ميتوانيد انرا به صورت ocx ذخيره كنيد . به file برويد و save ocx كنيد . همان گزينه اي كه براي ساخت فايل Exe انتخاب ميكرديد . سپس در پروژه برنامه تان . از projects سپس components ميتوانيد فايل ocx خود را به برنامه بيافزاييد .
خواهش ميكنم اميرجان . 60%
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum