PDA

View Full Version : ایجاد کمپننت



ghaum
سه شنبه 24 آذر 1383, 11:34 صبح
سلام
من می خواهم ازبانک لیست تعدادی از افراد را در label نشان دهم
و نمی دانم تعداد این افراد چقدراست؟

آیامی شود در حین اجرای برنامه کمپننت روی فرم قرار داده شود نه قبل از آن


خیلی متشکرم

Behrouz_Rad
سه شنبه 24 آذر 1383, 13:07 عصر
سلام.

یامی شود در حین اجرای برنامه کمپننت روی فرم قرار داده شود نه قبل از آن
بله که میشه چرا نشه! :wink:
با استفاده از دستور Load می تونی در زمان اجرا عناصر را به فرم اضافه کنی.
فقط یک دونه Label به فرمت اضافه کن و خاصیت Index اش رو برابر با صفر قرار بده. اسمشم مثلا بذار MyLabel.
حالا تعداد افراد رو که به دست آوردی (با دستور Count در SQL) یا هر روش دیگه ای که استفاده می کنی، با استفاده از کدهای زیر می تونی به تعداد رکوردها، در فرمت Label بسازی.
توجه: متغیر X رو به صورت سرتاسری یعنی در قسمت General یا در یک Module تعریف کن.


Dim X As Integer
MyLabel(0).Visible = False
x = x + 1
For x = 1 To TedadeRecordha
Load MyLabel(x)
MyLabel(x).Left = MyLabel(x - 1).Left
MyLabel(x).Top = MyLabel(x - 1).Top + 300
MyLabel(x).Visible = True
MyLabel(x).Caption = "Value: " & MohtaviateRecordet
Next

به همین سادگی و به همین خوشمزگی! :sunglass:
البته این نکته مهم رو هم فراموش نکن که در هر بار اجرا باید Label های قبلی که ایجاد شده اند رو از بین ببری.
به شکل زیر:


For i = 1 To x - 1
Unload MyLabel(i)
Next


موفق باشی.
بهروز راد
:wise1:

ghaum
چهارشنبه 25 آذر 1383, 08:06 صبح
خیلی متشکرم

ghaum
چهارشنبه 25 آذر 1383, 08:31 صبح
ببخشید از دستور


Load MyLabel(x)

خطا می گیرد:



Object already Loaded

بابک زواری
چهارشنبه 25 آذر 1383, 08:36 صبح
چون این object قبلا ایجاد شده ؛ شماره آخرین رو بدست بیار بعد یکی بهش اضافه
کن بعد به جای X بذار

ghaum
چهارشنبه 25 آذر 1383, 09:02 صبح
سلام
من اینک کارها را انجام دادم


m = rs.RecordCount - 1
Lb(0).Visible = False
m = m + 1
x = m

ولی باز هم همان خطا را گرفت

Behrouz_Rad
چهارشنبه 25 آذر 1383, 10:37 صبح
سلام.
احتمالا متغیر X رو سرتاسری تعریف نکردی وگرنه این کد ردخور نداره.
من کد رو اول امتحان می کنم بعد میدم یه یکی.
این Error یعنی عنصر Label وجود داره.
شما بعد از دفعه اول که کد رو اجرا کردی، باید دفعه 2 به بعد کد پایین رو اجرا کنی تا Label های قبلی پاک بشن.
اوکی؟؟؟؟
موفق باشی.
بهروز راد
:wise1:

حامد مصافی
چهارشنبه 25 آذر 1383, 14:40 عصر
این کد رو امتحان کنین
با هر بار اجرای این کد یک لیبل جدید ایجاد میشه


Dim intIndex As Integer
intIndex = Label.Ubound + 1
Load Label ( intIndex )
' Set the control's position here
Label ( intIndex ).Visiable = True




توجه داشته باش که باید ایندکس لیبل صفر باشه
در محل خط چهارم موقعییت کنترل رو تغییر بدین وگرنه روی قبلی ظاهر میشه

Behrouz_Rad
چهارشنبه 25 آذر 1383, 15:20 عصر
آقا جون اون کد ردخور نداره.
مشکل از جای دیگست.
:wise1:

ghaum
شنبه 28 آذر 1383, 10:31 صبح
سلام
خیلی متشکرم از شما
مشکلم حل شد

:thnx:

R_BABAZADEH
جمعه 04 دی 1383, 13:00 عصر
:thnx:

ghaum
دوشنبه 17 اسفند 1383, 08:07 صبح
سلام
آیا در vb
unload داریم
من کدی که باعث می شود کمپننت ها را بسازد را وقتی که فرم اکتیو می شود گذاشتم
همین باعث می شود که موقع لود شدن دوباره فرم این پیغام خطا نمایش داده شود:



object already loaded

خیلی ممنون

ghaum
سه شنبه 18 اسفند 1383, 07:51 صبح
سلام
کسی نیست به سوال من جواب بدهد؟؟؟

ghaum
چهارشنبه 19 اسفند 1383, 08:21 صبح
مشکلم با unload حل شد

:D