منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كيف احل مشكلة نافذة البرنامج التي تختلف في كل شاشة ضروووري
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3
(01-05-14, 12:55 PM)حريف برمجة كتب : [ -> ]افضل حل هو كالتالي :

عند تشغيل البرنامج يحفظ الروزليشن للجهاز ،، ويضعه في متغير .

وتحويل الروزليشن للشاشة كما تحب ان تكون .

وعند اغلاق البرنامج يعيد الروزليشن للجهاز كما كانت .

مع احترامي

لا احب هذا الحل ابدا

انا لا اقبل من اي برنامج ان يقوم بتغيير الرسلوشن على هواه والكثير ايضا يفكرون مثلي

هذا حل ابدا مو عملي انظر للبرامج الاحترافية امثال الفوتوشوب وغيره ، هل تراها تفعل هذا الشيئ !!

في الحقيقة انا مااعرف حل لهلمشكلة لانها ماواجهتني اصلا

انا اشوف لما اصمم برنامج يكون بشكل عادي مع اي شاشة اخرى !!!
غالبا الكود الدقيق لن يغير في Screen Resolution ......عموما و للعلم فقط ......الاشياء التي تتأثر ب هذا الأمر يمكن ترتيبها كالأتي

Loaction
Size
Font
Image

لذلك يجب أن تؤخذ جميعها ف الاعتبار عند كتابة اي كود للتعامل مع Screen Resolution
(01-05-14, 12:55 PM)حريف برمجة كتب : [ -> ]افضل حل هو كالتالي :

عند تشغيل البرنامج يحفظ الروزليشن للجهاز ،، ويضعه في متغير .

وتحويل الروزليشن للشاشة كما تحب ان تكون .

وعند اغلاق البرنامج يعيد الروزليشن للجهاز كما كانت .



شكرا يا اخوان على التفاعل .. وجزيتم خيرا
و هذا ما اقصده مع اني حاولت ضبط الخاصيتين Anchor & Docking لكن تقوم بلخبطت الأدوات مع اني وازنتها هل في حل آخر

قبل التكبير


بعد التكبير


يبدو انك لم تقم بعمل Docking or Anchor لل TabControl
(02-05-14, 02:22 AM)الشاكي لله كتب : [ -> ]يبدو انك لم تقم بعمل Docking or Anchor لل TabControl

اخي لقد جربت وفعلتها ولكن يتمدد فقط التاب ،، واذا فعلتها ببقية الادوات تبدأ بتلخبط البرنامج كامل في الادوات ببعضها البعض مع العلم ان الوزنية وسطتها ..

الم تواجهك هذه الحاله ؟ انك لا تستطيع التكبير ويتكبر البرنامج بشكل طبيعي مثل البرامج الأخرى ؟
الواضح من الصورة انك تسخدم فورم من مكتبة مختلفة عن الفورم الخاص ب مايكروسوفت......و اعتقد أن هذا هو سبب المشكلة.......و للتأكد من ذلك عليك تطبيق نفس الكود مع الفورم العادي الموجود في الفيجوال استوديو لتري هل تحدث نفس المشكلة معك أم لا
بعد إذن الإخوة الكرام Blush

وجدت موضوع بالمنتدى القديم تحت اسم : مثال للحفاظ على تنسيق الاداوت اثناء تكبير الفورم في الفيجول دوت نت 2008
صاحب الموضوع أخونا : ramilove رقم الموضوع 57933


مضمون المشاركة :

إقتباس :بسم الله الرحمن الرحيم

هذا مثال للحفاظ على تنسيق الاداوت اثناء تكبير الفورم وان شاء الله يتبرع احد الاخوة المبرمجين بتطويره للاحسن بحيث الاداوت الي داخل ادوات تكبر ايضا وخصوصا التكيست بوكس .

صورة المثال قبل تكبير الفورم



صورة المثال بعد تكبير الفورم



المثال في المرفقات

في امان الله .

لتحميل المثال : من هنا

لا تنساه من صالح الدعاء Shy
بالضببببببببببط هذا ما اقصده .. لكن المود ليس كامل فبعض الادوات لا تكبر مثل Tabpage

وادوات اخرى ،، هل من حل ؟
أعتقد الفكرة التالية ربما تكون مفيدة لك في ما تريده...لكن عليك أن تقوم بكتابة دوال أو روتين لكل أنواع الكونترول لديك في الفورم
لأن بعض الكونترول عبارة عن Nested Control و بالتالي عليك ان تكتب روتين يناسب كل كونترول علي حده
متهيألي من الأفضل أن تكتب مكتبة Library لعمل Scale لكل الكونترول الموجودة في الدوت نت


كود :
Public Class Form1

    Private scaleFactor As New SizeF(2.35F, 2.35F)

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.AutoScaleMode = Windows.Forms.AutoScaleMode.Dpi
    End Sub

    Protected Overrides Sub ScaleControl(factor As SizeF, specified As BoundsSpecified)
        MyBase.ScaleControl(factor, specified)
        scaleFactor = New SizeF(scaleFactor.Width * factor.Width, scaleFactor.Height * factor.Height)
        ScaleTabControl(Me, scaleFactor)
    End Sub

    Private Sub ScaleTabControl(form As Form, factor As SizeF)

        Dim frm As Form = form.FindForm
        For Each ctrl As Control In frm.Controls
            If TypeOf ctrl Is TabControl Then
                ctrl.Width = CInt(Math.Round(ctrl.Width * factor.Width))
                ctrl.Height = CInt(Math.Round(ctrl.Height * factor.Height))
                ctrl.Location = New Point((ctrl.Location.X * factor.Width), (ctrl.Location.Y * factor.Height))
            End If
        Next

        ' The panels (tabPages) shall adjust itself automatically so the current code is not required
        'For Each Panel As Panel In tabControl.TabPages
        '    Panel.Width = CInt(Math.Round(Panel.Width * factor.Width))
        '    Panel.Height = CInt(Math.Round(Panel.Height * factor.Height))
        '    Panel.Location = New Point((Panel.Location.X * factor.Width), (Panel.Location.Y * factor.Height))
        'Next

    End Sub

End Class


عليك أيضا أن تقوم بكتابة دوال لتغيير الفونت و الصور معا
الصفحات : 1 2 3