نمایش نتایج 1 تا 29 از 29

نام تاپیک: مشکل در جانمایی فریم با کدنویسی

  1. #1
    کاربر دائمی آواتار mohammadsaleh
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران
    پست
    544

    مشکل در جانمایی فریم با کدنویسی

    سلام دوستان
    برای تنظیم کنترلها در فرم با استفاده از خواص left- top-with-hight مکان نسبی کنترلها در فرم را می توان تعیین کرد
    اما رفتار کنترل فریم کمی عجیب است. در صورتیکه بخواهیم ان را با کنترل دیگر در تراز چپ قرار دهیم به جای انتقال به مکان مورد نظر فقط اندازه ان بزرگ می شود. حتی اگر مکان دکمه ها را نیز با این خواص نسبت به کنترلهای دیگر تنظیم کنیم مشکل حل نمی شود
    خلاصه مطلب اینکه اگر بخواهیم اندازه فریم و دکمه های ان و نیز مکان قرار گیری ان را نسبت به یکی از کنترلهای برنامه تنظیم کنیم با استفاده از روشهای معمول نمیشود. دوستان اگر تجربه ای در این زمینه دارند ممنون خواهم شد راهنمایی بفرمایند
    فایل های ضمیمه فایل های ضمیمه

  2. #2

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    این فریم که نوشتین این شبهه رو پیش میاره که منظور object frame هست، در حالی که کنترلی که شما استفاده کردین option group هست.

    این کنترل در واقع یک container برای کنترلهای داخلی اش هست و parent اونها حساب میشه.

    این رفتار که میبینین by design محسوب میشه، به این صورت که کنترلهای داخلی اون نمیتونن تماما یا بخشی شون خارج از مرزهای parentشون باشن، برای همین اگر نترلهای درونی رو جابجا یا resize کنین مرزهای فریم خودکار طوری تنظیم میشن که کنترلها حتما درونش باقی بمونن (اگر لازم باشه).
    از اون ور هم میتونین بگین: مرزهای فریم نمیتونه کنترلهای داخلش رو قطع کنه یا بیرون اونها باشه.

  3. #3
    کاربر دائمی آواتار mohammadsaleh
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران
    پست
    544

    نقل قول: مشکل در جانمایی فریم با کدنویسی

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

  4. #4
    کاربر دائمی آواتار mohammadsaleh
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران
    پست
    544

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    نمونه زیر راه حلی است که به نظر می آید نیاز من رو برآورده می کنه
    فایل های ضمیمه فایل های ضمیمه

  5. #5

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    برنامه پیوست رو دیدم و روش رو درست رفتین، یعنی اول باید موقعیت optionها رو جابجا کنین (چون در صورت نیاز فریم خودش رو تنظیم میکنه با موقعیت اونها)
    و دست آخر موقعیت و اندازه فریم رو (که چون شما اون رو Transparent کردین نیازی نیست)

    اونجور که من متوجه شدم هدف شما بیشتر navigation هست تا انتخاب (با توجه به اینکه از چک باکس یا Option استفاده نکردین)
    اگر اینجور هست میتونین روی navigation control یا tab control هم فکر کنین.

    از نظر تنظیمات ظاهر دستتون روی navigation control بازتر هست و customization بیشتری داره.

  6. #6

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    من براتون یک نمونه درست کردم با این دو کنترل که صحبتش رفت:
    1.PNG

  7. #7

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    اگر همین نمونه براتون مفید هست دیگه مشکل align کردن هم ندارین چون با زیرمجموعه هاشون روی هم یک group تشکیل میدن (برخلاف option group)

    وگرنه کدتون هنوز جای کار و اصلاح داره که در صورت تمایل میتونم کمکتون کنم
    فایل های ضمیمه فایل های ضمیمه

  8. #8
    کاربر دائمی آواتار mohammadsaleh
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران
    پست
    544

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    تشکر از حسن توجه و نظرتون
    البته اندازه فریم مهم هست. چون فریم در سمت راست فرم قرار می گیره و افزایش اندازه آن فرم را به هم می ریزه . در خصوص navigation هم من تا حالا از این کنترل استفاده نکردم.
    احتمالا متوجه منظور اصلی من شده باشید.
    گروپ یا نویگیشن در سمت راست فرم ماکزیمایز شده باید قرار بگیره و اندازه اون با یکی از کنترلها مثلا یک باکس بشه و همزمان عرض دکمه ها با اندازه باکس تنظیم بشه .
    طوری که مثلا اگر 5 دکمه هست عرض هریک از دکمه یک پنجم کمی کمتر از باکس بشه طوری که پنج تا دکمه روی باکس در سمت راست دیده بشه

  9. #9
    کاربر دائمی آواتار mohammadsaleh
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران
    پست
    544

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    Capture.PNG

    یه چیزی شبیه به این شکل باید از کار دربیاد

  10. #10

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    پس navigation control مناسب هست؟

    خبر بدین درست گرفتم مطلب رو یا نه:
    1- یک navigation control با n باتن داریم (n متغیر هست)
    2- کنترل قبلا ساخته شده (رنگ و شکل باتن ها و کپشن اونها و ...)
    3- یک textbox معین هست که عرض مشخص و فیکس شده داره
    4- این کنترل باید top-right فرم قرار بگیره و عرضش با textbox یکی بشه
    5- textbox بیاد زیر این کنترل
    6- عرض باتن ها یکسان و با یک فاصله کم (و یکسان از هم)

    درسته این؟

  11. #11
    کاربر دائمی آواتار mohammadsaleh
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران
    پست
    544

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    سلام دقیقا همین رو میخوام

  12. #12

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    برای رسیدن به خواسته شما باید کارهایی رو navigation control انجام بدیم که مستقیما در محیط design نمیشه و نیاز به آموزش و توضیح داره.

    Time ...

  13. #13
    کاربر دائمی آواتار mohammadsaleh
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران
    پست
    544

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    ممنون استاد

  14. #14
    کاربر دائمی آواتار mohammadsaleh
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران
    پست
    544

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    ضمن اینکه منتظر زحمت شما هستم. یک اشکالی که در نویگیشن در این فایل دیده میشه اینه که با کلیک روی هریک از دکمه کنترلهای روی فرم می لرزند. البته در تب کنترلی که گذاشتید این اشکال خیلی محسوس نیست

  15. #15

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    پرش (flicker) بیشتر بخاطر داشتن کنترل های فرمت شده (شکل غیر مستطیل یا سایه دار و ...) یا داشتن تصویر پس زمینه است.
    همینجور کنترل هایی که مرزهاشون همپوشانی دارن.

    باتن های ساده استفاده کنین، باحتمال زیاد مشکل ندارین.

  16. #16

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    مقدمات:

    Navigation Control یک کنترل ترکیبی هست که برای تنظیم اون باید رفتارش رو بشناسیم.
    درون خودش تعدادی کنترل از نوع Navigation Button داره که یکی از اونها کارش فقط اضافه کردن باتن های دیگه است و هیچ property قابل ویرایش نداره!
    همچنین در design view هم قابل حذف نیست.

    وقتی navigation control به فرم اضافه میشه همراه خودش یک subform اضافه میکنه که ایندو با هم stacked layout هستن.
    این subform اسم ثابت داره Navigation Subform و این هم در design view قابل حذف نیست حتی اگر layout رو Remove کنین.

  17. #17

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    هر دو کنترل که بالا بحثش رفت در این مسئله خاص دست و پاگیر هستن و باید حذف بشن.
    برای اضافه کردن باتن جدید کافی هست روی نویگیشن کنترل راست کلیک و بعد insert button رو انتخاب کنیم.

    این دو کنترل رو در تصویر زیر میبینید:
    form1_0.PNG

  18. #18

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    قرارداد:

    1- نام نویگیشن کنترل در این نمونه NC است.
    2- باتن ها به ترتیب از سمت چپ NB1 و NB2 و ... اسم گذاری شدن.
    3- textbox که قرار هست زیر NC جا بگیره اسمش TB0 هست.

    چون از این نامگذاری در کدها استفاده شده در تغییر اونها باید دقت کرد که کدها هم متناظر با اونها ویرایش بشه.
    آخرین ویرایش به وسیله mazoolagh : پنج شنبه 30 آبان 1398 در 18:41 عصر

  19. #19

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    همه کارها با کدنویسی خالص قابل انجام نیست (یا ارزش نداره!)
    بعضی مراحل کار باید در design view و دستی انجام بشه.

    برای هر مرحله کار نتیجه اون در دیتابیس پیوست با یک شماره بعد از اسم فرم (Form1) اومده که بعنوان مرجع یادگیری قابل استفاده است.
    شروع کار از Form1_0 هست که تصویرش بالا اومده و نتیجه نهایی Form1_4 هست.

  20. #20

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    مرحله اول حذف نویگیشن باتن [Add New] و navigation subform هست.

    حذف باتن ساده است ولی برای حذف سابفرم اول باید اون رو از navigation control جدا کنیم.

    برای این کار از کد زیر کمک میگیریم:

  21. #21

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    Public Sub ResetNavigationControl(FormName As String)
    DoCmd.OpenForm FormName, acDesign, , , , acHidden
    Dim frm As Form
    Set frm = Forms(FormName)
    Dim NC As NavigationControl
    Set NC = frm("NC")
    NC.HorizontalAnchor = acHorizontalAnchorRight
    NC.VerticalAnchor = acVerticalAnchorTop
    NC.Properties("NavigationSubform") = ""
    Dim NB As NavigationButton
    For Each NB In NC.Controls
    If NB.Caption = "[Add New]" Then
    DeleteControl FormName, NB.Name
    Exit For
    End If
    Next
    DoCmd.Close acForm, FormName, acSaveYes
    Set frm = Nothing
    End Sub

  22. #22

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    حالا هم باتن غیرضروری حذف شده و هم اینکه میتونیم navigation subform رو دستی حذف کنیم.

    نتیجه کار به شکل زیر هست:
    form1_1.PNG

  23. #23

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    حالا دستی به سر و صورت NC میکشیم (در صورت تمایل) و TB0 رو هم اضافه میکنیم:

    ضمیمه 150984

  24. #24

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    گام بعدی تنظیم پهنای NC با TB0 هست که از کد زیر برای اینکار استفاده میکنیم.

    توضیح:
    TWIP : واحد اندازه گیری اندازه ها در فرم ها و ریپورتهاست و هر اینچ 1440 twip هست (طبق تعریف)
    اینجا ابعاد رو به سانتی متر میدیم پس به 2.54 تقسیم میکنیم.

    ButtonSpacing : فاصله بین باتن ها بر حسب سانتی متر

  25. #25

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    Option Compare Database
    Option Explicit
    Const TWIP As Single = 1440 / 2.54
    Public Sub SetWidth(FormName As String, ButtonSpacing As Single)

    DoCmd.OpenForm FormName, acDesign, , , , acHidden

    Dim frm As Form
    Set frm = Forms(FormName)

    Dim NC As NavigationControl
    Set NC = frm.Controls("NC")


    Dim ButtonsCount As Integer
    ButtonsCount = NC.Controls.Count

    Dim TB As TextBox
    Set TB = frm.Controls("TB0")

    Dim WNB As Single
    WNB = (TB.Width - (ButtonsCount - 1) * ButtonSpacing * TWIP) / ButtonsCount

    Dim NB As NavigationButton
    Dim i As Integer
    For i = 1 To ButtonsCount
    Set NB = frm.Controls("NB" & i)
    NB.Width = WNB
    NB.TopPadding = 0
    NB.BottomPadding = 0
    NB.LeftPadding = ButtonSpacing
    NB.RightPadding = IIf(i = ButtonsCount, 0, ButtonSpacing * TWIP)
    Next

    NC.Width = TB.Width

    DoCmd.Close acForm, FormName, acSaveYes
    Set frm = Nothing
    End Sub

  26. #26

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    حالا فرم ما به صورت زیر در اومده:

    form1_3.PNG

  27. #27

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    در گام آخر NC و TB0 رو Stacked Layout میکنیم :
    در design view اول این دو رو select میکنیم و بعد از منوی arrange گزینه stacked


    و مجموعه را به سمت بالای راست فرم میبریم

    form1_4.PNG

  28. #28

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    خب
    کار ما اینجا تموم میشه

    دقت کنین که چون anchoring مجموعه NC,TB0 روی TopRight هست با تغییر اندازه فرم خودکار همونجا هست و نیازی به کد نویسی نیست!
    فایل های ضمیمه فایل های ضمیمه

  29. #29
    کاربر دائمی آواتار mohammadsaleh
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران
    پست
    544

    نقل قول: مشکل در جانمایی فریم با کدنویسی

    استاد خیلی زحمت کشیدید و وقت گذاشتید برای این کار که مطمئنم دیگران دوستان هم از این آموزش عالی بهره خواهند برد. در حقیقت شما چند موضوع را هم زمان با هم به ما آموختید. موفق باشید.


تاپیک های مشابه

  1. پاسخ: 4
    آخرین پست: یک شنبه 22 بهمن 1396, 09:47 صبح
  2. پاسخ: 0
    آخرین پست: پنج شنبه 19 تیر 1393, 10:44 صبح
  3. گفتگو: راهنمایی در مورد زبان برنامه نویسی
    نوشته شده توسط caspianhero در بخش C#‎‎
    پاسخ: 12
    آخرین پست: دوشنبه 22 خرداد 1391, 14:56 عصر
  4. پاسخ: 4
    آخرین پست: دوشنبه 14 تیر 1389, 12:05 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •