PDA

View Full Version : سوال: دو سؤال راجع به سلولهای VSFlexGrid



Hassan2500
یک شنبه 29 مرداد 1391, 21:13 عصر
سلام

1- من میخوام این کدهای زیر رو خلاصه بنویسم یعنی کلا اینطوری بشه که اگر هر سلول عدد داخلش از 99 بیشتر شد فقط اون سلول ColWidth آن برابر با 460 بشود و روی سلوهای دیگر تاثیری نگذارد و همان 350 که در نوشته شده باشن در ضمن این کد رو به این خاطر میخوام چون کدنویسی زیر برنامه ای که نوشتم رو کند کرده


VSFlexGrid1.ColWidth(-1) = 350
If Val(VSFlexGrid1.TextMatrix(1, 1)) > 99 Then VSFlexGrid1.ColWidth(1) = 460
If Val(VSFlexGrid1.TextMatrix(1, 2)) > 99 Then VSFlexGrid1.ColWidth(2) = 460
If Val(VSFlexGrid1.TextMatrix(1, 3)) > 99 Then VSFlexGrid1.ColWidth(3) = 460
If Val(VSFlexGrid1.TextMatrix(1, 4)) > 99 Then VSFlexGrid1.ColWidth(4) = 460
If Val(VSFlexGrid1.TextMatrix(1, 5)) > 99 Then VSFlexGrid1.ColWidth(5) = 460
.
.
.
.


2- چه کدی بنویسم که وقتی روی هر سلول VSFlexGrid کلیک کردم اون سلول فقط BackColor آن آبی شود و اگر دوباره روی آن کلیک کردم مثل قبلش سفید شود و میخوام هر سلول روی سلول دیگه اثر نذاره یعنی مثلا اگر یک سلول رو کلیک کردم و سلول دیگر رو هم کلیک کردم رنگ دو تا آبی بشه یا بیشتر و اگه این حالت نمیشه یعنی دوتا سلول یا بیشتر همزمان آبی بشن کد یکی رو فقط بنویسید

محسن واژدی
دوشنبه 30 مرداد 1391, 01:08 صبح
1- من میخوام این کدهای زیر رو خلاصه بنویسم یعنی کلا اینطوری بشه که اگر هر سلول عدد داخلش از 99 بیشتر شد فقط اون سلول ColWidth آن برابر با 460 بشود و روی سلوهای دیگر تاثیری نگذارد و همان 350 که در نوشته شده باشن در ضمن این کد رو به این خاطر میخوام چون کدنویسی زیر برنامه ای که نوشتم رو کند کرده سلام علیکم Private Sub Command1_Click()
VSFlexGrid1.ColWidth(-1) = 350
Dim i
For i = 1 To 5
If Val(VSFlexGrid1.TextMatrix(1, i)) > 99 Then VSFlexGrid1.ColWidth(i) = 460
Next
End Sub
موفق باشید

Hassan2500
دوشنبه 30 مرداد 1391, 20:07 عصر
برای سؤال دومم کسی نیست پاسخ بده

butterfly8528
دوشنبه 30 مرداد 1391, 23:09 عصر
سلام دوست عزيز .


2- چه کدی بنویسم که وقتی روی هر سلول VSFlexGrid کلیک کردم اون سلول فقط BackColor آن آبی شود و اگر دوباره روی آن کلیک کردم مثل قبلش سفید شود و میخوام هر سلول روی سلول دیگه اثر نذاره یعنی مثلا اگر یک سلول رو کلیک کردم و سلول دیگر رو هم کلیک کردم رنگ دو تا آبی بشه یا بیشتر و اگه این حالت نمیشه یعنی دوتا سلول یا بیشتر همزمان آبی بشن کد یکی رو فقط بنویسید

Private Sub VSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If VSFlexGrid1.Cell(flexcpBackColor, VSFlexGrid1.Row, VSFlexGrid1.MouseCol) = 0 Then
VSFlexGrid1.Cell(flexcpBackColor, VSFlexGrid1.Row, VSFlexGrid1.MouseCol) = &HFFC0C0
Else
VSFlexGrid1.Cell(flexcpBackColor, VSFlexGrid1.Row, VSFlexGrid1.MouseCol) = 0
End If

End Sub

موفق باشيد :لبخندساده:.

Hassan2500
دوشنبه 30 مرداد 1391, 23:36 عصر
جناب butterfly8528 یه مشکل کوچولو داره اونم اینه حتما باید روی سلولها کلیک کنی و وقتی قسمتی که سلول نیست کلیک میکنی ارور میده اگه میشه ارور رو برطرف کنید

butterfly8528
سه شنبه 31 مرداد 1391, 19:47 عصر
سلام .
اگه واقعا دوست داری چیزی یاد بگیری بهتره خودت یکم رو مشکلت کار کنی و دنبال لقمه آماده نباشی .
Private Sub VSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

With VSFlexGrid1

If (.MouseRow > -1) And (.MouseCol > -1) Then

If .Cell(flexcpBackColor, .MouseRow, .MouseCol) = 0 Then
.Cell(flexcpBackColor, .MouseRow, .MouseCol) = &HFFC0C0
Else
.Cell(flexcpBackColor, .MouseRow, .MouseCol) = 0
End If

End If

End With

End Sub

موفق باشید .