PDA

View Full Version : ایجاد کنترل های Public



Amir Taghavi
سه شنبه 10 آبان 1384, 19:59 عصر
اگر بخواهم کنترلی را که در فرم 1 قرارداده ام بقیه فرم ها نیز آنرا ببیند و بتوان مقادیری را به آن کنترل فرستاد و یا از خواص آن استفده کرد ، چکار باید بکنم

برای مثال در Form1 یک کنترل Statusbar قرار داده ام و میخواهم هنگامی که موس را روی Button ذخیره می برم متن Statusbar به "ذخیره" تبدیل شود

با تشکر از دوستان

Hamedm
سه شنبه 10 آبان 1384, 20:06 عصر
سلام

یک Madule به پروژه اضافه کنید، سپس در بالای Madule فرمهاتو با متغیری بصورت Public تعریف کن (البته New یادتون نره). سپس از این به بعد هرموقع که خواستید به فرم دسترسی داشته باشید با اون متغیره کار میکنید.

در پناه حق موفق باشید و پرتوان

Amir Taghavi
چهارشنبه 11 آبان 1384, 01:05 صبح
آقای محمدی سلام
از اینکه به این سرعت به سوالات من پاسخ می دهید بسیار سپاسگذارم

این کارها را بارها انجام داده ام ولی نتیجه ای نداد
اگر ممکن است یک سورس کوچک را ارسال نمائید. زیرا این موضوع برای من اهمیت فراوانی دارد

با تشکر

rezaei manesh
چهارشنبه 11 آبان 1384, 12:22 عصر
سلام
آقا اصلا روش خوبی پیشنهاد نکردید
از این روش استفاده کنید من یکه شام به کل شرکت دادم تا این روش رو به هم یاد دادند
در فرمی که می خواهید از کنترول هاش استفاده کنید (frmdefcar )
Dim frmser As New FrmSearch
(Me.AddOwnedForm(frmser
frmser.EditMode = FrmSearch.Mode.DefCar
()frmser.ShowDialog
حالا در فرم دوم مثلا در اینجا frmsearch
Dim frm2 As frmDefCar
frm2 = Me.Owner
(Temp = frm2.flxCars.get_TextMatrix(1, 1
frmdefcar فرم اول هست

Hamedm
چهارشنبه 11 آبان 1384, 22:19 عصر
سلام
آقا اصلا روش خوبی پیشنهاد نکردید
از این روش استفاده کنید من یکه شام به کل شرکت دادم تا این روش رو به هم یاد دادند
در فرمی که می خواهید از کنترول هاش استفاده کنید (frmdefcar )
Dim frmser As New FrmSearch
(Me.AddOwnedForm(frmser
frmser.EditMode = FrmSearch.Mode.DefCar
()frmser.ShowDialog
حالا در فرم دوم مثلا در اینجا frmsearch
Dim frm2 As frmDefCar
frm2 = Me.Owner
(Temp = frm2.flxCars.get_TextMatrix(1, 1
frmdefcar فرم اول هست

سلام

عزیز جان، روش من روش استاندارد این کار است و تماما با یک بار تعریف متغیری به جای فرم بصورت Public همه مشکلات حل میشه.
در ضمن اگه امکان د اره جنابعالی بفرمایید چرا روش من، روش خوبی نیست.

در ضمن جناب amir.taghavizadeh یک مثال براتون نوشتم.

در پناه حق موفق باشید و پرتوان

حامد مصافی
پنج شنبه 12 آبان 1384, 10:21 صبح
حامد جان ظاهراً این دوستمون درباره کنترل عمومی سوال کردند و شما درباره متغیر های عمومی پاسخ دادید!
آقا/خانم amir.taghavizadeh اگه منظورتونو درست متوجه شده باشم شما باید یک UserControl بسازید این کنترل در Toolbox و در قسمت My UserControls ظاهر میشه و می تونید روی هر فرمی بذارید

rezaei manesh
پنج شنبه 12 آبان 1384, 11:04 صبح
سلام
آقا حامد در روش شما یک فرم به صورت عمومی تعریف میشه شاید اصلا کاربر از آن فرم استفاده نکنه بنابراین کلی فضای هرز گرفته میشه در ضمن شاید فرمی که قرار عمومی بشه کنترل های زیادی داشته باشه و این اصلا خوب نیست اما در روش پیشنهادی من هر زمان که نیاز داشت فرم رو صدا میزند و هر تغییری که در فرم عمومی بده حتی در حالی که توی یه فرم دیگه باشه همان لحظه در فرم اول میتونه تغیرات رو ببینه در این روش فرم موقتا عمومی میشود آن هم نه عمومی عمومی بلکه فقط در همان فرمی که در حال استفاده آن هست

البته این روش من و شاید هم به نظر شما خوب نباشه ولی من از این روش خیلی راضی هستم

حامد مصافی
پنج شنبه 12 آبان 1384, 11:19 صبح
ظاهراً اسم همه ما حامد است!!!!!!!!!!!!!!!!!!!!!
حالا ممکنه بگین شما با کی بودین؟

مجتبی کریمی
پنج شنبه 12 آبان 1384, 15:27 عصر
سلام
من با آقا حامد موافقم
ایشون درست میگن
(حامد رضائی)

Hamedm
پنج شنبه 12 آبان 1384, 16:00 عصر
سلام
آقا حامد در روش شما یک فرم به صورت عمومی تعریف میشه شاید اصلا کاربر از آن فرم استفاده نکنه بنابراین کلی فضای هرز گرفته میشه در ضمن شاید فرمی که قرار عمومی بشه کنترل های زیادی داشته باشه و این اصلا خوب نیست اما در روش پیشنهادی من هر زمان که نیاز داشت فرم رو صدا میزند و هر تغییری که در فرم عمومی بده حتی در حالی که توی یه فرم دیگه باشه همان لحظه در فرم اول میتونه تغیرات رو ببینه در این روش فرم موقتا عمومی میشود آن هم نه عمومی عمومی بلکه فقط در همان فرمی که در حال استفاده آن هست

البته این روش من و شاید هم به نظر شما خوب نباشه ولی من از این روش خیلی راضی هستم

سلام

اصلا از کلکسیون HashTable استفاده کنید و خیال خودتونو را راحت کنید. فرمی که میخواهید کنترلهای اون Public باشه رو در این کلکسیون اضافه کنید و وقتی که دیگه مطمئنید به اون فرم کاری ندارید، از کلکسیون حذفش کنید.

در پناه حق موفق باشید و پرتوان

Amir Taghavi
پنج شنبه 12 آبان 1384, 23:09 عصر
با سلام خدمت همه دوستان
از اینکه به سوال من پاسخ دادید تشکر میکنم
من از روش آقای رضایی استفاده کردم و جواب هم داد یعنی کنترل هایی که در فرم 1 بودند را توانستم در فرم 2 مقدار دهی کنم و درهمان لحظه هم مقدار جدید را مشاهده کنم.
در روش آقای محمدی درسته که فرم را می توان در هرجا استفاده کرد و آنرا صدا زد ولی کنترلهای آن فرم را نمی توان مقدار دهی کرد

باتشکر از همه دوستان

Hamedm
پنج شنبه 12 آبان 1384, 23:27 عصر
در روش آقای محمدی درسته که فرم را می توان در هرجا استفاده کرد و آنرا صدا زد ولی کنترلهای آن فرم را نمی توان مقدار دهی کرد

سلام

نمیشه؟ :متعجب:
لطفا به فایلی که UPLOAD کردم نگاهی بیندازید.

در پناه حق موفق باشید و پرتوان

Amir Taghavi
پنج شنبه 12 آبان 1384, 23:37 عصر
ولی من در فرم 1 یک TexBox گذاشتم و بعد با کدهایی که اقای رضایی گفتند در فرم 2 فرم 1 را تعریف کردم سپس مقدار Textbox را به "Test" تغییر دادم و در همان لحظه مقدار آن را ملاحظه کردم

اگر بخواهید سورس آنرا برایتان می فرستم.

البته روش آقای محمدی نیز بخوبی جواب می دهد و تنها مشکل آن همان اشغال کردن حافظه می باشد.در ضمن آقای محمدی مشود کمی بیشتر در مورد hASH tABLE توضیح دهید.

با تشکر - امیر