PDA

View Full Version : سوال: مقدار دهی به خواص در ماژول



oliya24
یک شنبه 03 مهر 1390, 23:30 عصر
سلام دوستان من میخوام در یه ماژول مثلا تکست یه دکمه رو تغییر بدم ولی خطا میده

یا مثلا میخوام برای کلیدهای f کد بنویسم ولی نمیشه
مثلا تو یه ماژول این رو نوشتم
textbox1.text="ben"
البته تکس باکس رو هم اضافه کردم تو فرم
این خطا رو به من میده
declaration expected
در کل میخواستم بدونم چطور میشه برای کنترلها در ماژول کد نوشت؟؟؟
ممنون از راهنماییتون

M.KH-SH
دوشنبه 04 مهر 1390, 01:10 صبح
دوست عزیز بهترین روش برای این کار استفاده از متغییر های سرتاسری هستش که بتونی این کار رو به سادگی انجام بدی.

اگه نمونه برنامه رو بزاری می تونم میشکل رو حل کنم.

oliya24
دوشنبه 04 مهر 1390, 01:16 صبح
خوب اگر زحمتی نیست یه مثال بزن مثلا خاصیت تکست یه دکمه رو تو ماژول تغییر بده
ممنون

oliya24
دوشنبه 04 مهر 1390, 18:34 عصر
یکی از شما دوستان نیست این مشکل من رو حل کنه
؟؟؟

M.KH-SH
دوشنبه 04 مهر 1390, 18:50 عصر
75817

فکر کنم منظورت این باشه

oliya24
دوشنبه 04 مهر 1390, 21:57 عصر
میشه توضیح بدید که چه کار کردید؟؟؟

مرتضی تقدمی
دوشنبه 04 مهر 1390, 23:32 عصر
سلام
دوست عزیز شما وقتی یک ماژوال می نویسید و مثلا قراره خاصیت یک textbox رو تغییر بده, باید یک آرگومان برای اون ماژول تعریف کنید که از نوع TextBox باشه. بعد می تونید هر شی ای رو که از نوع TextBox هست رو به اون ماژول پاس بدید.
موفق باشید

M.KH-SH
سه شنبه 05 مهر 1390, 00:02 صبح
میشه یک پروژه به عنوان مثال بزارین

مرتضی تقدمی
سه شنبه 05 مهر 1390, 00:19 صبح
میشه یک پروژه به عنوان مثال بزارین

سلام
پروژه که نیست! در حد چند خط کد هستش :
برگردان طول متن تکست باکس.
موفق باشید

oliya24
سه شنبه 05 مهر 1390, 01:18 صبح
اقای تقدمی خواهشا بیشتر توضیح دهید اگر میشه یه مثال دیگه هم بزنید
لطفا
در مورد عوض کردن خاصیت تکست

مرتضی تقدمی
سه شنبه 05 مهر 1390, 01:28 صبح
اقای تقدمی خواهشا بیشتر توضیح دهید اگر میشه یه مثال دیگه هم بزنید
لطفا
در مورد عوض کردن خاصیت تکست

چه خاصیتی؟ آخه هر کاری که می خواین رو تکست باکس انجام بدید, فرمش به همین شکله دیگه. حالا شما بجای اون خط Return TextBoxName.Text.Length هرچی خواستید قرار بدید.
خیلی سادست که.

Mani_rf
سه شنبه 05 مهر 1390, 10:21 صبح
نیازی به این کارها نیست. وقتی می خواهید به عنصری در ماژول دسترسی داشته باشید، فقط کافی است تا نام فرمی که ماژول در آن قرار دارد را ابتدای نام کنترل بنویسید.

Module Module1
Public Sub ChangeText()
Form1.TextBox1.Text = "Test"
End Sub
End Module

مرتضی تقدمی
سه شنبه 05 مهر 1390, 12:07 عصر
نیازی به این کارها نیست. وقتی می خواهید به عنصری در ماژول دسترسی داشته باشید، فقط کافی است تا نام فرمی که ماژول در آن قرار دارد را ابتدای نام کنترل بنویسید.

Module Module1
Public Sub ChangeText()
Form1.TextBox1.Text = "Test"
End Sub
End Module

این درسته, اما اگه یک ماژول بزرگی نوشته شد و بعدا قرار شد از همون ماژول در پروژه های دیگه ای استفاده بشه 100 در 100 با مشکل مواجه خواهد شد. چرا که ممکنه Form1 و یا TextBox1 توی اون پروژه وجود نداشته باشه. باید از ابتدا اساسی کار کرد.

M.KH-SH
سه شنبه 05 مهر 1390, 14:42 عصر
این درسته, اما اگه یک ماژول بزرگی نوشته شد و بعدا قرار شد از همون ماژول در پروژه های دیگه ای استفاده بشه 100 در 100 با مشکل مواجه خواهد شد. چرا که ممکنه Form1 و یا TextBox1 توی اون پروژه وجود نداشته باشه. باید از ابتدا اساسی کار کرد.

خوب دیگه اونو باید از متغییر استفاده کنی

کاری که الان برای 99% از پروژهام دارم انجام میدم.

M.KH-SH
سه شنبه 05 مهر 1390, 14:54 عصر
سلام
پروژه که نیست! در حد چند خط کد هستش :
برگردان طول متن تکست باکس.
موفق باشید



Module Module1
Public Class ClassName
Public Function MudoleName(ByVal TextBoxName As TextBox) As Integer
Return TextBoxName.Text.Length
End Function
End Class
End Module

