PDA

View Full Version : یه شی با این خصوصیات میخام !!!



nazanin20
جمعه 20 فروردین 1389, 14:12 عصر
سلام به همه دوستانم!
من یه شی ای میخام ولی خودم که نتونستم پیداش کنم !!
مثلا من میخام یه ادیتی داشته باشم که وقتی کسی فامیلی توش تایپ میکنه این ویژه گی رو داشته باشه
مثلا فامیلیه علیخانزاده
تامیزنی ع : تویه کادری زیرش میتونه مثلا پنل باشه(شایدم یه شی دیگه من تصور کردم فقط)بازبشه بزنه تمام فامیلیایی که با "ع"شروع میشه و باز زدن "ل"سرچ پیشرفته تر بشه و اون فامیلیایی که با عل شروع میشه والی اخر وشخصی که با برنامه کار میکنه فامیلیه موردنظر رو از کادر باز شده انتخاب کنه و تو ادیت بیاد!!!
میشه راهنماییم کنید باید چیکار کنم!
ممنونم از همه گی

Felony
جمعه 20 فروردین 1389, 14:31 عصر
با استفاده از دستورات SQL میتونید رکوردها رو فیلتر کنید و تو یک لیست باکس که در زیر کادر ادیتون هست نمایش بدید .

Jozef
جمعه 20 فروردین 1389, 14:42 عصر
بهترین گزینه combobox هست به نظر من.
تمام اسامی را در ان بریزید و
خاصیت AutoDropDown رو true کنید.

nazanin20
جمعه 20 فروردین 1389, 14:55 عصر
بهترین گزینه combobox هست به نظر من.
تمام اسامی را در ان بریزید و
خاصیت AutoDropDown رو true کنید.


ضمن تشکر.
یعنی تمام رکوردهاییه جدول اسامی رو بریزم تو کمبو یعنی بشن ایتمهایه کمبو
اونوقت چه جوری اینکارو کنم منظورم با چه دستوریه؟

Jozef
جمعه 20 فروردین 1389, 17:52 عصر
قبل از این کار امتحان کنین اگر همون بود که میخواستین بعد ازش استفاده کنین.
با یه حلقه ساده


for (Condition) do
ComboBox1.Items.Add(Value);

قبل از این عمل همه آیتم ها رو با دستور ComboBox1.Clear پاک کنین.
البته این یه روشه. روشهای دیگه هم واسه خواسته شما هست. تو همین سایت جستجو کنین.

nazanin20
جمعه 20 فروردین 1389, 19:55 عصر
ComboBox1.Clear;
for i:=1 to dm.Taza.RecordCount do
begin
ComboBox1.Items.Add(dm.Taza.Fields[1].Value);
DM.Taza.Next;
end;



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



ComboBox1.Items.Add(dm.Taza.Fields[1].Value+DM.Taza.Fields[2].Value);

nazanin20
جمعه 20 فروردین 1389, 19:59 عصر
یه سواله دیگم داشــــــــــــــــــــــ ـــــتم :
میخام وقتی کسی نام و نام خانوادگی رو انتخاب میکنه از کمبوباکس کد عضویت که کلید اصلیه تو یه جدول دیگه ثبت بشه
این کار با دی بی لوک اپ امتحان کردم ولی با کمبو بلد نیستم
؟

Jozef
شنبه 21 فروردین 1389, 11:41 صبح
بخایم دو تا فیلد رو بریزیم تو کمبو بااین دستور میرم ولی بازم یکی فیلد رو نشون میده:

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


ComboBox1.Items.Add(ADOTable1.FieldByName('Fname') .AsString +' '
+ ADOTable1.FieldByName('Lname').AsString)




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

روشهای زیادی هست.
میتونین یه کمبو دیگه کنار اون اصلیه داشته باشین و کد مورد نظر رو متناظراً در اون ثبت کنین. ولی از دید کاربر مخفی باشه
یا قبل ثبت با select روی متن کمبو کد رو بازیابی کنین.
اگر بگید دقیقا چیکار میخواین بکنین شاید بهتر بتونم کمک کنم.

nazanin20
شنبه 21 فروردین 1389, 18:47 عصر
از دستورات زیر استفاده کنین:


ComboBox1.Items.Add(ADOTable1.FieldByName('Fname') .AsString +' '
+ ADOTable1.FieldByName('Lname').AsString)



روشهای زیادی هست.
میتونین یه کمبو دیگه کنار اون اصلیه داشته باشین و کد مورد نظر رو متناظراً در اون ثبت کنین. ولی از دید کاربر مخفی باشه
یا قبل ثبت با select روی متن کمبو کد رو بازیابی کنین.
اگر بگید دقیقا چیکار میخواین بکنین شاید بهتر بتونم کمک کنم.


