PDA

View Full Version : سوال در رابطه با اکتیویکس در ویژوال بیسیک



hamidahmadi
شنبه 02 دی 1385, 20:57 عصر
اساتید عزیز به کمک شما در رابطه با Activix در ویژوال بیسیلک احتیاج دارم
من یک تکست باکس بر روی یک UserControl1 گذاشته ام با کمک
Activix control interface wizard همه خاصیت ها را به این تکست باکس داده ام ضمن اینکه یک خاصیت جدید به نام Vis به تکست باکس داده ام برای Visible کردن تکست باکس که اینها توسط خاصیت Enum که اگر Marei بود ( با شماره یک ) و اگر Namarei بود ( با شماره دو ) توسط دستور Enum این کار را انجام بدهد.
کار را درست پیش برده ام فقط دو اشکال در آن دارم یکی اینکه در خاصیت Resize یوزرکنترل نوشته ام :
Te.Width = usercontrol1.width and Te.Hieght = usercontrol1.Height
If Te.width <> usercontrol1.width and Te.Height <> usercontrol1.Height then
Usercontrol.Width = Te.Width and usercontrol.Height = Te.Height
End if
Te.Move 0,0,usercontrol1.Widht, usercontrol.Height

حال سئوال من این است چرا من وقتی ocx این برنامه را ساختم وقتی دوبار بر روی آن در روی فرم می زنم تکست باکس تمام عرض فرم را میگیرد ولی اگر یک بار آن را بزنم و وقتی علامت آن به شکل صلیب شد و آن را بر روی فرم میگذارم همه چیز درست است
البته قسمت مهم برای من این است که مشکل قسمت اول را که وقتی دوبار کلیک میکنم بر روی این تکست باکسی که خودم ساختم چرا تمام فرم را می پوشاند. و اگر میتوانید دستوری را که باید بنویسم تا این مشکل حل شود برای من بنویسید.
و دیگر اینکه وقتی من تکست باکس جدید را توسط خاصیت Vis مرئی و غیر مرئی میکنم فقط خود تکس مرئی و غیرمرئی می شود و پشت آن که یوزرکنترل هست همانجا باقی می ماند
خوشحال میشوم یکی مرا یاری دهد.

Payam Moradi
یک شنبه 03 دی 1385, 00:55 صبح
پیشنهاد میکنم اول خاصیت ScaleMode یوزر کنترل را به Pixel تغییر بدید چون محاسبه از این طریق راحتتر انجام میشه و به جای استفاده از usercontrol.Widht, usercontrol.Height در کد نویسی از usercontrol.ScaleWidht, usercontrol.ScaleHeight استفاده کنید. کد بالا موردی نداره فقط این دو مورد رو اصلاح کن درست میشه. ضمنا در خط اول از And استفاده نکن.
هنگام استفاده از خصوصیات یوزرکنترل فقط از usercontrol استفاده و از اسم آن (مثلا usercontrol1) استفاده نکن.


te.Width = UserControl.Width
te.Height = UserControl.Height
If te.Width <> UserControl.Width And te.Height <> UserControl.Height Then
UserControl.Width = te.Width And UserControl.Height = te.Height
End If
te.Move 0, 0, UserControl.ScaleWidth, UserControl.ScaleHeight

دوم هیچ اکتیوایکسی در ویبی نیاز به تعریف Visible و یا Tooltip و طول و عرض و غیره که خصایص عمومی هستند ندارد چون وی بی خودش اونا رو در نظر میگیره (مگر در مواقع خاص)
خصوصیت Visible رو که تعریف کردی حذف کن درست میشه.