ايران ويج

نسخه‌ی کامل: ازافه کردن کنترل به فریم در زمان اجرا
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
شلام . آقا من میام این این کارا رو می کنم

کد:
Private Sub Form_Load()
Lef(0) = Status(0).Left
Lef(1) = Id(0).Left
Lef(2) = Label2(0).Left
Lef(3) = txtPassword(0).Left
T(0) = Status(0).Top
T(1) = Id(0).Top
T(2) = Label2(0).Top
T(3) = txtPassword(0).Top
Wi(0) = Status(0).Width
Wi(1) = Id(0).Width
Wi(2) = Label2(0).Width
Wi(3) = txtPassword(0).Width
Hi(1) = Id(0).Height
Hi(2) = Label2(0).Height
Hi(3) = txtPassword(0).Height
Hi(4) = Label1(0).Height
Lef(22) = Frame2(0).Left
Lef(23) = Frame3(0).Left
Lef(24) = Frame4(0).Left
T(22) = Frame2(0).Top
T(23) = Frame3(0).Top
T(24) = Frame4(0).Top
Wi(22) = Frame2(0).Width
Wi(23) = Frame3(0).Width
Wi(24) = Frame4(0).Width
Hi(22) = Frame2(0).Height
Hi(23) = Frame3(0).Height
Hi(24) = Frame4(0).Height
End Sub
تا اینجا مقادیر مکان های اعضام رو ذخیره کردم . چون بدن که شی جدید لود می کنم این ها تغیر می کنه.

بعد میام تو یک دکمه یک تب ازافه می کنم به کنترل تب و اینارو هم در همون دکمه می نویسم
کد:
Load Frame2(SSTab1.Tabs - 1)
Load Frame3(SSTab1.Tabs - 1)
Load Frame4(SSTab1.Tabs - 1)
Frame2(SSTab1.Tabs - 1).Visible = True
Frame3(SSTab1.Tabs - 1).Visible = True
Frame4(SSTab1.Tabs - 1).Visible = True
Frame2(SSTab1.Tabs - 1).Move Lef(22), T(22), Wi(22), Hi(22)
Frame3(SSTab1.Tabs - 1).Move Lef(23), T(23), Wi(23), Hi(23)
Frame4(SSTab1.Tabs - 1).Move Lef(24), T(24), Wi(24), Hi(24)

Load Status(SSTab1.Tabs - 1)
Load Id(SSTab1.Tabs - 1)
Load Label2(SSTab1.Tabs - 1)
Load txtPassword(SSTab1.Tabs - 1)

Status(SSTab1.Tabs - 1).Visible = True
Id(SSTab1.Tabs - 1).Visible = True
Label2(SSTab1.Tabs - 1).Visible = True
txtPassword(SSTab1.Tabs - 1).Visible = True

Status(SSTab1.Tabs - 1).Move Lef(0), T(0), Wi(0), Hi(0)
Id(SSTab1.Tabs - 1).Move Lef(1), T(1), Wi(1), Hi(1)
Label2(SSTab1.Tabs - 1).Move Lef(2), T(2), Wi(2), Hi(2)
txtPassword(SSTab1.Tabs - 1).Move Lef(3), T(3), Wi(3), Hi(3)

حالا جالب اینجاست که کنترل های فریم من لود می شوند اما کنترل هایی که داخل اونها هستند لود نمی شوند.
من بدون فریم همه کنترل ها رو راحت لود می کنم و نمایش می دم اما وقتی تو فریم می زارم لود می شوند ولی خبری از نمایش دادنشون نیست .احتمالا زیر فریم قرار می گیرند و فریم روی اونها میاد اما چه طور یک کنترل رو در زمان اجرا در یک فریم ازافه کنم؟.
خاصيت Visible آبجکت ها رو True کن ببين درست ميشه
نقل قول: ارسال شده توسط CRazYFULL - ديروز ۲۳:۴۷:۱۷
خاصيت Visible آبجکت ها رو True کن ببين درست ميشه
hاین کارو کردم اگر به کد توجه کنید در اینجا
کد:
Status(SSTab1.Tabs - 1).Visible = True
Id(SSTab1.Tabs - 1).Visible = True
Label2(SSTab1.Tabs - 1).Visible = True
txtPassword(SSTab1.Tabs - 1).Visible = True
مشگل رو فهمیدم . مشگل اینجاست که وقتی من کنترل ها رو در frame قرار ندادم. parent کنترل form هست و کنترل آزاد هست تا در سطح form هر جا که می خواد بره و میشه object از روش ساخت و هر جا می خوای ببریش . اما وقتی توی frame قرارش میدی . parent میشه frame و تو حتی object های جدیدی رو که load میکنی نمی تونی خارج از فضای اون frame ببری.حالا من آمدم خیلی راحت همه اشیاء تازه ای که می سازم رو parent جدید می دم بهشون . یعنی frame جدید رو به عنوان parent جدید با تابع setparent که api هست به کنترل جدید می شناسونم. تا اینجا درست یعنی همه کنترل ها میرن در جای جدید خودشون.اما مشگل دوباره اینجاست که label ها property هندله hwnd ندارند و من اگر بخوام با findwindow یا findwindowex یا getdlgitem هندله ازشون بگیرم باید پردازش های زیادی انجام بدم.که این خیلی زشت میشه که یه برنامه به خاطر ازافه کردن 4 تا کنترل بابای cpu رو در بیاره. یک راهی پیشنهاد کنید تا از label هندله بگیرم. ممنون