ببینید من میخام اینکارو کنم:
یه کمبو باکس باشه که فردی که بابرنامه کارمیکنه میاد یه فامیلی توش تایپ میکنه و ازلیستی که کمبو باز میکنه یکیو سلکت میکنه ...ولی اونچه که تو جدول دیگه ای ثبت میشه فامیلیه شخص نمیخام باشه بلکه میخام کد شخص تو جدول ذخیره بشه
یعنی شخص با نام و نام خانوادگی سروکار داشته باشه ولی در عمل کد ذخیره بشه!!
ممنونم

pezhvakco
شنبه 21 فروردین 1389, 20:03 عصر
درود :

شخص با نام و نام خانوادگی سروکار داشته باشه ولی در عمل کد ذخیره بشه

شما بهتره از کومبو باکس استفاده نکی و از DBLookupListBox استفاده کنی که زیر اون ادیت نمایش میدی و DBLookupListBox رو به یه کوئری متصل کنی :

SELECT name, famil, id, name + famil AS Expr1
FROM Table1
WHERE (famil LIKE 'Text%')
ListField مربوط به DBLookupListBox رو به ستون Expr1 ارتباط بده تا نام و نام خانوادگی رو همزمان نشون بده و KeyField رو هم به ستون id .

کوئری بالا رو تو رویداد OnChang اون ادیت بنویس و در هنگام ذخیره مقدار ID سطر مورد نظر رو بگیر و ذخیره کن .

فکر خوش .

nazanin20
یک شنبه 22 فروردین 1389, 18:22 عصر
میخام با کلیک رویه هر سطر دی بی لوک اپ لیست باکس ، عنصر اون سطر تو ادیت نمایش داده بشه
با این کد رفتم البته نمیدونم درسته یانه ولی وقتی رو سطر کلیک میکنم عنصر از لیست باکس پاک میشه!!!! میخام پاک نشه !!!


procedure TF_1.DBLookupListBox1Enter(Sender: TObject);
begin
edit6.Text:=DBLookupListBox1.SelectedItem;
end;

Jozef
یک شنبه 22 فروردین 1389, 19:47 عصر
به جای دستور بالا مقدار رو از query بگیر. بهتره تو رویداد onclick قرار بدی.


edit6.text:=query1.fieldvalues['field'];


اگر از روش دوستمون استفاده کردین به نظر من به صورت یه فریم درستش کنین که کد تکراری همه جا ننویسین.
چون غیر از اون دستورات باید کنترل بیشتری داشته باشین. تازه خاصیت AutoComplete کمبو را از دست میدین.

nazanin20
یک شنبه 22 فروردین 1389, 21:58 عصر
درود :

شما بهتره از کومبو باکس استفاده نکی و از DBLookupListBox استفاده کنی که زیر اون ادیت نمایش میدی و DBLookupListBox رو به یه کوئری متصل کنی :

SELECT name, famil, id, name + famil AS Expr1
FROM Table1
WHERE (famil LIKE 'Text%')
ListField مربوط به DBLookupListBox رو به ستون Expr1 ارتباط بده تا نام و نام خانوادگی رو همزمان نشون بده و KeyField رو هم به ستون id .

کوئری بالا رو تو رویداد OnChang اون ادیت بنویس و در هنگام ذخیره مقدار ID سطر مورد نظر رو بگیر و ذخیره کن .

فکر خوش .

جواب کوئری یه جدوله :
که تو لیست باکس نمایش داده میشه
یه سوال :
کاربرو ملزم کنم که حتما رو یکی از عناصر لیست باکس کلیک کنه و ایدیش ثبت بشه؟

یا
نه؟

nazanin20
دوشنبه 23 فروردین 1389, 18:06 عصر
به جای دستور بالا مقدار رو از query بگیر. بهتره تو رویداد onclick قرار بدی.


edit6.text:=query1.fieldvalues['field'];


اگر از روش دوستمون استفاده کردین به نظر من به صورت یه فریم درستش کنین که کد تکراری همه جا ننویسین.
چون غیر از اون دستورات باید کنترل بیشتری داشته باشین. تازه خاصیت AutoComplete کمبو را از دست میدین.


یه ان وارد ادیت میشه بعد محو میشه


procedure TF_mosaedeh.DBLookupListBox1Click(Sender: TObject);
begin
edit6.text:=adoquery1.FieldByName('expr1').AsStrin g;
end;

Jozef
دوشنبه 23 فروردین 1389, 18:29 عصر
فکر کنم مشکل جای دیگه ایه
حتما یه جایی edit رو خالی میکنین.
اگه تکه کد بذارین بهتر میشه مشکل رو پیدا کرد.