PDA

View Full Version : رنگی کردن ردیف انتخابی در ListView



S_VB.max
سه شنبه 05 دی 1385, 19:31 عصر
با سلام
من ListView را به جدول بانک ، ارتباط دادم و در آن رکورد ها را به صورت lvwReport نمایش دادم حالا می خوام وقتی روی یک ردیف دوبار کلیک می کنم آن ردیف رنگی شود (منظورم رنگ حالت انتخاب نیست مثلا رنگ سبز شود) چه جوری می تونم این کار را بکنم ؟
با تشکر

S_VB.max
پنج شنبه 07 دی 1385, 11:40 صبح
کسی نیست جواب بده.

Payam Moradi
پنج شنبه 07 دی 1385, 12:48 عصر
لیست ویو این امکان رو در حالت عادی نداره. مگر با استفاده توابع API و کتابخانه اصلی این کامپوننت، این کار رو انجام بدید. این کار وقتگیر ست.
یک اکتیوایکس آماده که این کارهارو کرده معرفی میکنم.(+خیلی قابلیت دیگه!) ولی یخورده پیچیده است نسبت به Listview!

اکتیوایکس اول سورس کامل و برنامه نمونه ListView هست. (اصل فایل در پوشه Release هست و رجیستر شود)
اکتیوایکس دوم سورس کامل و برنامه نمونه ImageList هست. (اصل فایل در پوشه Release هست و رجیستر شود)
DLL [سوم] یک ابزار جانبی برای دو مورد بالا است که باید قبل از استفاده موارد فوق رجیستر شود.

موفق باشید:چشمک:

S_VB.max
پنج شنبه 07 دی 1385, 20:35 عصر
متاسفانه چیزی که من می خواستم در سورسهای شما نبود
با کد زیر می تونید ردیفهای لیست ویو را یک در میان به هر رنگی که خواستید در آورید ، حالا کسی می تونه این کد را طوری تغییر بده که بشه با دو بار کلیک کردن تنها یک ردیف رنگی شود ؟



Public Sub SetListViewColor(LisVie As ListView, PictureBoxCtrl As PictureBox, Color1 As Long, Color2 As Long)

PictureBoxCtrl.AutoRedraw = True
PictureBoxCtrl.BorderStyle = vbBSNone
PictureBoxCtrl.ScaleMode = vbTwips
PictureBoxCtrl.Visible = False


PictureBoxCtrl.Top = LisVie.Top
PictureBoxCtrl.Font = LisVie.Font
With PictureBoxCtrl.Font
.Size = LisVie.Font.Size + 1.5
.Bold = LisVie.Font.Bold
.Charset = LisVie.Font.Charset
.Italic = LisVie.Font.Italic
.Name = LisVie.Font.Name
.Strikethrough = LisVie.Font.Strikethrough
.Underline = LisVie.Font.Underline
.Weight = LisVie.Font.Weight
End With

iLineHeight = PictureBoxCtrl.TextHeight("W") + Screen.TwipsPerPixelY

PictureBoxCtrl.Height = iLineHeight * 2
PictureBoxCtrl.Width = LisVie.Width

PictureBoxCtrl.Line (0, 0)-(LisVie.Width, iLineHeight), Color1, BF
PictureBoxCtrl.Line (0, iLineHeight)-(LisVie.Width, iLineHeight * 2), Color2, BF

LisVie.Picture = PictureBoxCtrl.Image
LisVie.PictureAlignment = lvwTile


End Sub

S_VB.max
جمعه 08 دی 1385, 18:16 عصر
کسی نبود!!!!!!!!!!!!!!!!!!!!!!!؟؟؟؟