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

نام تاپیک: قرار دادن یک خانه DataGridView در حالت Right-to-Left

  1. #1
    کاربر جدید
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    Iran
    پست
    19

    قرار دادن یک خانه DataGridView در حالت Right-to-Left

    سلام
    چطور میشه در DataGridView یک ستون خاص و یا یک Cell خاص رو در حالت Right-to-Left قرار داد، البته در صورتی که مقدار در قسمت Property مقدار Right-to-left برابر با False باشه.
    هدف اصلی من از این کار اینه که در هر ستون یا خانه ای از DataGridView که خواستم بتونم شماره ها رو به فارسی و یا انگلیسی نمایش بدم. اگه روش دیگه ای هم هست بگید.
    تشکر

  2. #2
    کاربر دائمی آواتار hesam_hma
    تاریخ عضویت
    دی 1385
    محل زندگی
    خیلی دور تر از شهر آرزروها
    پست
    265

    DataGridView1.Rows.Item(0).DefaultCellStyle.Alignm ent = DataGridViewContentAlignment.MiddleLeft

  3. #3
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    فکر نمیکنم چنین قابلیتی وجود داشته باشه که یک سلول خاص رو Right to Left کنه. (مگر اینکه خودتون یک کلاس رو به ارث برسونید)

  4. #4
    با کد زیر میشه این کارو برای سلول 0 و 0 کرد:
    DataGridView1.Item(0,0).Style.Alignment=DataGridVi  ewContentAlignment.MiddleRight
    البته ّAlignment با Right to Left فرق داره اما کمی کاره اونو می کنه

  5. #5
    کاربر جدید
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    Iran
    پست
    19
    امید جان همان طور که خودت هم اشاره کردی Alignment با Right-to-left فرق داره و با این کار مشکل نمایش اعداد بصورت شماره های فارسی حل نمیشه.
    از PC2st.ir هم خواهش می کنم در مورد پیشنهادشون بیشتر توضیح بدن و اگه امکانش هست با یک نمونه مسئله رو روشنتر کنند.
    با تشکر

  6. #6
    کاربر دائمی آواتار hesam_hma
    تاریخ عضویت
    دی 1385
    محل زندگی
    خیلی دور تر از شهر آرزروها
    پست
    265
    اگه می خوای اعداد فارسی باشه از فونتهای B استفاده کنید

  7. #7
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    منظور اینه که باید برای تعیین استایل از کلاس DataGridViewCell یا کلاسهای فرزند آن مثلا DataGridViewTextBoxCell به ارث برسونید.
    برای این منظور یک مثال کوچک (هر چند ناقص) در نحوه RightToLeft کردن میزنم:
    یک پروژه Windows Application ایجاد کنید و یک کنترل DataGridView1 بهش اضافه کنید.
    به قسمت ویرایش کدها بروید و کدها رو به شکل زیر تغییر بدید:

    Public Class Form1
    Public Class TextBoxRtlCell
    Inherits DataGridViewTextBoxCell
    Protected Overrides Sub Paint(ByVal graphics As System.Drawing.Graphics, ByVal clipBounds As System.Drawing.Rectangle, ByVal cellBounds As System.Drawing.Rectangle, ByVal rowIndex As Integer, ByVal cellState As System.Windows.Forms.DataGridViewElementStates, ByVal value As Object, ByVal formattedValue As Object, ByVal errorText As String, ByVal cellStyle As System.Windows.Forms.DataGridViewCellStyle, ByVal advancedBorderStyle As System.Windows.Forms.DataGridViewAdvancedBorderSty le, ByVal paintParts As System.Windows.Forms.DataGridViewPaintParts)
    If Me.Selected Then
    graphics.FillRectangle(Brushes.DarkBlue, cellBounds)
    Else
    graphics.FillRectangle(Brushes.White, cellBounds)
    End If
    graphics.DrawRectangle(Pens.Blue, cellBounds)
    cellBounds.Offset(3, 3)
    Dim myText As String = CType(formattedValue, String)
    TextRenderer.DrawText(graphics, myText, cellStyle.Font, cellBounds, cellStyle.ForeColor, cellStyle.BackColor, TextFormatFlags.RightToLeft)
    End Sub
    End Class
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim column As DataGridViewColumn
    column = New DataGridViewColumn(New TextBoxRtlCell())
    column.ValueType = GetType(String)
    Me.DataGridView1.Columns.Add("A", "A")
    Me.DataGridView1.Columns.Add(column)
    End Sub
    Private Sub DataGridView1_EditingControlShowing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlSho wingEventArgs) Handles DataGridView1.EditingControlShowing
    If (Me.DataGridView1.CurrentCell.ColumnIndex = 1) Then
    e.Control.RightToLeft = Windows.Forms.RightToLeft.Yes
    End If
    End Sub
    End Class

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

  8. #8
    فونت های B منظورتون فونت هایی هست که با B شروع میشن؟

  9. #9
    کاربر دائمی آواتار yavari
    تاریخ عضویت
    مهر 1384
    محل زندگی
    ایران - یزد
    پست
    1,014
    سلام

    چجوری میتونم این کارو برا ستونی که بایند شده انجام بدم ؟

    ممنون

  10. #10
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    برای ستونی که بایند شده، باید خاصیت AutoGenerateColumns از DataGridView رو روی false تنظیم کنید و خودتون ستونها رو به DataGridView اضافه کنید (که میتونید از کلاسی که در این تاپیک ذکر شده هم استفاده کنید) بعدش این ستونهایی که به DataGridView اضافه کردید، باید خاصیت DataPropertyName از ستونها رو به نام یک فیلد از منبع داده مشخص کنید.

  11. #11
    کاربر دائمی آواتار شاپرک
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    ناکجاآباد
    پست
    1,157

    نقل قول: قرار دادن یک خانه DataGridView در حالت Right-to-Left

    ميدونم تاپيك قديميه اما محض اطلاع دوستاني كه جستجو ميكنن و به اين تاپيك ميرسن:

    Private Sub DG_CellPainting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEvent Args) Handles DG.CellPainting
    If (e.ColumnIndex = 1 And e.RowIndex >= 0) Then
    e.PaintBackground(e.CellBounds, True)
    TextRenderer.DrawText(e.Graphics, e.FormattedValue.ToString(), _
    e.CellStyle.Font, e.CellBounds, e.CellStyle.ForeColor, _
    TextFormatFlags.RightToLeft)
    e.Handled = True
    End If
    End Sub

  12. #12

    نقل قول: قرار دادن یک خانه DataGridView در حالت Right-to-Left

    نقل قول نوشته شده توسط شاپرک مشاهده تاپیک
    ميدونم تاپيك قديميه اما محض اطلاع دوستاني كه جستجو ميكنن و به اين تاپيك ميرسن:

    Private Sub DG_CellPainting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEvent Args) Handles DG.CellPainting
    If (e.ColumnIndex = 1 And e.RowIndex >= 0) Then
    e.PaintBackground(e.CellBounds, True)
    TextRenderer.DrawText(e.Graphics, e.FormattedValue.ToString(), _
    e.CellStyle.Font, e.CellBounds, e.CellStyle.ForeColor, _
    TextFormatFlags.RightToLeft)
    e.Handled = True


    End If
    End Sub
    چطوری تو قسمت TextFormatFlags.RightToLeft میتونم right to left رو به yes یا no تنظیم کنم؟

  13. #13

    نقل قول: قرار دادن یک خانه DataGridView در حالت Right-to-Left


  14. #14

    نقل قول: قرار دادن یک خانه DataGridView در حالت Right-to-Left

    دوست عزيز اگر بخواهيم RightToLeft يه ستون و تغيير بديم چكاربايد كنيم؟

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

  1. Right to left نشدن !!!
    نوشته شده توسط Delphi_Developer در بخش برنامه نویسی در Delphi
    پاسخ: 5
    آخرین پست: یک شنبه 23 مهر 1385, 13:00 عصر
  2. تشخیص نصب زبانهای Right-to-Left
    نوشته شده توسط Mavi.X در بخش برنامه نویسی در Delphi
    پاسخ: 3
    آخرین پست: جمعه 28 بهمن 1384, 13:15 عصر
  3. منوی فارسی با قابلیت Right To left
    نوشته شده توسط habedijoo در بخش VB.NET
    پاسخ: 5
    آخرین پست: سه شنبه 03 آبان 1384, 05:55 صبح
  4. right to left در نمودار
    نوشته شده توسط meh_secure در بخش گزارش سازی با Crystal Report
    پاسخ: 0
    آخرین پست: جمعه 07 مرداد 1384, 00:23 صبح
  5. معادل Left,right
    نوشته شده توسط GOLDEN USER در بخش VB.NET
    پاسخ: 4
    آخرین پست: یک شنبه 02 مرداد 1384, 00:14 صبح

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

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