PDA

View Full Version : سوال: لیست کردن رکوردهای جدول در DBCheckBox



shedayat
شنبه 24 تیر 1391, 19:13 عصر
سلام.
توی برنامه یه قسمتی دارم که باید شبیه انتخاب درس تو انتخاب واحد دانشگاها باشه. به این صورت که یه فیلد مشخص شده از رکوردها رو تو جدول مورد نظر بخونه و تو یه DBCheckBox (نمی دونم این کنترل برای این کار هست یا نه!!!) لیست بکنه و بعدش کاربر به صورت CheckBox بتونه گزینه هاش رو انتخاب کنه. حالا من نمی دونم که بهترین کنترل برای این کار چیه؟ آیا کنترل نام برده شده می تونه این کار رو انجا بده یا نیاز به کنترل دیگه ای هست.
در ضمن این کنترل هم از سری کنترل های Raize هست.
ممنون.

SayeyeZohor
شنبه 24 تیر 1391, 19:34 عصر
يك روش استفاده از TCheckListBox هستش مي توني با يك حلقه For اطلاعات مربوط به فيلدت رو پيمايش كني و در يك CheckListBox ، اضافه كني

shedayat
شنبه 24 تیر 1391, 19:37 عصر
يك روش استفاده از TCheckListBox هستش مي توني با يك حلقه For اطلاعات مربوط به فيلدت رو پيمايش كني و در يك CheckListBox ، اضافه كني
راستش همچین فکری به ذهنم رسید. ولی باید یه راه ساده تر هم باشه. در ضمن دردسرش هم یه خورده زیاده. چون وقتی کاربر گزینه مورد نظرش رو انتخاب کرد باید کد آیتم های انتخاب شده تو محل دیگه ای ذخیره بشه.
در کل به عنوان آخرین گزینه می تونه راه حل خوبی باشه.
خیلی ممنون از پاسختون.

Felony
شنبه 24 تیر 1391, 21:40 عصر
امروز تو شرکت برای قسمتی از یکی از برنامه ها به همچین چیزی نیاز داشتم ؛ اول خواستم براش یک کامپوننت بنویسم بعد دیدم با توجه به اینکه دیگه لازمش ندارم و فقط قراره یک بار استفاده بشه به دردسرش نمیارزه و بیخیالش شدم و با نوشتن یک Class Helper کار رو راه انداختم ...

با توجه به اینکه به قطع یقین 99% دوستان از Class Helper ها هیچ اطلاعی ندارند و نمیدونن چی هست و چه طور کار میکنه سبب خیر شدی که در بخش مقالات مقاله ای کوتاه رو در این مورد بنویسم و قرار بدم ؛ انشاالله یکی از مدیران زودتر تاپیک رو ببینه و تائیدش کنه .

برای مورد شما هم در اولین فرصت یک نمونه Class Helper مینویسم و همینجا قرار میدم تا نمونه ای باشه برای مراجعات بعدی دوستان .

shedayat
شنبه 24 تیر 1391, 22:21 عصر
خدا خیرت بده. ایشالا زودتر تایید می شه و باعث می شه ما هم یه چیز جدید یاد بگیریم.
بابت زحمتی هم که می کشی دستت درد نکنه.
پس با این تفاصیل من هم منتظر اون مقاله و هم منتظر کمکتون می مونم....
با تشکر. :)

