PDA

View Full Version : حرفه ای: باز شدن فرم های برنامه در فرم اصلی به شکل تب های جداگانه



bzdesign
دوشنبه 08 خرداد 1391, 17:55 عصر
سلام دوستان و اساتید محترم ،اخیرا پروژه ی جدیدی به دستم رسیده جهت انجام که یکی از نکات مهم اون اینه که برنامه طوری ساخته بشه که تمام فرم های اون ،وقتی باز میشن ،مثل تب های جداگانه (دقیقا مثل فایل های excell وقتی اجرا میشن ) باز شده و کاربر بتونه همه فرم ها رو توی فرم اصلی ببینه. ممنون میشم اگه تجربیاتتون رو در اختیار بنده و دوستان مشتاق امثال بنده قرار بدید تا همه استفاده کنیم. چون فکر میکنم در طراحی رابط کاربر ، این یکی از مسائل جدید و مهم هست که ممکنه حالا هر کدوم ما باهاش مواجه بشیم. پس چه بهتره از الان به دنبال جواب اون بگردیم. حقیقتش من احساس میکنم کار ساده ای نیست. ولی یه عکس براتون میزارم که منظورمو بهتر متوجه بشید. این عکس نرم افزار حسابداری مینو هست.
87591http://barnamenevis.org/images/misc/pencil.png

M.KH-SH
دوشنبه 08 خرداد 1391, 18:55 عصر
در واقع میخوای مثل خود ویژوال استدیو باشه که هم میتونی کدبنویسی هم طراحی کنی و هم هزار کار دیگه درسته؟

دوست عزیز فکر کنم باید از mdichild استفاده کنی تا بشه همچین کاری رو پیاده سازی کرد

باز دوستان بیشتر وارد تر هستن

hakim22
دوشنبه 08 خرداد 1391, 19:00 عصر
دوست عزیز ، شما می توانید از خاصیت controls در tab استاندارد استفاده کنید.
درون این خاصیت فرمان add را میزنید و در آرگومان نام فرم مربوطه را وارد می کنید . کل همه ی فرم توی تب میاد

M.KH-SH
دوشنبه 08 خرداد 1391, 19:47 عصر
دوست عزیز به گمانم کل یک فرم رو نشه به این صورت اضافه کرد علاوه بر اون هم بستن فرم ها دچار مشکل میشه

اگه منظورتون به این صورت باشه:::

Dim fo As New Form2
TabPage1.Controls.Add(fo)

bzdesign
سه شنبه 09 خرداد 1391, 00:48 صبح
دوستان ممنون که جواب دادید و بسیار لطف کنید ، ولی

با DevComponents طراحی شده ... نیست؟
باید خدمت دوست خوبم عرض کنم که پاسخ خیر هست. این با Dev نیست. من تقریبا هر کامپوننتی رو که فکر کنید باهاش کار کرده دارم. ولی این نیست. و مهم نیست اصلا بدونیم چی هست. چون حتی با کنترل های ویندوز هم میشه این کار رو انجام داد.

دوست عزیز فکر کنم باید از mdichild استفاده کنی تا بشه همچین کاری رو پیاده سازی کرد
دوست خوبم با mdichild نمیشه این کار روانجام داد. این اولین راهی بود که تست کردم. اصلا در این روش ما نمیتونیم فرم ها رو به صورت تب باز کنیم.

دوست عزیز ، شما می توانید از خاصیت controls در tab استاندارد استفاده کنید.
درون این خاصیت فرمان add را میزنید و در آرگومان نام فرم مربوطه را وارد می کنید . کل همه ی فرم توی تب میاد
برادر خوبم میشه لطف کنی این دو خط کد رو بنویسی لطفا ،تا همه ببینیم ؟؟ من که تست کردم جواب نداد. نه این که syntax مشکل داشته باشه. بلکه مسئله ی ارجحیت کلاس ها و کامپوننت ها نصبت به یکدیگر هست. اگر شما بلدی میشه لطف کنی و بزاری عزیزم ؟

