PDA

View Full Version : یک TextBox که مانند TextBox های داخل اینترنت عمل کند



soheil_programmer
جمعه 24 خرداد 1387, 00:26 صبح
با سلام

من به یک TextBox احتیاج دارم که بتونه با تایپ هر حرف مطالبی را که از قبل توش تعریف کردیم را به صورت آماده لود کنه؛ تا کاربر بتونه علاوه بر تایپ متن جدید در TextBox مطالبی را که قبلاً تایپ کرده را همچون یک ComboBox باز شده ببیند و در صورتی که قبلا عین اون مطلب را در TextBox تایپ کرده بود ببیند و انتخاب مجدد کند؛ برای اینکه بهتر متوجه بشید مثال زیر را بصورت عکس براتون قرار میدم:

http://i30.tinypic.com/wuux.jpg

AmirAmiri
جمعه 24 خرداد 1387, 01:39 صبح
اون که شما عکسش رو گذاشتی فکر کنم Combo هست نه Textbox خودت هم میتونی از کمبو استفاده کنی.

این برنامه تا حدودی کارت رو راه میندازه اما کامل نیست یعنی بعضی جاها مشکلاتی داره و یکیش هم اینه که متون رو فیلتر نمیکنه.

Private Const WM_USER = &H400
Private Const CB_SHOWDROPDOWN = &H14F
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Sub Combo1_KeyPress(KeyAscii As Integer)
SendMessage Combo1.hwnd, CB_SHOWDROPDOWN, True, 0&
If KeyAscii = 13 Then
Combo1.AddItem (Combo1.Text)
End If
End Sub

بازم میگم که کامل نیست و مشکلاتی داره اگه میخوای کامل باشه باید خودت یک لیست باکس اضافه کنی و زمانی که کاربر داره متن وارد میکنه اونو نمایش بدی و متونش رو بر اساس متن داخل کمبو فیلتر کنی.
البته شاید کسی از دوستان OCX در این زمینه داشته باشه که در این صورت دیگه کارت خیلی راحت میشه.
موفق باشی...

noorsoft
جمعه 24 خرداد 1387, 08:50 صبح
دوست عزیز این که Combo نیست اگر کمی دقت کنی متوجه میشی که Combo یک کلید داره که اگه روی اون کلیک کنی لیستش باز میشه
این یک کنترل از نوع Auto Complete که براتون با سورس و توضیحات بصورت Doc میزارم تا استفاده کنین
موفق و موید باشید

SeyedMoosavi
جمعه 24 خرداد 1387, 22:55 عصر
میشه کمی در موردش بیشتر توضیح بدین؟
متوجه نشدم از اون فایل ورد

soheil_programmer
شنبه 25 خرداد 1387, 22:42 عصر
من هنوز به اون چیزی که میخواستم نرسیدم ها!! یعنی یک کنترل خوب!!

در زیر تصویری از مشکل کنترل دوستمون noorsoft را می بینید:


http://i29.tinypic.com/fm2813.jpg
همانطور که مشاهده میکنید ایشون از یک ListBox استفاده کردن که در صورت استفاده از اون تا شعاع 2 کیلومتریش نباید هیچ کنترلی قرار بگیره!:شیطان::بامزه:

maryamb
یک شنبه 26 خرداد 1387, 10:23 صبح
در جهت تکمیل برنامه ی دوستمون شما می تونی از یه لیست باکس استفاده کنی که با گرفتن فوکوس در تکست باکس ، نمایان بشه و تو خاصیت تکست چنج بطور مدام سرچ بشه و فیلتر بشه.و با از دست دادن فوکوس مخفی بشه
من یه نمونه شو دیده بودم اگه پیدا کنم می ذارم

ali_najari
یک شنبه 26 خرداد 1387, 10:57 صبح
درسته باید لیست باکس رو popup کنید تا درست کار کنه

فکر کنم این چیزی که شما میخواید

ali_najari
یک شنبه 26 خرداد 1387, 23:13 عصر
اگه همونی بود که خواستی بگو
یعنی نظر بده

soheil_programmer
یک شنبه 26 خرداد 1387, 23:44 عصر
با سلام

من از سورسی که دوست عزیزمون آقای علی نجاری زحمت کشیدن و قرار دادن تشکر می کنم مخصوصاً فایل دومشون که تکمیل تر و استانداردتر از سورس اولشون است.
من هم سورس ایشون را تکمیل تر و هرچه نزدیکتر به TextBoxهای IE کردم و در اینجا برای استفاده دوستان قرار میدهم، اگه کسی تونست اونو بصورت یک کنترل اکتیواکس هم در بیاره که خیلی عالی میشه!!


http://i28.tinypic.com/2d7zouq.jpg

مهران رسا
دوشنبه 27 خرداد 1387, 00:17 صبح
با سلام

من از سورسی که دوست عزیزمون آقای علی نجاری زحمت کشیدن و قرار دادن تشکر می کنم مخصوصاً فایل دومشون که تکمیل تر و استانداردتر از سورس اولشون است.
من هم سورس ایشون را تکمیل تر و هرچه نزدیکتر به TextBoxهای IE کردم و در اینجا برای استفاده دوستان قرار میدهم، اگه کسی تونست اونو بصورت یک کنترل اکتیواکس هم در بیاره که خیلی عالی میشه!!

