PDA

View Full Version : سوال: ایجاد اشیاء به اندازه مورد نیاز



ali_mo7670
پنج شنبه 16 تیر 1390, 09:16 صبح
با سلام
من تو برنامه بعضی وقت ها لازم است که به اندازه کهشی داشته باشم مثلا بعضی وقتها نیاز دارم 30 text bax , label . command تعریف کنم و توی فرم قرار بدم
حالا مشکل اینجاست که چطور میتونم اینها ایجاد کنم و توی فرم به ترتیب قرار بدم و به این اشیا دسترسی داشته باشم

butterfly8528
پنج شنبه 16 تیر 1390, 15:05 عصر
سلام دوست عزیز .
کد های زیر رو در فرمتون قرار بدید و پروژه رو اجرا کنید :
'www.arshamsoft.com

Option Explicit

Dim WithEvents cmdTest As VB.CommandButton
Dim WithEvents txtTest As VB.TextBox

Private Sub Form_Load()
'''' Command Button
Set cmdTest = Controls.Add("VB.CommandButton", "cmdTest", Me)
cmdTest.Move 100, 100
cmdTest.Caption = "Click Me"
cmdTest.Visible = True

'''' TextBox
Set txtTest = Controls.Add("VB.TextBox", "txtTest", Me)
txtTest.Width = 2700
txtTest.Move 100, cmdTest.Top + txtTest.Height + 100
txtTest.Text = "www.arshamsoft.com"
txtTest.Visible = True
End Sub

Private Sub cmdTest_Click()
MsgBox txtTest.Text
End Sub

Private Sub txtTest_Change()
Me.Caption = Len(txtTest) & " chrs"
End Sub

موفق و پیروز باشید .

MP.C-Writer
پنج شنبه 16 تیر 1390, 18:41 عصر
البته می تونید از دستور لود هم استفاده کنید. به این صورت که اول یکی از شیء مورد نظر ایجاد می کنید و به آن یک اندیس می دهید. سپس برای لود کردن بعدی ها از دستورات زیر استفاده می کنید:
load command1(command1.count)
command1(command1.count-1).visible=true


دستور اولی کاماند بعدی را لود می کند و دستور دوم خاصیت نمایش کاماند لود شده را true می کند. چون به صورت پیش فرض شیئی که لود می کنید، قابل نمایش نیست.

موفق باشید.

ali_mo7670
پنج شنبه 16 تیر 1390, 19:40 عصر
باتشکر در ارتباط با پاسخ اول:
روش خوبی است اما بهینه نیست
چون اگه سوال رو خونده باشی گفته ام که به اندازه امکان داره10 تا امکان داره اصلا200 یا 300 خوب میشه یکاریش کرد مثلا گذاشت توی یک حلقه ولی من میخوام به این اشیاء دسترسی هم داشته باشم مثلا چجوری میتونم به text50 دسترسی داشته باشم؟

ali_mo7670
پنج شنبه 16 تیر 1390, 19:41 عصر
با تشکر پاسخ دوم رو اگه میشه بیشتر توضیح بدین ممنون میشم!

MP.C-Writer
پنج شنبه 16 تیر 1390, 21:41 عصر
با استفاده از دستور لود، شما می تونید هر چند تا شیئ رو که به صورت آرایه ای هستند، به وجود بیارید و یا از بین ببرید. وقتی یک شیئ رو آرایه می کنید، یعنی به خاصیت ایندکس آن مقدار می دهید، چهار تا خاصیت ویژه پیدا می کند. یکی از این خاصیت ها، count است که نقش شمارنده دارد. یعنی با این متغیر می شود فهمید که چند تا از اون شیئ وجود دارند. مثلا وقتی دوتا کاماند 1 به صورت آرایه وجود داشته باشند، مقدار command1.count برابر 2 می شود.
در وی بی مقدار اندیس ها از صفر شروع می شود. یعنی در مثال بالا، مقدار شمارنده 2 است. ولی آخرین اندیس برابر 1 است.(اندیس اول، صفر، اندیس دوم، 1)
حالا اگر بگوییم :( load command1(command1.count یعنی کاماند با اندیس 2 را لود کن(توجه: مقدار شمارنده 2 بود.)
حالا وقتی که کاماند 2 لود شد، مقدار شمارنده 3 می شود. پس برای دسترسی به شیئی که همین الان لود شده، باید از مقدار شمارنده -1 استفاده کرد.

اگر باز هم کمک خواستید در خدمتم.

returnx
پنج شنبه 16 تیر 1390, 22:16 عصر
توضیحات تکمیلی:
برای اینکه بفهمین کدام دکمه کلیلک شده یا به روی دکمه ای که کلیک شده تغییراتی ایجاد کنید میتونید از پارامتر Index که بعد از کلیک شدن مقدار دهی میشه استفاده کنید ، ممکنه بعد از ارایه کردن اشیا Sub رویداد کلیک تغییر نکنه و پارامتر Index ایجاد نشه که میتونید به اینصورت تغییرش بدید...

Private Sub Command1_Click(index As Integer)

به طور مثال اگه میخواید دکمه ای که کلیک شد مخفی بشه در رویداد کلیک از این کد استفاده می کنید:

Private Sub Command1_Click(index As Integer)
Command1(index).Visible = False
End Sub