دوست عزیز به گمانم کل یک فرم رو نشه به این صورت اضافه کرد علاوه بر اون هم بستن فرم ها دچار مشکل میشه
دوست عزیزم با بخش اول صحبت شما تا الان موافقم ،ولی در جواب بخش دوم فرمایشتون باید عرض کنم که من مسئله ی کنترل نحوه ی بسته شدن فرم ها در حالت تب رو بهش وقوف دارم و از این بابت مشکلی ندارم. منتها گیر من ،و سوال من نحوه ی نمایش اطلاعات فرم ها در تب هست. و این رو هم میدونم که در رابط کاربری metro این مشکل وجود نداره ،چون خودم باهاش کار کردم و خیلی راحت تر از این حرفاست. ولی مشکل من محیط معمولی ویندوز و کامپوننتهای اون هستش.

hakim22
سه شنبه 09 خرداد 1391, 10:23 صبح
به صورت مستقیم نمیشود به یک tabcontrol با کد نویسی فرم اظافه کرد.
یک panel به روی تب اظافه کنید و بعد به درون آن فرم را اظافه می کنید. panel را به صورت (dock.fill) در بیاورید.


Public Class Form1

Sub AddForm(ByVal FormDialog As Form)
FormDialog.TopLevel = False
Panel1.Controls.Add(FormDialog)
FormDialog.Show()

End Sub



Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
AddForm(Form2)

End Sub
End Class

M.KH-SH
سه شنبه 09 خرداد 1391, 20:53 عصر
دوست عزیز به صورت مستقیم هم میشود وصل کرد فقط toplevel رو باید false میکردم

Dim fo As New Form2
fo.TopLevel = False
TabPage1.Controls.Add(fo)
fo.Show()

hakim22
چهارشنبه 10 خرداد 1391, 09:52 صبح
toplevel در کد من هم روی false هستش اما خطایی که میده معنیش اینه که در مورد تب ها فقط امکان اظافه کردن تب وجود دارد.

messi_rezai
شنبه 31 فروردین 1392, 15:51 عصر
خدا خیرت بده حاجی من یه چن ماهی هست دنبالشم حالا این قابلیتو چطوری به برناممون اضافه کنیم؟؟؟

Helpco
دوشنبه 19 تیر 1396, 13:03 عصر
شرمنده زیر خاکی میارم بالا مخواستم ببینم کسی به نتیجه رید چطوری اینکار بکنیم؟

336699
دوشنبه 19 تیر 1396, 16:50 عصر
شرمنده زیر خاکی میارم بالا مخواستم ببینم کسی به نتیجه رید چطوری اینکار بکنیم؟

همون بالا به نتیجه رسیدن که از TabControl استفاده بکنن

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

یک نمونه با تب کنترل به این صورت میشه

prolog96
چهارشنبه 22 تیر 1401, 16:56 عصر
سلام
یه سوال دارم. خیلی زیاد گشتم ولی به نتیجه نرسیدم.
در پست 6 را نگاه کنید . فرم هامون را به همین وسیله وصل میکنیم به تب کنترل. حالا اگه بخوایم به وسیله باتن یک ، فرم یک ، اطلاعات داخل تکست باکس ، کامبو و چک باکس های فرم دوم را بخونیم و بریزیم تو دیتابیس ، چه کاری را باید انجام بدیم .
از روش معرفی فرم و آدرس دهی نام فرم و نام تکست باکس هم انجام دادم ولی تو دیتابیس رکورد میزنه ولی اطلاعات را نمیخونه که ببره تو دیتابیس.

Dim fo As New FrmDevS
fo.TopLevel = False
TabPage5.Controls.Add(fo)
fo.Show()
fo.TxtBxSPr.Focus()

این کدها در فرم اول هست.
از این روش برای چسباندن فرم دوم به فرم اول استفاده کردم .
حتی فوکوس هم نمیکنه. (خط آخر همین کد)

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