نمایش نتایج 1 تا 2 از 2

نام تاپیک: افزودن شیء یا اشیا به صفحه با کد (مهم, تخصصی, واجب!)

  1. #1
    کاربر دائمی
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    اصفهان
    پست
    717

    افزودن شیء یا اشیا به صفحه با کد (مهم, تخصصی, واجب!)

    سلام عزیزان برنامه نویس مخصوص vb6 کاران

    یکی از مسائلی که دیدم خیلی کم به اون تو سایت برنامه نویس پرداخت افزودن شی به صفحه با کد هست
    شاید لابد به خودتون بگید که کارایی اینکار چیه و به چه دردی میخوره.

    خب در خصوص این موضوع بگم که چند اهمیت داره.
    1. سرعت لود برنامه شما سریع میشه چرا چون وقتی با کد باشه خیلی سریعتر اونو لود میکنه تا با ایجاد ترسیم
    2. حجم برنامه شما خیلی کمتر میشه
    3. در جایی که نیاز دارید از تعداد بالایی شی استفاده کنید بی نیاز می شوید. مثل جدول که فقط با 2 تا حلقه FOR به سادگی قابل انجام است
    4. قابلیت هک ساختار فرم شما را به شدت پایین میاره
    5. اگر از کامپونتت استفاده میکنید خیلی راحتر می تونید انون لود بکنید و حتی باز هم اگر نه کامپوننت وجود نداشت و نه ریجیستری شده بود برنامه شما از کار نمی افته. چون باکد که دارید لود می کنید اگر مشکلی پیش آمد از دستور On Error Resume Next به سادگی استفاده می کنید
    6. و غیره .... که خودتون کشفش کنید.


    دستور مادر به این شکل هست

    Controls.Add


    و اصل دستور به این شکل تعریف میشه

    Set NAMESET = Controls.Add("NAMEOBJ", "NAMESET", LOCTION)


    • در اینجا NAMESET ما میتوانیم هر نامی ایجاد برای ارتباط به شی که فرقی نمیکند چه باشد

    • و NAMEOBJ که اصل داستان کار با این کد هست شما باید / نام رسمی شناخته / را به کار ببرید که فعلا فقط میتوانید اشیایی که به صورت پیش فرض ذر خود VB6 هست را استفاده کنید.

    "NAMESET" این هم مثل قبلیه ولی برای کد نویسی و یا ارتباط اون باید جداگانه نوشته شود, کنارش یک عدد هم بذارید بد نیست.

    • و در آخر هم LOCTION مکانی هست که اون شیء باید توی تمایش داده بشه که می تونه ME یا Frame1 و یا هر چیزی که قابلیت اونو داشته باشه.

    مثلا با دستور زیر ما یک تکس باس می سازیم:

     Set TxtBos = Controls.Add("VB.TextBox", "TxtBos", Me)


    حالا اگر ما برنامه را اجرا کنیم خب طبیعتا نتیجه ای نمی بینیم برای دیدن شی خودمون با این کد ساده نتیجه را میتوانیم ببینم.
    اول باید نمایش اونو فعال کنیم و بعد مختصات به اون بدیم برای نمایش
    این را بگویم که از این به بعد هرکاری که با اون تکس باکس مییخواهیم انجام دهیم باید با نام TxtBos انجام دهیم

    TxtBos.Move 150, 240, 1500
    TxtBos.Visible = True


    تا اینجا همه چیز درسته. ولی اما ما الان نام رسمی شناخته شده را از کجا پیدا کنیم؟؟؟ مثلا اینو VB.TextBox
    تنها راهی که بنده سریع و راحت سراغ دارم اینکه برای بدست اوردن نام اصلی اشیاء ها
    شیء هایی که میخواهید روی صفحه همینطوری ایجاد کنید مثلا دکمه و بعد اونو ذخیره کنید. فقط با پسوند FRM اون کار داریم
    حالا بعدش با نودپد فایل باز را کنید که میبینید اطلاعاتی از اشیاء نوشته داخلش.
    یک همچین چیزی:
    کد HTML:
    <hr>
    ما فقط دقیقا با این یک تیکه کار داریم برای گرفتن نام و مابقی پوچ
    EndProperty
    Height = 2385
    Left = 4230
    TabIndex = 1
    Top = 510
    Width = 2940
    End
    Begin VB.CommandButton Command1
    Caption = "Command1"
    BeginProperty Font
    Name = "Tahoma"
    Size = 8.25
    Charset = 178
    Weight = 400
    Underline = 0 'False
    Italic = 0 'False
    Strikethrough = 0 'False
    EndProperty
    Height = 315
    Left = 4020
    TabIndex = 0
    Top = 3795

    کد HTML:
    <hr>
    خب تا اینجا ما یاد گرفتیم چگونه شیء مورد نظر خودمونو ایجاد کنیم حالا برای ایجاد چندین تا به شکل index چه کنیم؟؟؟ هــــــــــــــا!

    خیلی ساده یک تابع به شکل آرایه تعریف میکنیم مثلا:
     Dim TxtBos(10) As VB.TextBox

    که در ادامه اش کد تعریف ما هم این میشه.
    Set TxtBos(0) = Controls.Add("VB.TextBox", "TxtBos", Me)


    خب این هم نمونه کد تمرینی
    Dim TxtBos(9) As VB.TextBox


    For b = 1 To 3
    For a = 1 To 3
    Set TxtBos(a + b) = Controls.Add("VB.textbox", "TxtBox" & Fix(Rnd * 30), Me)
    TxtBos(a + b).Move 500 * a, 500 * b, 400, 400
    TxtBos(a + b).Visible = True
    Next a
    Next b

    __________________________________________________ ____________________________________

    شرمنده که اینقدر طول کشید ولی خب لذت آموختن خستگی برای برنامه نویس نداره
    خب بریم سر قسمت آخر

    آقا جون حالا چجوری کاموپنت ها و یا همان ocx را اضافه کنیم
    خیلی ساده مثل روش های بالا تلاش کنید نام رسمی اصلی اونو پیدا کنید
    اما نکته ی مهمی ایتجا وجود داره شما باید حتما License اونو به برنامه یا به عبارتی به خط کد خودتون اضافه کنید.

    مثلا من میخوام DataGrid را به برنامه اضافه کنم
    نامی که من پیدا کردم برای خودم این بود MSDataGridLib.DataGrid
    و با دستوری های بالا اضافه میکنم حالا اگر میخواهید لایسنس را اضافه کنید دقیقا مثل نام بالا باید توی لایسنس خودتون هم اضافه کنید.
    مثال:

     Licenses.Add "MSDataGridLib.DataGrid" ', "CDE57A40-8B86-11D0-B3C6-00A0C90AEA82"
    Set CAFE = Controls.Add("MSDataGridLib.DataGrid", "cafe")
    CAFE.Visible = True
    CAFE.Move 1050, 150, 3800, 5350


    تا اینجا کار ما کلا تمامه و برنامه اجرا میشه
    ولی چندتا نکته خیلی مهم و واجب است بدانید اینکه.
    1- لازم نیست ocx فایل را به برنامه اضافه کنید کارهایی که شما انجام میدهید دقیقا همون کار هستنند.
    2- و دیگر اینکه انجام اینکار دلیل نمیشه شما فایل ocx را در سیستم کاربر ریجستر نکنید.
    3- و در آخر ختم کلام. با این نوع روش اگر برنامه ocx پیدا نکرد یا حتی ریجستر نشده بود روی سیستم کاربر به راحتی میتوانید با دستور on error اونو رد بکنید و برنامه را اجرا بکنید ولی طبیعتا جاهای دیگر کدهای شما مرتبط با اون دچار خطا در زمان خودشون میشوند.

    تا چند روز دیگه یک سورس کامل و آموزشی مناسب در این رابطه زیر همین جا اضافه میکنم.

    شاد پیروز و موفق باشید/ حالا که سایت برنامه نویس گزینه تشکر را برداشته اگر مطلب به دردتون خورد خوشحال میشم زیر اینجا تشکر کنید. :)
    آخرین ویرایش به وسیله www.pc3enter.tk : یک شنبه 04 آبان 1399 در 04:57 صبح

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    اصفهان
    پست
    717

    نقل قول: افزودن شیء یا اشیا به صفحه با کد (مهم, تخصصی, واجب!)

    این هم یک نمونه کد کامل با تمام جزییات. البته خودتون هم میدونید که تو اینترنت جستوجو کنید با موارد زیادی روبه رو میشوید.

    Option Explicit' If you are adding an ActiveX control at run-time that is
    ' not referenced in your project, you need to declare it
    ' as VBControlExtender.
    Dim WithEvents ctlDynamic As VBControlExtender
    Dim WithEvents ctlText As VB.TextBox
    Dim WithEvents ctlCommand As VB.CommandButton


    Private Sub ctlCommand_Click()
    ctlText.Text = "You Clicked the Command button"
    End Sub


    Private Sub ctlDynamic_ObjectEvent(Info As EventInfo)
    ' test for the click event of the TreeView
    If Info.Name = "Click" Then
    ctlText.Text = "You clicked " & ctlDynamic.object.selecteditem.Text
    End If
    End Sub


    Private Sub Form_Load()
    Dim i As Integer
    ' Add the license for the treeview to the license collection.
    ' If the license is already in the collection you will get
    ' the run-time error number 732.
    Licenses.Add "MSComctlLib.TreeCtrl"


    ' Dynamically add a TreeView control to the form.
    ' If you want the control to be added to a different
    ' container such as a Frame or PictureBox, you use the third
    ' parameter of the Controls.Add to specify the container.
    Set ctlDynamic = Controls.Add("MSComctlLib.TreeCtrl", "myctl", Form1)
    ' set the location and size of the control.
    ctlDynamic.Move 1, 1, 2500, 3500


    ' Add some nodes to the control.
    For i = 1 To 10
    ctlDynamic.object.nodes.Add Key:="Test" & Str(i), Text:="Test" & Str(i)
    ctlDynamic.object.nodes.Add Relative:="Test" & Str(i), Relationship:=4, Text:="TestChild" & Str(i)
    Next i

    ' Make the control visible.
    ctlDynamic.Visible = True


    ' add a textbox
    Set ctlText = Controls.Add("VB.TextBox", "ctlText1", Form1)
    ' Set the location and size of the textbox
    ctlText.Move (ctlDynamic.Left + ctlDynamic.Width + 50), 1, 2500, 100


    ' Change the backcolor.
    ctlText.BackColor = vbYellow


    ' Make it visible
    ctlText.Visible = True


    ' Add a CommandButton.
    Set ctlCommand = Controls.Add("VB.CommandButton", "ctlCommand1", Form1)


    ' Set the location and size of the CommandButton.
    ctlCommand.Move (ctlDynamic.Left + ctlDynamic.Width + 50), ctlText.Height + 50, 1500, 500


    ' Set the caption
    ctlCommand.Caption = "Click Me"


    ' Make it visible
    ctlCommand.Visible = True
    End Sub

تاپیک های مشابه

  1. پاکسازی بخش وی بی.زود زود!!!!!
    نوشته شده توسط armin_izer در بخش برنامه نویسی در 6 VB
    پاسخ: 2
    آخرین پست: یک شنبه 18 اردیبهشت 1384, 22:22 عصر
  2. یه سوال تخصصی و یه سوال غیر تخصصی
    نوشته شده توسط بمب منطقی در بخش برنامه نویسی در 6 VB
    پاسخ: 16
    آخرین پست: جمعه 17 مرداد 1382, 17:55 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •