واضح آرشیو وب فارسی:سایت ریسک: View Full Version : کدنویسی روی پروژه های Mdi ! 3Dmajid05-11-2008, 06:55 PMمن دو تا فرم درست کردم و در فرم دوم یه track bar گذاشتم ... به طوری که کاربر توسط این track bar میتونست width فرم اول رو به اندازه ی خودش تنظیم کنه. خوب این که خیلی راحت کار کرد. ولی .... امروز همین کار رو کردم با این تفاوت که برای این دو تا فرم یک parent هم تعریف کردم. ولی کد کار نکرد ! ولی این parent نباشه کار میکنه ! آیا طرز کد نویسی روی پروژه های mdi تکنیک خاصی داره ؟ لطفا راهنمایی کنید. _H2_06-11-2008, 07:32 PMسلام من دو تا فرم درست کردم و در فرم دوم یه track bar گذاشتم ... به طوری که کاربر توسط این track bar میتونست width فرم اول رو به اندازه ی خودش تنظیم کنه... فرم اول کیه؟ همان فرمی کهtrackbar روی ان قرار دارد؟ لطفاً کدی که گفته اید کار کرده و کدی که کار نکرده را بگذارید، چوندرست متوجهمنظورتان نشده ام. 3Dmajid07-11-2008, 08:40 PMبهتر توضیح میدم : دو تا فرم درست کردم (form1,form2) روی form2 یک trackbar گذاشتم که کاربر میتونست اندازه ی width فرم اول رو تغییر بده. توی این کار از هیچ فرم parent استفاده نکردم و خیلی راحت کار کرد. ولی ... تو پروژه ی بعدی همین کار رو تکرار کردم با این تفاوت که یک فرم parent هم ساختم و اون دو تا فرم رو بهش نسبت دادم، ولی نشد ! _H2_08-11-2008, 12:03 AMسلام متاسفانه گمانم شما از روش های ضد OOP موجود در VB 6 در VB 9 استفاده کرده اید... وجود این قابلیت های برای افرادی که از VB 9 آمده اند خوب است ولی برای VB 9 مایه ننگ و مسخره است. شما باید اشاره گر هر شی را برای دستکاری داشتهخ باشید و اینکه از نام کلاسس آن استفاده کنید اصلا و ابداً صحیح نیست. اشاره گر شی در VB در واقع همان متغییری است که کلاسس با آن New شده، شما اگر این متغییر را به هرجا انتقال دهید میتوانید باشی اش هر کاری انجام دهید. در form2 شما باید یک متغییر عمومی به form1 داشته باشید. یعنی در form2 کد زیر را اضافه کنید !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! حالا فقط باید متغییر SubFormHandler را پر کنید، این متغییر را باید جایی مقدار دهی کنید Form1 را New کرده اید و در واقع هم اشاره گر Form1 و هم Form2 را دارید.... form2handler.SubFormHandler = form1handler مثلاً اگر form1 را از داخل form2 میسازید، کدی شبیه این خواهد شد. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! و یا اگر form1 و form2 را هر دو در یک جای مشخص میسازید (هرجایی، مثلاً در همان parent) کدی شبیه این نیاز دارید. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! درنهایت کلاً انجام همچین کاری صحیح نیست و در نهایت فقط باید فرمهای child شما به فرم والد متصل باشند و خودشان مستقلاً نباید با هم کاری داشته باشند، کاری که انجام میدهید اصلاً مطابق با اصول برنامه نویسی پروژهای متوسط و بزرگ نیست و در برنامه های کوچک هم انجامش منطقی نیست. کد نویسی بی قائده و قانون موجب میشود بعد از مدت کدی اسپاگتی مانند داشته باشید و هر چیزی از این سر کد آن سر کد را متاثر کند و در نهایت برنامه نویس اصلی را هم گیج و سردرگم کند، توصعه و اشکال یابی این برنامه هم میتوانید بسیار طاقت فرسا باشد. 3Dmajid08-11-2008, 07:05 PMاز راهنماییتون ممنون. واقعا سطح بالا صحبت میکنید ... سعی میکنم بفهمم چی میگید. 3Dmajid08-11-2008, 07:44 PMاگه بگم چیزی متوجه نشدم چی کار میکنید ؟ _H2_08-11-2008, 10:32 PMسلام اگه بگم چیزی متوجه نشدم چی کار میکنید ؟ چه کار کنم خوبه؟ میخواهید سرم را بکوبونم به مانیتور؟ (البته مانیتور مانیتور که نه! یک چیز ارزان تر که ورشکست نشم!) همه ما وقتی به دنیا می آییم، صفر صفر هستیم، ولی در طی زمان و با پشتکار فیزیک کوانتم را هم یاد میگیرم ! خیالتان راحت و آسوده بخوابید! در بین انسانها علامه مادرزاد نداریم! بقیه صحبت ها را ول نکنید، نخواستیم، این ها را یکبار دیگر بخوانید. در form2 کد زیر را اضافه کنید !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! اگر form1 و form2 را هر دو در یک جای مشخص میسازید (هرجایی، مثلاً در همان parent) کدی شبیه این نیاز دارید. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! اگر باز متوجه نشدید باید یک نمونه کد-پروژه برایتان آپلود کنم. (البته این هفته زمان اپدیت یک برنامه ام است و باید حجم زیادی کد را حاضر کنم... نتیجتاً می افتد برای پنجشنبه، جمعه... :11:) 3Dmajid08-11-2008, 11:25 PMSubFormHandler چیه ؟ _H2_09-11-2008, 01:49 AMسلام SubFormHandler چیه ؟ یک متغییر، شما اسمش را Gholi بگذارید! این متغیر شی form1 را نگه میدارد. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! Form1 و String در واقع مثل یک نقشه مهندسی هستند، که چیدمان قطعات در RAM و وظایف را مشخص میکنند، همواره منفرد هستند، فقط یکی، ولی عملیاتی نیستند. دقیقاً مثل یک نقشه مهندسی و کامل یک ماشین، که چیدمان قطعات و وظایف را مشخص میکند، نقشه واحد است و مثلاً نقشه مهندسی پیکان زرد با پیکان قرمز تفاوتی نمیکند، ولی عملیاتی نیست، (همانطور که بارها گفته ام) به این معنی که شما نمیتوانید سوار کاغذ نقشه شوید و انتظار داشته باشید راه رود، نمیتوانید دستور دهید، درش باز شود، نمیتوانید ... باید از روی نقشه کاغذی یک یا چند نمونه واقعی بسازید، آنگاه نمونه عملی را میتوانید در پارکینگ پارک کنید، درش را باز کنید، فرمان حرکت دهید، فرمان توقف بدهید، فرمان .... این دستور ساختن نمونه جدید در دات نت با کلمه New صورت میگیرد. آن نقشه همان کلاسس است و بعد از New یک شی واقعی میشود. اشیای واقعی ساخته شده از روی یک کلاسس مشخص، میتوانند مستقل عمل کنند، مثل ماشین های پیکان ساخته شده از روی یک نقشه، با وجود نقشه واحد، بعد از ساخت هر کدام میتوانند تحت قابلیتهای نقشه اولیه مستقلاً عمل کنند، یکی در حرکت باشد و یکی در توقف .... مجدداً به کدی که چند خط بالاتر نوشته ام نگاه کنید... Form1 واحد است و چیزی برای اجرا ندارد ولی x و y شی حقیقی هستند. شما به شی واقعی که وجود دارد میتوانید فرمان دهید و انتظار اطلاعت داشته باشید نه به یک کلاسس یا نقشه غیر واقعی. مفاهیم اصلی شی گرایی و وراثت و پلی مورفیزم را به سادگی میتوانید در طبیعت و دنیای غیر برنامه نویسی پیدا کنید، در اصل تفکر پایه این مفاهیم پیشرفته برنامه نویسی یک نوع کپی برداری طبیعت واقعی است. ( VB 6 دستورات صحیحی مثل این را قبول داشت... Dim x As New Form1 x.Show ولی متاسفانه متاسفانه متاسفانه VB 6 که از OOP (شی گرایی) پشتیبانی نمیکرد، دستورات مایه خجالتی مثل Form1.Show را مجاز میدانست، همچنان برنامه نویسان دیگر زبانها VB کارها را مسخره میکنند، به علت وجود دستور افتضاح و صد در صد ضد OOP مثل Form1.Show .... :41: از آن بدتر اینکه مایکروسافت دستورات افتضاحی مثل این را برای کمک به VB 6 کارها در VB 7-8-9 حذف نکرد :13: و همچنان این لکه ننگ وجود دارد.:11: البته vb 7-8-9 به علت وجود دات نت در ذات نمیتوانند از OOP تخطی کنند و دستور اشتباه فوق را هم به کمک کلاسسی در فضای My و با عضو Shared ای انجام میدهند، وگرنه اگر کد را در #C وارد کنید و یا VB را بدون فضای My کامپایل کنید، به مجرد استفاده از کلاسس برای دسترسی به اعضا یش با خطا سینتکسی مواجه خواهید شد و جلوی کامپایل گرفته میشود. ) 3Dmajid17-11-2008, 09:43 PMاز راهنماییتون خیلی ممنون. اگه امکان داره در صورتی که وقت کردید یه پروژه ی ساده درست کنید و برام آپلود کنید تا بهتر یاد بگیرم ... برای چی کار با فرم های MDI در vb 2008 اینقدر متفاوت شده ؟ یه جورایی میشه گفت نسبت به vb 6 سخت تر شده و کسی که از vb 6 داره به vb 2008 سفر میکنه، گیج میشه. _H2_21-11-2008, 03:50 PMسلام برای چی کار با فرم های MDI در vb 2008 اینقدر متفاوت شده ؟ یه جورایی میشه گفت نسبت به vb 6 سخت تر شده و کسی که از vb 6 داره به vb 2008 سفر میکنه، گیج میشه به نظر من که خیلی ساده تر شده آیا پیچیده است؟ !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! اون مبحث مخالف شی گرایی را هم که VB 6 ساپروت میکده، اگر دقت بیشتری کنید به راحتی متوجه پوچ بودم و غیر عقلانی بودنش میشوید!!! چرا؟ شما 3 دکمه روی پنجره خود میگذارید! با نام متغییر های Button1 و Button2 و Button3 برای تغییر متن یا رنگ هر دکمه دستور مثل این را میدهد "Button2.Text = "a حالا اگر کسی از شما مشابه همین سوال را بپرسد و بگوید چرا نمیتوانم بنویسم "Button.Text = "h و خود زبان برنامه نویسی از روی جادو و جنبل متوجه شود منظورم کدام دکمه بوده شما چه جوابش را میدهد؟ آیا دستور Button1.Text منطقی تر و مشخص تر و شفاف تر تر است و امکانات بیشتری به شما میدهد یا فکر میکنید دستور Button.Text منطقی تر است؟؟؟؟ form هم یک شی است مثل Button همانطور که هر پنجره میتوانید چندین button داشته باشد، هر برنامه یا mdi میتواند چندین Form داشته باشد (آیا photoshop را ندیده اید؟) پس چطور انتظار دارید که با نام form و نه نام متغییر بتوانید form را دستکاری کنید؟؟؟ کاری با صحیح و غلطش ندارنم، خودتان باشید کدام دستور منطقی است؟ !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! اگه امکان داره در صورتی که وقت کردید یه پروژه ی ساده درست کنید و برام آپلود کنید تا بهتر یاد بگیرم ... دو نمونه برایتان اپلود کردم... نمونه اول آن چیزی است که خواسته اید و بنابر چند خط آخر پست 4 با قوانین VB 9 سازگار است ولی با قوانین برنامه نویسی ساختار یافته چندان مطابق نیست. نمونه دوم هم یک مثال ساده است که هم با vb 9 سازگار است و هم با قوانین برنامه نویسی ساختار یافته rapidshare.com/files/165934611/MDI.zip سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 716]