SayeyeZohor
شنبه 24 تیر 1391, 22:43 عصر
ميشه راجع به اين سورس (http://17slon.com/blogs/gabr/files/FunWithEnumerators.zip)يك كم توضيح بديد؟
البته زير ديپلم
من اينو فقط جستجو كردم راجع به Class Helper پيدا كردم نمي دونم چيه؟

Felony
شنبه 24 تیر 1391, 22:51 عصر
سورسی که لینک دادید چیز خاصی نداشت که نیاز به توضیحات اضافی داشته باشه ، کمی صبر کنید تا اون مقاله تائید بشه ، خیلی کوتاه و روان مسائل مربوطه توضیح داده شده ؛ اگر عجله دارید به آقای موسوی پیغام خصوصی بدید تا مقاله رو تائید کنن .

Felony
یک شنبه 22 مرداد 1391, 09:49 صبح
متاسفانه هنوز مقاله تائید نشده ... !

این یک Class Helper برای TCheckListBox که یک DataSource و نام فیلد عنوان و نام فیلد دیتا رو ازتون میگیره و اطلاعات رو ازش میخونه و در TCheckListBox لیست میکنه :

type
TMyCheckListBox = class helper for TCheckListBox
public
procedure ReadRows(DataSource: TDataSource; TitleField, DataField: string);
end;

کافیه کد بالا رو داخل پروژه قرار بدید تا از این به بعد هر شئ CheckListBox ی که در این پروژه استفاده میکنید دارای متدی به نام ReadRows بشه .

این هم تعریف :


procedure TMyCheckListBox.ReadRows(DataSource: TDataSource;
TitleField, DataField: string);
var
RecNO: Integer;
begin
Clear;
DataSource.DataSet.First;
for RecNO := 0 to DataSource.DataSet.RecordCount - 1 do
begin
Items.Add(DataSource.DataSet.FieldByName(TitleFiel d).AsString);
Checked[RecNO] := DataSource.DataSet.FieldByName(DataField).AsBoolea n;
DataSource.DataSet.Next;
end;
end;

و این هم یک نمونه استفاده :

CheckListBox1.ReadRows(DataSource1, 'Username', 'IsAdmin');

خودتون میتونید با همین روش متدهای دیگه ای بسته به نیازتون اضافه کنید .

shedayat
سه شنبه 24 مرداد 1391, 20:30 عصر
خیلی ممنون از آموزش مفیدتون. خیلی آموزش خوب و کاربردی ای بود.
در مورد نمونه سورستون هم مثل اینکه منظورم رو درست متوجه نشدید. ببینید شما فرض کنیدکه ما یه جدول داریم که توش لیست کالاها به همراه کدشون قرار داره. من می خوام تو برنامه این رکوردها رو لیست کنم و کاربر بتونه از بین کالاهای نمایش داده شده یک یا چند کالا رو انتخاب بکنه. بعدش کد کالاهای انتخابی تو یه جدول لیست بشه. البته کارای اضافی دیگه ای هم داره که اونا رو می تونم انجام بدم فقط مشکلم همینجاست:
لیست کردن کالاها و ذخیره کد اونا تو یه جدول دیگه.
بازم ممنون.

Felony
چهارشنبه 25 مرداد 1391, 09:30 صبح
اون کد یک نمونه بود ؛ شما یک آرایه عددی در نظر بگیرید به تعداد آیتم های بارگذاری شده از بانک اطلاعاتی و به ازای هر آیتم کد اون رو تو آرایه ذخیره کنید ؛ برای به دست آوردن کد کالاهای انتخاب شده هم ایندکس آیتم های چک خورده میشه ایندکس کد آیتم ها در آرایتون ؛ با همون Class Helper راحت میتونید بنویسیدش .

shedayat
چهارشنبه 25 مرداد 1391, 11:51 صبح
با تشکر از پاسخت. ولی این را حلی که شما گفتید یه کم پیچیده هست. به نظرتون نباید یه راه حل ساده تری هم داشته باشه. یعنی توی برنامه های مشابه که این کار رو انجام میدن (یا همون تو انتخاب واحد دانشگاه) از همین روش استفاده می کنند؟ به نظر شما نمی شه برای DBGrid یه دکمه چک باکس گذاشت که کاربر اگه خواست کالاهای مورد نیاز خود رو تو همون انتخاب بکنه و تو بانک ذخیره بشه؟خیلی ممنون از پاسخت.