PDA

View Full Version : انتخاب در دیتاگرید vsflex



h1and1saman
چهارشنبه 11 فروردین 1395, 05:57 صبح
سلام
میشه حالت انتخاب به دیتا گرید vsflexداد .مثل تعدادی از اطلاعات رو انتخاب کنیم و و فقط بر روی اون چندتا کار خاصی انجام بشه
برای مثال من اطلاعاتم به این شکله
1-علی
2-حسن
3-حسین
4-عباس
حالا من می خوام مثلا حسن و عباس رو انتخاب کنم و حذفشون کنم چطوری میشه این دو تا رو سلکت کرد؟
ممنون

isaac23
چهارشنبه 11 فروردین 1395, 13:31 عصر
والا دوست عزیز راه زیاد است اما اگه میخوای یه راه شیک و کاربر پسند باشه این کاری رو که میگم انجام بده .

1- توی Tabel یه فیلد از نو Yes,No درست کن. با این کار توی Vs ستون مربوط به فیلد که گفتم به ستون ChekBox در میاد و کاربر هر ردیفی رو که دوست داشته باشه می تونه انتخاب کنه.
2- خاصیت Editabel رو روی 2 تنظیم کن. با این کار وقتی روی فیلد مورد کلیک میکنی تیک میخوره و به حالت انتخاب در میاد و با به کلیک دیگه از خالت انتخاب خارج میشه.
3- وقتی فیلد مورد نظر به حالت انتخاب باشه توی جدول عدد -1 و وقتی انتخاب نباشه عدد 0 رو نشون میده ....

بعد با این دستور می تونی فیلد های رو که انتخاب کردی پاک کنی و یا هر عملیاتی رو که دوست داری روش انجام بدی..

With VSFlexGrid1
Dim i%
For i = 0 To .Rows - 1
If Val(.TextMatrix(i, 1)) = -1 Then
MsgBox i
'remove code here
End If
Next
End With



واسه حذف و یا انتخاب چند ردیف راه های دیگه ای هم هست اما بنظر من این قشنگترین راه باشه ...

اینم یه نمونه عکس میذارم ببینی.

139786

h1and1saman
چهارشنبه 11 فروردین 1395, 17:16 عصر
من روشی رو که فرمودید انجام دادم روش خوبیه اما کاش مثال کد رو هم میزدید مثل برای حذف کردن چی بزنم .
مثلا با این دستور حذف نمیکنه
adodoc.recordset.delete

راه های دیگه ای هم اگه هست لطف بفرمایید . چون من اگه بشه ترجیح میدم editable رو از روی دیتاگرید غیرفعال باشه

isaac23
چهارشنبه 11 فروردین 1395, 18:56 عصر
دلیلت چیه چرا تریج می دی غیر فعال باشه


واسه حذف از این دستور استفاده من و DataMode کامونت vs رو روی 1 تنطیم کن

واسه حذف از این دستور استفاده کن

VSFlexGrid1.RemoveItem (VSFlexGrid1.RowSel)
VSFlexGrid1.Refresh

h1and1saman
چهارشنبه 11 فروردین 1395, 19:11 عصر
اول اینکه تشکر به خاطر راهنمایی ها
نمی خوام چون اطلاعات وارد شده مهمه و دوست ندارم اشتباهی هم شده اطلاعات عوض بشه و از طرفی کاربرهای مختلفی داره که من برا اونها قابلیت ویرایش نزاشتم برا همین این قسمت فعال نباشه بهتره

isaac23
پنج شنبه 12 فروردین 1395, 03:45 صبح
اگه منظورن اینه که میشه تغیرات ایجاد کرد یعنی با دابل کلیک میشه اطلاعات رو تغییر داد خوب گزینه Edeitable رو روی یک تنظیم کن که نشه تغییر داد و مشکلی هم نداره .

و اگه می می خوای واسه حذف بهتره باشه می تونی از دستور sql استفاده کنی.....
dbs.Execute "Delete FROM T1 Where P2 < 0 "


T1.نام جدول و P2 نام فیلد مورد نظر هست که گفتم و اعداد رو که کوچکتر از از 0 هست که همون -1 است رو در نظر میگیره و یکجا پاک می کنه سرعت بهتره دیگه از حلقه استفاده نشده که بخوا بیاد تمام اطلاعات رو چک کنه .

---------------
یه راه حل دیگه

اون فیلدی رو که گفتم بساز از نوع Yse.no . بعد یه قسمت انتخاب بذار و کاربر وقتی رو اون گزینه کلیک کنه تو بانک عدد بشه -1 , و رنگ اون ردویف رو هم تغیر بده که بفهمه این ردیف انتخاب شده. بعد بیاد عملیات رو انجام بده ... اینم قشنگه و اون گزینه هم نیازی نیست تغییر بدی Editabel رو میگم

isaac23
پنج شنبه 12 فروردین 1395, 06:13 صبح
البته من خودم این گزینه دیتا مود رو غیر فعال کردم و ازش استفاده نمی کنم ولی از اون گزینه انتخاب بله استفاده می کنم ولی به یه روش دیگه .. نیاز بود بگید اینجا بذارم.

hrj1981
یک شنبه 22 فروردین 1395, 18:00 عصر
سلام
من روشی که خودم استفاده میکنم رو خدمتتون میگم .
وقتی میخوام اطلاعات داخل جدول رو از بانک اطلاعاتی فراخوانی کنم با کد نویسی میگم ستون اول ( Fixed Cols) رو تیک باکس دارش کن با مقدار خالی
بعدا دوباره با کد نویسی تو رویداد کلیک جدول میگم اگر تیک باکس خالی بود پر کنه و بالعکس
در مرحله آخرم میگم سطرهایی که تیک دار هستن عملیاتی که مورد نظر من هست رو ] بر روی اونها انجام بده
اگر با کد نویسیش آشنا نبودید بگید نمونه کدش رو براتون بزارم

isaac23
سه شنبه 24 فروردین 1395, 12:09 عصر
خوب دوست عزیز.توضیح بده.یه نمونه عکس هم بذار.
ممنون