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

نسخة كاملة : محاذاة حقل المجموع تحت عمود الإجمالي ..!!
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
اصدقائي .. يعني و الله تعبت و انا حاول خلي الـ lebal.text تحت عمود الاجمالي بالداتا غريد فيو بشكل برمجي و عملتها بشكل يدوي اللي يصير إنو بس انقلت المشروع عحاسوب تاني ترجع تصير الـ lebale  تحت عمود تاني ...
بتمنى يكون الأمر واضح لإلكون .. و شكرا لاهتمامكون ...
يا حلا،
فين مشروعك عشان أفهم اكثر وأعدل في الكود.
(25-05-16, 08:42 PM)الوادي كتب : [ -> ]يا حلا،
فين مشروعك عشان أفهم اكثر وأعدل في الكود.

صديقي الوادي .. عندي بالكمبيوتر الليبل فيها جمع عمود المبلغ و القسط ... بس انقل المشروع عحاسوب تاني بتصير الليبل تحت عمود التاريخ ... حاولت اني اعملها برمجيا ما مشي الحال ...
انا كاتبي :
LMoney.left=500
لكن يختلف الوضع مع النقل لحاسوب تاني .. ليش ما بعرف ..
يا حلا،
ليه ما وضعت المشروع، جرب هذا الكود
PHP كود :
Dim columnIndex As Integer 2
Dim w 
As Integer = (From x As DataGridViewColumn In DataGridView1.Columns Where x.Index columnIndex Select x.Width).Sum
Label1
.Left DataGridView1.Left DataGridView1.RowHeadersWidth w
Label1
.Width DataGridView1.Columns(columnIndex).Width 
صديقي الوادي .. اعذرني .. ما حطيت المشروع لأنو فيه تخبيص كتير ...
يا حلا،
أهم شي مشي الحال بالكود.
بصراحة ماشي الحال .. حتى بحاسوبي صار يعطي انحراف .. يعني انا غيرت بالقيم و مامشي الحال .. و بشكرك عجهودك ..
يا حلا،

هذه مشكلة اللي ما يضع مشروع ولو بسيط، عشان أعرف أسلوبة بالبرمجة وأعطيه حل يناسبه.
الكثير ممكن وضعوا مشروعهم انحلت مشكلة مشروعهم بأول جواب.
طيب رح حط مثال عاللي بدي ياه ..

ارفقت لك مثالا كما اعمل على المشروع صديقي الوادي
يا حلا،
أول شيء لازم تصلح بعد اعدادت الفورم.

اذا كانت النية لجعل الداتاجريدفيو ذات واجهة من اليمين لليسار RightToLeft فالأفضل تكون إعدادت واجهة الفورم من اليمين لليسار عن طريق الخاصية RightToLeft وRightToLeftLayot معاً، طبعاً الأدوات سوف ترث هذه الإعدادات تلقائيا.
الآن يجب ضبط RightToLeftLayot على القيمة Yes (وهذا السبب الأول للمشكلة)

اذا كانت النية عدم ظهور بعض الأعمدة فلا داعي لقرائتها من الأساس
بسبب اخفاء بعض الأعمدة تسبب في ارباك عمل الكود اللي وضعته في ردي السابق (وهذا السبب الثاني للمشكلة)

الأفضل أن يكون وضع نمط عرض العمود الأخير (الظاهر طبعاً) من النوع (Fill) من خلال خصائص العمود وليس يدويا ولكن بشكل استثناءي لمشروعك يمكن وضع هذا الكود بعد أكواد اضافة الأعمدة في الداتاجريدفيو
PHP كود :
       DG1.Columns((From x As DataGridViewColumn In DG1.Columns Where x.Visible).Last.Index).AutoSizeMode System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill 

وهذا الكود بعد التعديل لاحتساب الأعمدة الظاهرة التي تسبق العمود المقصود للمحاذات تحته
PHP كود :
Private Sub DG1_ColumnWidthChanged(sender As ObjectAs System.Windows.Forms.DataGridViewColumnEventArgsHandles DG1.ColumnWidthChanged
    Dim columnIndex 
TryCast(senderDataGridView).Columns("القسط").Index
    Dim w 
As Integer = (From x As DataGridViewColumn In TryCast(senderDataGridView).Columns Where x.Index columnIndex And x.Visible Select x.Width).Sum
    LSumMoney
.Left sender.Left sender.RowHeadersWidth w
    LSumMoney
.Width sender.Columns(columnIndex).Width
End Sub 

أنصح بعدم استخدام هذا الأسلوب في محاذاة اداة إظهار الناتج أو غير ذلك لأنها سوف تسبب ارتباك للبرنامج عند العميل لو قام بتصغير حجم الفورم وظهور مسطرة التمرير للداتاجريدفيو فتكون المحاذاة مختلفة تماماً.

أنصح بعدم تجهيز اعمدة الداتاجريد بشكل يدوي لأنه مرهق وخصوصاً عند القيام بتعديلات على البرنامج فيما بعد وأيضاً ستزيد من تعقيد البرمجة.

عدلت المرفق وعملت Form1 أرجو الإطلاع عليه.
الصفحات : 1 2