سلام .
جالب بود ولی :
باید وقتی روی فرم کلیک میشه Listbox مخفی بشه ... :چشمک:

soheil_programmer
دوشنبه 27 خرداد 1387, 00:56 صبح
سلام .
جالب بود ولی :
باید وقتی روی فرم کلیک میشه Listbox مخفی بشه ... :چشمک:


با سلام و تشکر از پیشنهادتون
من یه نمونه جدیدتر گذاشتم که مشکلی که شما فرمودید+اینکه Right2Left داره و از فارسی پشتیبانی میکنه.

http://i30.tinypic.com/20u7er5.jpg

ali_najari
دوشنبه 27 خرداد 1387, 01:28 صبح
من برای فارسی انجام ندادم
چون فکر کردم واسه انگلیسی میخواد

soheil_programmer
دوشنبه 27 خرداد 1387, 14:44 عصر
من برای فارسی انجام ندادم
چون فکر کردم واسه انگلیسی میخواد

مشکلی نداره برای هر دو میشه اما نظر من ایجاد یک کنترل کامل با قابلیت Right2Left برای استفاده همگان است.

مهران رسا
دوشنبه 27 خرداد 1387, 15:00 عصر
می تونید با توجه به زبان انتخاب شده برای کیبورد خاصیت Right2Left رو تنظیم کنید ..

ali_najari
دوشنبه 27 خرداد 1387, 15:38 عصر
این هم تکمیل شده فایل با خاصیت ذخیره داده جدید و همچنین پاک کردن اولین رکورد در صورتی که تعداد رکورد ها بیشتر از 25 تا باشه

ali_najari
دوشنبه 27 خرداد 1387, 15:41 عصر
البته یه فایل متنی ایجاد میکنه با فرمت LST که این فرمت رو خودم برای انتخاب کردم میتونید هر پسوند دیگه ای که بخواید براش بزارید

soheil_programmer
دوشنبه 27 خرداد 1387, 16:05 عصر
می تونید با توجه به زبان انتخاب شده برای کیبورد خاصیت Right2Left رو تنظیم کنید ..


اگه منظورتون توابع API دستور KeyBoardLayout پیشنهاد خوبیه!:تشویق:

soheil_programmer
دوشنبه 27 خرداد 1387, 16:09 عصر
این هم تکمیل شده فایل با خاصیت ذخیره داده جدید و همچنین پاک کردن اولین رکورد در صورتی که تعداد رکورد ها بیشتر از 25 تا باشه

آقا اون که کار سختی نیست مشکل اینه که این TextBox کاش بصورت ActiveX دربیاد که کاربردش واسه همه و در همه جا آسون بشه!

در ضمن من تغییراتی را اعمال کردم که اگر در روی فرم کلیک شه منو خودبخود بسته بشه که شما انجام ندادی توی نگارش V1.3 و همچنین اگه روی هر چیز دیگری کاربر کلیک کنه بجر لیست بازم بسته میشه منو!:ناراحت:

ali_najari
چهارشنبه 29 خرداد 1387, 03:28 صبح
دوست عزیز سهیل جان
این هم فایلی که شما مد نظرته با قدرت Right to Left خودکار با تغییر زبان

vahidvb
چهارشنبه 29 خرداد 1387, 07:27 صبح
دوست عزیز سهیل جان
این هم فایلی که شما مد نظرته با قدرت Right to Left خودکار با تغییر زبان
run time error شماره 28

vahidvb
چهارشنبه 29 خرداد 1387, 07:32 صبح
من هنوز به اون چیزی که میخواستم نرسیدم ها!! یعنی یک کنترل خوب!!

در زیر تصویری از مشکل کنترل دوستمون noorsoft را می بینید:


http://i29.tinypic.com/fm2813.jpg
همانطور که مشاهده میکنید ایشون از یک ListBox استفاده کردن که در صورت استفاده از اون تا شعاع 2 کیلومتریش نباید هیچ کنترلی قرار بگیره!:شیطان::بامزه:
البته راهی که دوست ما گذاشت کامل نبود ولی شما هم میتونی تکست باکس رو توی یه پیکچر باکس یا فریم بزاری و آن تاپ کنی که بتونی نا شعاع 1 میلی اون هزار تا کنترل بزاری :لبخند::چشمک:

vahidvb
چهارشنبه 29 خرداد 1387, 08:09 صبح
اینم activex که سهیل جان اصرار داشتن
فقط هنگام تشخیص زبان که لیست و تکست باکس رو righttoleft اش رو تعیین میکنه موقع تعیین تکست ارور میده که شمارش رو هم گفتم که البته غیر فعالش کردم
ایمیلهاتون رو هم بزرگتر کردم حال کنید

If GetLanguage = "En" Then
List1.RightToLeft = False
' Text1.RightToLeft = False
ElseIf GetLanguage = "Fa" Then
List1.RightToLeft = True
' Text1.RightToLeft = True
End If

ali_najari
چهارشنبه 29 خرداد 1387, 14:42 عصر
ممنون وحید جان