چرا تو ماژول کلاس تعریف میکنی؟؟؟؟؟

مثلا این مدلی نمیشه؟


Public Function MudoleName(ByVal TextBoxName As TextBox) As Integer
Return TextBoxName.Text.Length
End Function


یا

Module Module1

Public Function lentext(ByVal text As String) As String
Dim x As Integer = Len(text)
Return (x)
End Function

End Module

مرتضی تقدمی
سه شنبه 05 مهر 1390, 15:19 عصر
خب اینم درسته. اما من چون توی بیشتر برنامه هام چندین تابع رو درون یک ماژول قرار می دم, برای همین برای استفاده بهتر توابع هم نوع و هم کار رو در یک کلاس قرار می دم تا تحت یک نام بشه به اونا دسترسی داشت و برای استفاده راحت تر باشم. مثلا توابع کار با فایل ها, و یا توابع کار با بانک اطلاعاتی و ... . حالا اینجا هم از سر عادت این کار رو کردم که اشکالی توش نمی بینم.

M.KH-SH
سه شنبه 05 مهر 1390, 15:36 عصر
خوب آره برای کنترول راحت توابع این خیلی خوبه.

پس هدف شما برای جلوگیری از تکراری شدن توابع هستش؟

مرتضی تقدمی
سه شنبه 05 مهر 1390, 15:47 عصر
فرض کنید توی همین ماژول یک تابع دیگه هم اضافه بشه برای پر کردن مقدار text اون. حالا بهتره که اون رو هم توی همین کلاس بزاریم که بشه به هردو تابع توسط همون نام کلاس دسترسی پیدا کنیم.

M.KH-SH
سه شنبه 05 مهر 1390, 16:25 عصر
خوب با این حساب دیگه نمیخواد به پروژه ماژول اضافه کنیم فقط کلاس اضافه میکنیم.

من میخوام یک خاصیت از یک فرم خواص رو تو یکی از برنامه هام تغییر بدم.
اما میخوام این کلاس ثابت باشه که به راحتی بتونم بدون تغییر تو پروژه های دیگم اضافه کنم منظورم اینه نمیخوام نام فرم مربوطه رو بزارم و صرفا رو اون فرم تغییر بدم.
برای این کار باید چی کار کنم؟

مرتضی تقدمی
سه شنبه 05 مهر 1390, 16:39 عصر
میشه دوباره دقیقتر بگید چی می خواین؟ چون من درست متوجه نشدم.

M.KH-SH
سه شنبه 05 مهر 1390, 17:14 عصر
مثلا خاصیت opacity رو میخوام هنگام ورود و خروج تغییر بدم با حلقه.
ولی چون نمیخوام وقتم سر کپی پیست برای فرم هایی که میخوام اینجوری عمل کنن حروم بشه میخوام یک کلاس برای این مورد تعریف کنم که هروقت اون کلاس رو تو فرم مورد نظرم فراخوانی کردم این تغییرات روی او فرم اعمال بشه.

مرتضی تقدمی
سه شنبه 05 مهر 1390, 17:19 عصر
سلام
الان عجله دارم باید برم. چند ساعت دیگه حتما نمونه برنامش رو می زارم.
موفق باشید

M.KH-SH
سه شنبه 05 مهر 1390, 18:22 عصر
مثلا به جای اینکه تو برنامه تایپ کنم me.opacity=50 برای یک صفحه خواص این کد اعمال میشه.
حالا من میخوام این کد رو برای همه صفحه ها اعمال کنم بدون اینکه دوباره بنویسمش.
این یک مثال جزئی هستش(کد اصلی برای فرم ها در هنگام بالا اومدن و بسته شدن افکت میزاره) حالا اینو میخوام با یک کلاس و یک تابع به راحتی این خواص رو برای فرم هام در اختیار بزارم.

Mani_rf
سه شنبه 05 مهر 1390, 19:09 عصر
ببینید اون چیزی که من گفتم پاسخ سوال اون دوستمون بود، هر برنامه نویسی، با تجربه یا بی تجربه بلاخره یک چیزی در سر داره و یک سری چیزهایی هست که می خواد همون ها را انجام بده. وگرنه اگر بخواید اونطوری حساب کنید برای برنامه های به اون بزرگی که شما گفتید اوصولا استفاده از ماجول ها خیلی توصیه نمی شه و بهتره که از کلاس ها استفاده بشه.
برای انجام کارهایی مانند این که فرم موقع باز شدن یا بسته شدن شفافیتش تغییر کنه روش درست اینه که Eventهای خود فرم را Override کنید و یا این یک سری توابع به اون اضافه کنید که در خود فرم فراخونی بشن تا این که تو یک ماجول نوشته بشه و در هر فرم صدا بشه.

M.KH-SH
سه شنبه 05 مهر 1390, 19:42 عصر
میشه یک نمونه برنامه بدین.

مرتضی تقدمی
سه شنبه 05 مهر 1390, 23:15 عصر
سلام
برنامه ای قرار دادم که opacity فرم رو به دو روش دستکاری می کنه :
اول اینکه یک فرم پایه در نظر گرفتم که هر فرمی که از این فرم ارث بری کنه به طور خودکار opacity آن در زمان باز شدن و در زمان بسته شدن فرم دستکاری می شه.
دوم اینکه این دستکاری در فرمی دیگر با استفاده از فراخوانی توابع کلاس طراحی شده انجام میشه.
موفق باشید