PDA

View Full Version : ایجاد اشیا در زمان اجرا



@AM!R!
شنبه 09 مهر 1384, 17:48 عصر
سلام دوستان
می خواهم در زمان اجرا یک شی Image بر روی فرم بسازم. این کار را با استفاده از متد CreateObject انجام داده ام ولی بدون هیچ خطایی ، هیچ شی ای هم نمی سازه.
کسی چیزی می دونه؟
ممنون.

حامد مصافی
شنبه 09 مهر 1384, 18:57 عصر
سلام
دوست عزیز قبل از مطرح کردن سوال بی زحمت یه جستجو بکن این سوال زیاد مطرح شده و جواب داده شده

CreateObject اشیا com می سازه!!!!!!!!!!!
شما دو راه داری:
راه اول کمی اصولی تره:
یک کنترل با Index صفر در زمان طراحی بذار روب فرم و در زمان اجرا بنویس


load c(1)
c(1).visible = true
c(1).LEFT = 100

(اگر نام کنترل C باشه)

راه دوم :
بنویس


Dim c As Control
Set c = Controls.Add("vb.image", "c")
c.Visible = True
c.Picture = LoadPicture("c:\MyPic.bmp")

@AM!R!
دوشنبه 11 مهر 1384, 18:44 عصر
ممنون دوست عزیز

مهدی ذوقی
جمعه 15 مهر 1384, 21:28 عصر
با سلام
در روش دوم که گفتید چطوری می شه برای رویدادهای مختلف کنترلهای ایجاد شده در زمان اجرا
کد نوشت
تشکر

alireza_CBoy
شنبه 16 مهر 1384, 01:10 صبح
منظورتون اجرای کدهای نوشته شده برای کنترل ساخته شده است و یا اضافه کردن کد هنگام اجرا :گیج:

مهدی ذوقی
شنبه 16 مهر 1384, 11:13 صبح
با سلام
دوست عزیز منظورم اینکه مثلا اگر یک Textbox ، به روش دوم در هنگام اجرا توسط کاربر ایجاد شد چطور می شه
برای رویداد change این textbox در هنگام کدنویسی برنامه (زمان طراحی)، هنگامی که هنوز این کنترل ایجاد نشده ، کد نوشت
ممنون

alireza_CBoy
شنبه 16 مهر 1384, 23:36 عصر
من در مورد روش اول این کار را بلدم ولی در مورد روش دوم نه . اگر آقای مصافی توضیح بدهند من هم ممنون میشم .

asef-khan
دوشنبه 18 مهر 1384, 08:40 صبح
سلام
با این روش علاوه بر کنترل هایی که در toolbox به صورت پیش فرض هستند آیا می توان کنترل های ocx را هم به
فرم اضافه نمود . به طور مثال یه maskedit .

مهدی ذوقی
سه شنبه 19 مهر 1384, 11:47 صبح
با سلام
به نظر من این تاپیک می تونه خیلی آموزنده باشه (البته اگر تکرای نباشد - که طبق جستجوئی که تو سایت کردم نیست) چون مثلا ایجاد textbox برای ساخت یک grid که ردیف های اون محدود به نوع داده ای integer نباشه
مثل msdatagrid یا msflexgrid که محدود هستند می تونه به درد بخوره اگر دوستان کمک کنند ممنون می شم
البته برای کد نویسی می شه دستور زیر را به کار برد (در روش دوم)
Dim WithEvents c As TextBox که رویدادهای کنترل همزمان با اون ایجاد می شوند
ولی اینکه در روش دوم چطوری می شه array از کنترل ها درست کرد می تونه خیلی مهیج باشه

مهدی ذوقی
سه شنبه 19 مهر 1384, 13:35 عصر
با سلام
برای اضافه کردن کنترلی که در toolbox نیست از کد زیر استفاده می شه
Licenses.Add "progid
که progid برای هر کنترل متفاوت است مثلا برای treeview به صورت MSComctlLib.TreeCtrl و برای richtextbox به صورت richtext.richtextctrl می باشد البته احتیاجی نیست که برای ایجاد آنها را از منوی component انتخاب کنیم
برای ایجاد کنترلها هم ابتدا در ماژول فرم کد زیر را قرار داده
Dim WithEvents c As VBControlExtender
سپس در Form_load قرار دهیم:
set c = controls.add progid,c
مانند برنامه زیر که یک richtextbox ایجاد می کند