PDA

View Full Version : طراحی form



parsamanesh
جمعه 15 آبان 1383, 12:39 عصر
سلام
من میخواهم فرمی طراحی کنم که دو قسمت باشد (تقریبا شبیه پنجره MyComputerدر Winxp) یعنی در سمت چپ انتخاب گزینه (دکمه، لینک یا ...)و در قسمت راست مطالب مربوط به آن گزینه. مثلا در یک برنامه "ثبت نام مدرسه" با انتخاب کارنامه در سمت چپ ، فیلدهای مربوطه در سمت راست نمایش داده شوند و با انتخاب ثبت نام
فیلدهای مربوط به آن جایگزین شوندو الی آخر...
البته قبلا برای هر کدام از موارد فوق فرمی جدا تهیه کرده بودم (Child) که با انتخاب هر گزینه فرم مربوط باز میشد (در فرم اصلی MDI )و همین سبب شلوغ شدن برنامه میشد ولی حالا می خواهم در هر لحظه اطلاعات یک گزینه نمایش داده شود به صورتی که در ابتدا عرض کردم. اگر کسی راهنماییم کند ممنون میشوم.

Pichidehtarin
جمعه 15 آبان 1383, 19:17 عصر
مثلا در یک برنامه "ثبت نام مدرسه" با انتخاب کارنامه در سمت چپ ، فیلدهای مربوطه در سمت راست نمایش داده شوند و با انتخاب ثبت نام
فیلدهای مربوط به آن جایگزین شوندو الی آخر...

یه فلوچارت حدسی برای برنامه ای که میخواین بسازین میتونه بصورت زیر باشه :
فرم اصلی دارای 1- لیستی از دانش آموزانی که ثبت نام کرده اند (با مشخصات کامل) 2- دکمه هایی برای وارد شدن به قسمت های : کارنامه - واحد های درسی انتخاب شده با برنامه ساعت کلاس ها که مطابق با دانش آموز انتخاب شده رکورد های متغییری رو خواهند داشت (مستلزم استفاده از بانک Master/Details یا فیلتر گذاری) ..........................................
....................................
فکر میکنم تا همینجای کار یه سری طرح ها رو القا کرده باشم بقیه با خودت .

vcldeveloper
شنبه 16 آبان 1383, 02:47 صبح
می تونید فرم اصلی رو به دوقسمت چپ و راست تقسیم کنید (با استفاده از panel) ،
بعد هر یک از قسمتهای مورد نظر رو که باید در panel راست ظاهر بشند در frame های مختلف ایجاد کنید. این frame ها باید بصورت دینامیک در panel راست نمایش داده بشند. به این صورت:
با انتخاب هر گزینه از panel چپ، frame ای که الان در panel راست وجود داره رو مخفی کنید و frame مربوط به گزینه مورد نظر رو بصورت دینامیک ایجاد کنید و نمایش بدید.

parsamanesh
شنبه 16 آبان 1383, 20:27 عصر
با تشکر از راهنمایی دوستان


می تونید فرم اصلی رو به دوقسمت چپ و راست تقسیم کنید (با استفاده از panel) ،
بعد هر یک از قسمتهای مورد نظر رو که باید در panel راست ظاهر بشند در frame های مختلف ایجاد کنید. این frame ها باید بصورت دینامیک در panel راست نمایش داده بشند. به این صورت:
با انتخاب هر گزینه از panel چپ، frame ای که الان در panel راست وجود داره رو مخفی کنید و frame مربوط به گزینه مورد نظر رو بصورت دینامیک ایجاد کنید و نمایش بدید.

میشه توضیح بدین چطوری؟
--آیا منظورتان از مخفی کردن Visible:=false است؟ که اگر این باشد فرمها(فریمها) در حافظه میمانند و برای فرمهای زیاد خوب نیست. همچنین چگونه میتوانیم بصورت دینامیک فریم ایجاد کنیم؟

JavanSoft
شنبه 16 آبان 1383, 21:32 عصر
چرا از PageControl استفاده نمی کنید؟

vcldeveloper
یک شنبه 17 آبان 1383, 03:21 صبح
آیا منظورتان از مخفی کردن Visible:=false است؟ که اگر این باشد فرمها(فریمها) در حافظه میمانند و برای فرمهای زیاد خوب نیست.
این بستگی به کاربرد شما داره. اگه تعداد فریمها کمه یا تعداد کنترلهای داخل اونها زیاد نیست می تونید اونها رو فقط Hide کنید و در هنگام خروج از برنامه اونها رو Free کنید، اما اگه تعدادشون زیاده بهتره اونها رو هربار که فریم جاری تغییر میکنه آزاد کنید و هر دفعه که دوباره بهشون نیاز داشتید اونا رو بسازید.


همچنین چگونه میتوانیم بصورت دینامیک فریم ایجاد کنیم؟


if frameMyFrame <> nil then
frameMyFrame.Show
else
begin
frameMyFrame := TframeMyFrame.Create(MainForm);
frameMyFrame .Parent := pnlFrames;
frameMyFrame .Align := alClient;
frameMyFrame.Show;
end;


البته باید ابتدا فریم خود رو طراحی و ذخیره کنید و یونیت آن را در uses فرم خود قرار بدید. بعدش هم در قسمت private از فرم برای هر فریم یه متغیر تعریف کنید، مثلا در مثال بالا من یه متغیر بنام frameMyFrame: TframeMyFrame تعریف کردم و از اون در کد بالا استفاده کردم.

parsamanesh
یک شنبه 17 آبان 1383, 08:48 صبح
مرسی! :تشویق: