من یه کامبو باکس دارم که توی اون اسم افراد قرار داره میخوام وقتی کاربر حرف اول یه اسم رو زد
کامبو اسم کامل رو نشون بده اما الان اینطور نیست ممنون میشم کمک کنید
من یه کامبو باکس دارم که توی اون اسم افراد قرار داره میخوام وقتی کاربر حرف اول یه اسم رو زد
کامبو اسم کامل رو نشون بده اما الان اینطور نیست ممنون میشم کمک کنید
سلام
بیبن دوست عزیز من کامپوننتش را ندارم ولی خودم سه تا تابع نوشتم که اگر در رویدادهای changeو keyPress وlostfocuse بگذاری تو دارای جستجو خواهد شد و هنوز وقت نکردم آن را کامپوننت کنم.
تابعهایی هم هست که جستجو را از ابتدای سطرهای combobox انجام نمی دهد بلکه در کل رشته آن combobox جستجو می کند
اگه خواستی بگو تا برات بفرستم .
یه کامبو بذار رو فرمت بعد این کدو بچسبون تو فرمت
Option Explicit
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 Const CB_FINDSTRING = &H14C
Private Const CB_ERR = (-1)
Private Declare Function PostMessage Lib "user32" Alias _
"PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const CB_SETCURSEL = &H14E
Private m_bEditFromCode As Boolean
Private Sub Form_Load()
With Combo1
.AddItem "Iran"
.AddItem "Pars"
.AddItem "Maad"
.AddItem "IranVig"
.AddItem "Aria"
End With
End Sub
Private Sub Combo1_Change()
Dim i As Long, j As Long
Dim strPartial As String, strTotal As String
If m_bEditFromCode Then
m_bEditFromCode = False
Exit Sub
End If
With Combo1
strPartial = .Text
i = SendMessage(.hwnd, CB_FINDSTRING, -1, ByVal strPartial)
If i <> CB_ERR Then
strTotal = .List(i)
j = Len(strTotal) - Len(strPartial)
If j <> 0 Then
m_bEditFromCode = True
.SelText = Right$(strTotal, j)
'Select unmatched characters
.SelStart = Len(strPartial)
.SelLength = j
Else
End If
End If
End With
End Sub
Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyDelete
m_bEditFromCode = True
Case vbKeyBack
m_bEditFromCode = True
End Select
End Sub
کگه خوده کامبو جستجو نمی کنه ؟
قبلا که این کارو می کرد
وقتی حرف اول اسم رو می زنی باید کلیدهای اروکی رو فشار بدی تا اون اسم توی تکست کامبو بیاد من می خوام بدون فشار دادن کلید های اروکی اسم کامل رو بیاره
منم فکر میکنم یه راهی جز کد نویسی داره
یعنی یه Property ای چیزی
نه property چیزی نداره ولی اگر کلمه را بنویسی و F4 را فشار دهی combo از اولین جایی که ابتدای آن با ورودی تو یکسان است لیست را باز می کنه ولی اگر به صورت خودکار می خوای نشون بدی فقط باید کد نویسی کنی
من یه همچین کدی دارم.
میگردم واست پیدا کردم میفرستم.
ولی تو DataCombo نتونستم این کارو بکنم
شما دنبال auto compelete هستید. در سایت جستجو کنید و اگر پیدا نشد در سایتهای مشابه (خارجی). این خصوصیت در کامبو باکسهای دات نت اضافه شده اند.
ممنون میشم اگه این کدا رو واسم بزارین
روی combo کلیک کن و بنویس :
ComboBox1.Style:=csDropDownList;
البته این ماله دلفیه ...
آخرین ویرایش به وسیله Yalda2005 : جمعه 05 اسفند 1384 در 23:00 عصر
نه این دستور کمکی نمی کنه
می تونیم یه کاری بکنیم که بعد از فشرده شدن هر کلید کیبرد روی کامبو کلید f4 فراخوانی بشه؟
اگه بشه این کار رو کرد احتمالا مشکل حل میشه
یا اینکه بعد از فشرده شدن هر کلید کیبرد , اوکی رو به بالا فراخوانی بشه
کسی میدونه چطور باید این کار رو کد؟
combo1.setfocus
sendkeys{F4}
اصلا نیازی به کد نویسی نیست . یک نمونه کار سر فرصت میزارم
دوست عزیز همونطور که گفتم نیازی به هیچ کدی نیست برنامه رو نگا کن متوجه میشی .
با زدن حرف اول هر اسم - اسم مورد نظر پیدا میشه و اگر چندتا اسم حرف اولشون یکی بود با کلید جهت رو به پایین میتونی جستجو رو ادامه بدی
ممنون
ولی شما چون DB استفاده کردی اینجوریه
بیا این هم تابعهایی که بهت گفتم با یه مثال کامل برات توضیح دادم این دیگه حتما مشکلت را برطرف می کنه اگه خواستی کد برای datacombo هم دارم خواستی بگو و دیگه اینکه تابعها میشه جوری هم تغییر داد که از اول رشته ها جستجو نکنه ودر کل رشته جستجو کنه
اونی که من عرض کردم درسته که شاید راه اصولی ای نباشه
ولی همه جا کار می کنه
نه فقط تو db
سلام خدمت دوستان عزیز
خانم mahboobeh یک فایل مانیفست کنار برنامه Exe ات قرار بده مشکل جستجوت هم در کامبو باکس و هم در دیتا کمبو خود به خود حل میشود بدون یک خط کد نویسی.
اگر نشد بگو یک نمونه برنامه در اینجا قرار دهم .
فایل مانیفست خوب چیکار میکنه که درست میشه؟
بعنی مکانیزمش چیه؟
بعدش اون فایل مانیفست بعضی وقتا تو بعضی سیستم ها error میده
ببخشید این فایل مانیفست اصلا چیه ؟
یه فایل Xml هست که میزارن کنار برنامه و قیافه کنترل ها مثل XP میشه بگردی تو سایت هست
با سلام خدمت دوستان عزیز
یک برنامه نمونه گذاشتم .
همانطور که قبلاً گفته شد یک فایل مانیفست باید هم نام و کنار فایل اجرایی برنامه ما باشد .
برنامه ای را هم که من آپلود کردن اگر فایل اجرایی را اجرا کنید عمل جستجو را انجام میدهد ولی اگر به محیط طراحی در VB بروید کار نمیکند برای حل این مشکل یک کپی از فایل مانیفستی که در پوشه آپلود شده است را در مسیری که VB را نصب کرده اید و با نام vb6.exe.manifest کپی کنید و از دفعه بعد که VB را باز کنید هم شکل کنترل ها عوض میشود و هم سرچ در کامبو ها درست میشود . در جواب نوشته H_SH_VB عزیز که گفته بود در بعضی سیستم ها Error میدهد اگر از روش صدا زدن یک تابع API که در این برنامه هم هست استفاده کنی دیگر از Error خبری نیست .
موفق باشید .
آخرین ویرایش به وسیله Milad Mohseny : دوشنبه 15 اسفند 1384 در 01:26 صبح
آقا ممنون
ولی با این تابع هم باز Error میده یعنی قبلا که با همین امتحان کردم میداد
شما میدونی حالا چرا من وقتی از کنترل KewlButton استفاده می کنم رو بعضی سیستم ها out of memory میده؟
مشکل رم و اینا نیست البته ها
دوست عزیز ببین با اینها مشکلت حل میشه .
البته لازم به ذکر است که محتویات این پوشه تماماً از این سایت دانلود شده و هیچکدام مال من نیست .
آخرین ویرایش به وسیله Milad Mohseny : دوشنبه 15 اسفند 1384 در 01:26 صبح
چرا آدرس سایت غیر فعال است ؟ میشه لطفا برای من هم این کدها رو بفرستید.
مرسی
آخرین ویرایش به وسیله adhami : شنبه 27 اسفند 1384 در 15:56 عصر