परिचय।
पिछले सप्ताह के ActiveX ListView Control Tutorial-01 से जारी है।
ट्यूटोरियल के इस सत्र में, हम सीखेंगे कि कैसे विशेष पंक्ति और कॉलम मानों को खोजना और खोजना है और उन्हें फॉर्म पर लेबल नियंत्रण पर प्रदर्शित करना है। यह बहुत उपयोगी है जब हमारे पास ListView नियंत्रण में बड़ी मात्रा में डेटा होता है। हम कुछ ListView प्रॉपर्टी सेटिंग के उपयोग के बारे में भी जानेंगे।
सबसे पहले, हम देखेंगे कि कॉलम को पुनर्व्यवस्थित करना कितना आसान है, जैसे हम एक्सेस डेटाशीट के साथ करते हैं जिस तरह से हम चाहते हैं कि वे लिस्ट व्यू कंट्रोल पर हों। हमने खोज मापदंडों के आसान चयन और खोज परिणामों के प्रदर्शन के लिए कुछ टेक्स्टबॉक्स, कॉम्बोबॉक्स, कमांड बटन और लेबल जोड़े हैं।
मैंने पिछले सप्ताह के डेमो डेटा में कुछ बदलाव किए हैं। पहला कॉलम मान मैंने Northwind.accdb नमूना डेटाबेस के कर्मचारी तालिका से लिया है। अंतिम नाम और प्रथम नाम मानों को फ़ील्ड नाम छात्र और कर्मचारी आईडी के साथ कुंजी (X01, X02 ...) के रूप में उपयोग करने के लिए एक क्वेरी बनाया गया।
सर्च ऑपरेशन के लिए जाने से पहले, हम यह जांचेंगे कि ड्रैग एंड ड्रॉप विधि द्वारा कॉलम को फिर से कैसे व्यवस्थित किया जाए।
नोट: यदि आप पिछले ट्यूटोरियल पेज से नहीं गए हैं और इस सत्र को जारी रखना चाहते हैं, तो लिस्ट व्यू कंट्रोल ट्यूटोरियल-01 पेज पर जाएं और उस पेज के नीचे से डेमो डेटाबेस डाउनलोड करें।
फ़ाइल को अनज़िप करें और डेटाबेस खोलें। डेमो फॉर्म सामान्य दृश्य में होगा।
-
अपना डेटाबेस खोलें, पिछले सत्र के डेमो फॉर्म, या आपके द्वारा बनाए गए फॉर्म के साथ, इसे सामान्य दृश्य में खोलें।
अब, हम सूची के मध्य से एक कॉलम को खींचने और स्थानांतरित करने का प्रयास करेंगे (जैसे वजन कॉलम), और इसे आयु तक छोड़ दें। कॉलम और देखें कि क्या होता है। क्या होने की उम्मीद है कि आयु कॉलम दाईं ओर शिफ्ट हो जाना चाहिए और आने वाले कॉलम को उसके स्थान पर सम्मिलित करना चाहिए।
-
कॉलम हैडर पर माउस पॉइंटर को वेट, . नाम से मूव करें बाईं माउस बटन पर क्लिक करें और दबाए रखें। जब आप बाईं माउस बटन दबाते हैं तो कॉलम हेडर थोड़ा नीचे चला जाएगा।
-
अब, स्तंभ को बाईं ओर खींचने का प्रयास करें और इसे आयु . स्तंभ पर छोड़ दें ।
कुछ नहीं होगा, क्योंकि हमने संपत्ति पत्रक में इस सुविधा को सक्षम नहीं किया है और यही एकमात्र सेटिंग है, हमें इस सुविधा को काम करने के लिए बदलने की जरूरत है।
-
प्रपत्र को डिज़ाइन दृश्य में बदलें।
-
लिस्ट व्यू कंट्रोल पर राइट-क्लिक करें और विकल्प को हाइलाइट करें ListViewCtrl ऑब्जेक्ट और गुण चुनें।

-
एक विकल्प है 'AllowColumnReorder ' दाहिने तरफ़। इसे चुनने के लिए चेक-चिह्न लगाएं, फिर लागू करें . पर क्लिक करें बटन के बाद ठीक संपत्ति दृश्य को बंद करने के लिए बटन।
-
अब, ऊपर दिए गए चरण 2 और 3 को दोहराने का प्रयास करें और देखें कि क्या होता है।
ListView Control पर इस सुविधा को सक्षम करने के लिए आपको केवल यही सेटिंग चाहिए। शायद आप सोच रहे होंगे कि पंक्तियों को पुनर्व्यवस्थित करने के बारे में क्या?.
उस फ़ंक्शन को कुछ ईवेंट प्रक्रियाओं की प्रोग्रामिंग की आवश्यकता होती है जैसा कि हमने पहले ट्री व्यू कंट्रोल ड्रैग-ड्रॉप इवेंट्स में किया था। वह हिस्सा हम कुछ समय बाद करेंगे।
-
आप किसी भी कॉलम के साथ प्रयोग कर सकते हैं ताकि आप कहीं भी स्थानांतरित हो सकें, जिसमें पहला कॉलम भी शामिल है।
नोट: स्रोत कॉलम को छोड़ने से पहले देखें कि ड्रॉप करने का प्रयास करने से पहले लक्ष्य कॉलम आने वाले कॉलम फ्रेम द्वारा कवर किया गया है। अन्यथा, आने वाला कॉलम दाईं ओर अगले कॉलम की स्थिति में शिफ्ट हो सकता है।
इसके बाद, हम सीखेंगे कि ListView से कुछ जानकारी जल्दी से कैसे प्राप्त करें, यह मानते हुए कि हमारे पास बड़ी मात्रा में डेटा है।
हमने लाल पृष्ठभूमि रंग के साथ फॉर्म पर एक कॉम्बो बॉक्स में कॉलम हेडर नाम लोड करने के लिए ट्यूटोरियल -01 मॉड्यूल में एक सबरूटीन जोड़ा है। कॉलम नाम का उपयोग किसी छात्र के कॉलम मान (आयु, ऊंचाई, वजन, या कक्षा) को खोजने के लिए किया जाएगा।
नया VBA कोड फॉर्म क्लास मॉड्यूल में जोड़ा गया।
निम्नलिखित नई VBA प्रक्रिया पिछले सप्ताह के ट्यूटोरियल फॉर्म के क्लास मॉड्यूल में जोड़ी गई है:
txtColCombo ComboBox में कॉलम हैडर लेबल्स (फ़ील्ड नाम) की सूची बनाता है। छात्र की आयु, ऊंचाई, वजन, . के इन विवरणों में से एक या कक्षा खोज और खोज अभियान के हिस्से के रूप में छात्र के नाम के साथ पाया जा सकता है।
Private Sub txtColCombo()
'Column Header List Combo
Dim lvwColHead As MSComctlLib.ColumnHeader
Dim cboName As ComboBox
Set cboName = Me.txtCol
cboName.RowSourceType = "Value List"
For Each lvwColHead In lvwList.ColumnHeaders
If lvwColHead.Index = 1 Then
'Nothing
Else
cboName.AddItem lvwColHead.Text
End If
Next
'cboName.DefaultValue = "=txtCol.Column(0, 0)"
Set lvwColHead = Nothing
Set cboName = Nothing
End Sub
Combobox को Column Header नाम के डिफ़ॉल्ट मान के साथ लोड नहीं किया जाएगा। यदि चुना जाता है तो छात्र का कॉलम मान छात्र के नाम के नीचे बड़े लेबल में प्रदर्शित होता है। अगर इसे खाली छोड़ दिया जाता है, तो तलाशी अभियान में केवल छात्र का नाम ही मिलेगा।
खोज ऑपरेशन विधि बहुत लचीली और त्वरित है। रिकॉर्ड खोजने के लिए हमारे पास दो तरीके हैं।
खोज टेक्स्ट प्रदान करके रिकॉर्ड खोजें। खोज पाठ किसी भी स्तंभ से हो सकता है या तो पूर्ण पाठ या बाईं ओर से आंशिक रूप से कुछ वर्ण। चूंकि हमारे पास ListView नियंत्रण में एक पंक्ति में ऑब्जेक्ट सदस्यों की दो श्रेणियां हैं:ListItem - पहला कॉलम और अन्य कॉलम ListSubItems हैं। इन ऑब्जेक्ट्स पर टेक्स्ट सर्च ऑपरेशन अलग से किया जाता है।
खोज-और-खोज विकल्पों का चयन करने के लिए प्रपत्र पर खोज-पाठ इनपुट टेक्स्टबॉक्स के बगल में दो चेकबॉक्स वाला एक विकल्प समूह प्रदान किया गया है। पहला विकल्प डिफ़ॉल्ट रूप से चुना जाता है और खोज पहले कॉलम (ListItem .) पर की जाती है ) दिए गए टेक्स्ट को देखने के लिए।
ListSubItem . में टेक्स्ट खोजने के लिए दूसरा विकल्प चुनें कॉलम.
नोट: स्तंभों को फिर से व्यवस्थित करने से ऑब्जेक्ट नहीं बदलेंगे, बल्कि केवल उनकी प्रदर्शन स्थिति बदल जाएगी। एक ListSubItem . को खींचना कॉलम और इसे पहले कॉलम में लाने से नहीं बदलेगा इसे एक ListItem . में वस्तु।
यदि आप किसी विशेष कॉलम से अज्ञात मान प्राप्त करना चाहते हैं, तो खोज टेक्स्ट के लिए फॉर्म पर पहले टेक्स्टबॉक्स के नीचे दिए गए कॉम्बोबॉक्स से कॉलम नाम चुनें। उदाहरण के लिए, आप किसी छात्र की ऊंचाई माप नहीं जानते हैं और यह पता लगाना चाहते हैं, कॉलम नाम ऊंचाई चुनें कॉम्बोबॉक्स से।
उपरोक्त मान (मानों) को सेट करने के बाद आइटम ढूंढें . पर क्लिक करें सर्च ऑपरेशन के लिए जाने के लिए कमांड बटन। यदि खोज सफल रही, तो परिणाम कमांड बटन के नीचे बड़े लेबल नियंत्रण में प्रदर्शित होगा।
[आइटम ढूंढें] कमांड बटन क्लिक करें।
SearchAndFind() को कॉल करता है प्रक्रिया.
Private Sub SearchAndFind()
'Find by Student Name
Dim lstItem As MSComctlLib.ListItem
Dim strFind As String
Dim strColName As String
Dim strColVal As String
Dim j As Integer
Dim intOpt As Integer
Dim msgText As String
Me.Refresh
intOpt = Me.Opts
strFind = Nz(Me![txtFind], "")
strColName = Nz(Me![txtCol], "")
Select Case intOpt
Case 1
Set lstItem = lvwList.FindItem(strFind, , , lvwPartial)
If Not lstItem Is Nothing Then
j = lstItem.Index
'format the display text
msgText = lvwList.ColumnHeaders.Item(1).Text
msgText = msgText & " : " & lstItem.Text & vbCr & vbCrLf
Else
MsgBox "Text '" & strFind & "' Not Found!", vbOKOnly + vbCritical, "cmdFind_Click()"
Exit Sub
End If
Case 2
Set lstItem = lvwList.FindItem(strFind, lvwSubItem, , lvwPartial)
If Not lstItem Is Nothing Then
'format the display text
j = lstItem.Index
msgText = lvwList.ColumnHeaders.Item(1).Text
msgText = msgText & ": " & lstItem.Text & vbCr & vbCrLf
Else
MsgBox strFind & " Not Found!", vbOK + vbCritical, "cmdFind_Click()"
Exit Sub
End If
End Select
If Len(strColName) = 0 Then 'If column name is not selected
GoTo nextStep
Else
'Get the column value
strColVal = GetColVal(lstItem, strColName)
msgText = msgText & String(8 - (Len(strColName)), " ") & _
strColName & ": " & Nz(strColVal, "")
End If
nextStep:
If Len(msgText) > 0 Then 'assign to form label
lvwList.ListItems.Item(j).Selected = True
lblMsg.caption = msgText
End If
End Sub कार्यक्रम की शुरुआत में, दोनों विद्यार्थी का नाम और स्तंभ नाम ( 0 वैकल्पिक), टेक्स्टबॉक्स से वेरिएबल में कॉपी किए जाते हैं strFind और strColName क्रमशः सत्यापन जांच के बाद।
नोट: कॉलम नाम कॉम्बो बॉक्स की सूची में नहीं संपत्ति हां पर सेट है। आप सूची से एक मान्य मान का चयन कर सकते हैं या इसे टाइप कर सकते हैं या कॉम्बो बॉक्स को खाली छोड़ सकते हैं। यदि आप कोई भिन्न मान टाइप करते हैं जो सूची में नहीं है, तो इसे स्वीकार नहीं किया जाएगा।
चयनित खोज विकल्प के आधार पर (1 - ListItem या 2 - ListSubItem) स्कैन विधि निर्दिष्ट ऑब्जेक्ट को निर्देशित की जाती है।
इन खोज विधियों में से किसी एक का उपयोग करने से ListItem ऑब्जेक्ट . मिल जाएगा या पंक्ति जिसमें खोज पाठ है। ListItem का अनुक्रमणिका मान वेरिएबल J . में सहेजा गया है कार्यक्रम में बाद में उपयोग के लिए।
नोट: सिस्टम स्वचालित रूप से इंडेक्स ऑटो-नंबर बनाता है जब ListView नियंत्रण आइटम पॉप्युलेट होते हैं।
ListItem.Text मूल्य पुनर्प्राप्त किया जाता है। यह जानकारी पहले ColumnHeader से जुड़ी हुई है। पाठ (जैसे विद्यार्थी:रॉबर्ट किंग) और प्रपत्र पर लेबल नियंत्रण में प्रदर्शित करने के लिए Msgtext स्ट्रिंग में जोड़ा गया।
यदि कॉम्बोबॉक्स में कॉलम हैडर नाम चुना गया है, तो GetColVal() फ़ंक्शन को ListItem ऑब्जेक्ट और कॉलम हैडर टेक्स्ट मान के साथ पैरामीटर के रूप में कहा जाता है। यह विकल्प किसी विद्यार्थी के बारे में अज्ञात जानकारी, जैसे विद्यार्थी की ऊँचाई, को रिकॉर्ड से प्राप्त करने के लिए अच्छा है।
GetColVal() फंक्शन VBA कोड।
Private Function GetColVal(lvwItem As MSComctlLib.ListItem, ByVal colName As String) As String
Dim i As Integer
Dim strVal As String
'first column is student name
'check for column value from 2nd column onwards
For i = 2 To lvwList.ColumnHeaders.Count
If lvwList.ColumnHeaders(i).Text = colName Then 'if col name matches
strVal = lvwItem.ListSubItems.Item(i - 1).Text 'get column value
Exit For 'No further scanning required
End If
Next
GetColVal = strVal 'return the retrieved the value
End Function उपरोक्त फ़ंक्शन दो मापदंडों के लिए पूछता है। पहला पैरामीटर ListItem है, जहां छात्र का नाम मिलता है। दूसरा पैरामीटर कॉलम नाम है। चयनित छात्र की आयु, ऊंचाई, वजन, कक्षा मान ListItem.ListSubItems . में संग्रहीत हैं वस्तुएं। फ़ंक्शन lvwList.ColumnHeader . के माध्यम से देखता है मिलान कॉलम नाम खोजने के लिए मान, जब पाया गया कि कॉलम इंडेक्स नंबर का उपयोग ListSubItems ऑब्जेक्ट से कॉलम मान पुनर्प्राप्त करने के लिए किया जाता है और कॉलिंग प्रोग्राम को मान देता है।
[कुंजी द्वारा खोजें] कमांड बटन क्लिक करें घटना प्रक्रिया।
हमारे पास ListItem . के अद्वितीय कुंजी-मान का उपयोग करके छात्र का नाम खोजने के लिए एक और तरीका जोड़ा गया है यदि ListItem सूची बनाते समय उपयोग किया जाता है। हालांकि यह वैकल्पिक है, इसे अनदेखा करने के बजाय अद्वितीय कुंजी स्ट्रिंग मान (वर्णमाला वर्ण से शुरू होना चाहिए) जोड़ना बेहतर है।
उदाहरण के लिए, यदि हमें किसी की जानकारी को उनकी पहचान संख्या जैसे सामाजिक सुरक्षा संख्या, राष्ट्रीय पहचान पत्र संख्या, पासपोर्ट संख्या या ड्राइविंग लाइसेंस संख्या आदि से खोजना है, तो इस जानकारी में से एक को ListItem के मुख्य मूल्य के रूप में उपयोग किया जा सकता है। उपरोक्त खोज-दर-पाठ विधि के बजाय इस अद्वितीय मान के साथ एक रिकॉर्ड ढूँढना बहुत आसान और तेज़ है।
cmdKey_Click() ईवेंट प्रक्रिया।
Calls FindByKey() Subroutine.
Private Sub FindByKey()
Dim colHeader As MSComctlLib.ColumnHeader
Dim lvItem As MSComctlLib.ListItem
Dim lvKeyVal As String
Dim lvColName As String
Dim txt As String
Dim msgText As String
Dim varcolVal As Variant
lvKeyVal = UCase(Nz(Me!txtKey, ""))
lvColName = Nz(Me!txtCol, "")
If len(lvKeyVal) > 0 then
On Error Resume Next
Set lvItem = lvwList.ListItems.Item(lvKeyVal) 'get the item by Key
If Err > 0 Then
Err.Clear
MsgBox "Key Value: '" & lvKeyVal & "' Not Found!", vbOKOnly + vbCritical, "cmdKey_Click()"
On Error GoTo 0
Exit Sub
End If
Else
MsgBox "Please Provide a Valid Key-Value!",vbOKOnly + vbCritical, "cmdKey_Click()"
Exit Sub
End If
txt = lvItem.Text 'get the student name
'format message text
msgText = lvwList.ColumnHeaders.Item(1).Text & " : "
msgText = msgText & txt & vbCr & vbCrLf
If Len(lvColName) > 0 Then 'if column name is given
varcolVal = GetColVal(lvItem, lvColName) 'get column val of student
msgText = msgText & String(8 - Len(lvColName), " ") & lvColName & ": " & varcolVal ' add it to display
End If
lvItem.Selected = True 'highlight the item on form
Me.lblMsg.caption = msgText 'assign details to form Label
End Sub जैसा कि आप उपरोक्त सबरूटीन में देख सकते हैं, हम सीधे ListItem . ढूंढ सकते हैं जहां छात्र का नाम है, Key-value, . के उपयोग से एक ही कथन के साथ: lvItem =lvwList.ListItems.Item(xKeyVal) सेट करें।
अगली पंक्ति ListItem टेक्स्ट (या विद्यार्थी का नाम) को वेरिएबल txt में पढ़ती है . अगली दो पंक्तियाँ msgText स्ट्रिंग वेरिएबल में विद्यार्थी के नाम के साथ संदेश टेक्स्ट बनाती हैं।
अगला यदि . . तब स्टेटमेंट जांचता है कि कॉम्बो बॉक्स नियंत्रण में कॉलम नाम मान दर्ज किया गया है या नहीं। यदि यह मिल जाता है, तो GetColVal() . पर कॉल करें कॉलम मान को खोजने के लिए आवश्यक पैरामीटर के साथ कार्य करें और इसे varColVal . में पुनर्प्राप्त करें वेरिएबल और कॉलिंग प्रोग्राम में वापस आ जाता है। स्तंभ का नाम और उसका पुनः प्राप्त मान प्रपत्र पर लेबल नियंत्रण पर प्रदर्शित करने के लिए msgText स्ट्रिंग चर में जोड़ा जाता है।
अगला कथन छात्र की रिकॉर्ड पंक्ति को एक दृश्य संकेत के रूप में हाइलाइट करता है कि खोजा गया आइटम पंक्ति में पाया जाता है। msgText मान फ़ॉर्म पर लेबल की कैप्शन प्रॉपर्टी में प्रदर्शित होता है।
फॉर्म मॉड्यूल पर पूर्ण VBA कोड।
Option Compare Database
Option Explicit
Dim lvwList As MSComctlLib.ListView 'ListView Control
Dim lvwItem As MSComctlLib.ListItem '
Dim ObjImgList As MSComctlLib.ImageList
Const prfx As String = "K"
Private Sub Form_Load()
Call LoadListView
Call txtColCombo
End Sub
Private Function LoadListView()
'Populate the ListView control with Student Details
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intCounter As Integer
Dim strKey As String
'Assign ListView Control on Form to lvwList Object
Set lvwList = Me.ListView1.Object
With lvwList
.AllowColumnReorder = True
.Enabled = True
.Font = "Verdana"
.Font.Bold = True
.Font.Size = 9
.ForeColor = vbBlack
.BackColor = vbWhite
End With
'Create Column Headers for ListView
With lvwList
.ColumnHeaders.Clear 'initialize header area
'Syntax: .ColumnHeaders.Add Index, Key, Text, Width, Alignment, Icon
.ColumnHeaders.Add , , "Student", 2500
.ColumnHeaders.Add , , "Age", 1200
.ColumnHeaders.Add , , "Height", 1200
.ColumnHeaders.Add , , "weight", 1200
.ColumnHeaders.Add , , "Class", 1200
End With
'Initialize ListView Control
While lvwList.ListItems.Count > 0
lvwList.ListItems.Remove (1)
Wend
'Student Names and Ids are taken from Employees Table
'through the StudentQ Query.
Set db = CurrentDb
Set rst = db.OpenRecordset("StudentQ", dbOpenDynaset)
With lvwList
Do While Not rst.EOF And Not rst.BOF
intCounter = rst![EmployeeID]
strKey = "X" & Format(intCounter, "00") 'Key Value sample: X01
'Syntax: .ListItems.Add(Index, Key, Text, Icon, SmallIcon)
Set lvwItem = .ListItems.Add(, strKey, rst![Student])
With lvwItem
'Syntax: .Add Index,Key,Text,Report Icon,TooltipText
.ListSubItems.Add , strKey & CStr(intCounter), CStr(5 + intCounter)
.ListSubItems.Add , strKey & CStr(intCounter + 1), CStr(135 + intCounter)
.ListSubItems.Add , strKey & CStr(intCounter + 2), CStr(40 + intCounter)
.ListSubItems.Add , strKey & CStr(intCounter + 3), ("Class:" & Format(intCounter, "00"))
End With
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
Set db = Nothing
Set lvwItem = Nothing
End With
lvwList.Refresh
End Function
Private Sub cmdClose_Click()
DoCmd.Close acForm, Me.Name
End Sub
Private Sub cmdFind_Click()
Call SearchAndFind
End Sub
Private Sub cmdKey_Click()
Call FindByKey
End Sub
Private Function GetColVal(lvwItem As MSComctlLib.ListItem, ByVal colName As String) As String
Dim i As Integer
Dim strVal As String
'first column is student name
'check for column value from 2nd column onwards
For i = 2 To lvwList.ColumnHeaders.Count
If lvwList.ColumnHeaders(i).Text = colName Then 'if col name matches
strVal = lvwItem.ListSubItems.Item(i - 1).Text 'get column value
Exit For 'No further scanning required
End If
Next
GetColVal = strVal 'return the retrieved the value
End Function
Private Sub txtColCombo()
'Column Header List Combo
Dim lvwColHead As MSComctlLib.ColumnHeader
Dim cboName As ComboBox
Set cboName = Me.txtCol
cboName.RowSourceType = "Value List"
For Each lvwColHead In lvwList.ColumnHeaders
If lvwColHead.Index = 1 Then
'Nothing
Else
cboName.AddItem lvwColHead.Text
End If
Next
'cboName.DefaultValue = "=txtCol.Column(0, 0)"
Set lvwColHead = Nothing
Set cboName = Nothing
End Sub
Public Sub SearchAndFind()
'Find by Student Name
Dim lstItem As MSComctlLib.ListItem
Dim strFind As String
Dim strColName As String
Dim strColVal As String
Dim j As Integer
Dim intOpt As Integer
Dim msgText As String
Me.Refresh
intOpt = Me.Opts
strFind = Nz(Me![txtFind], "")
strColName = Nz(Me![txtCol], "")
Select Case intOpt
Case 1
Set lstItem = lvwList.FindItem(strFind, , , lvwPartial)
If Not lstItem Is Nothing Then
j = lstItem.Index
'format the display text
msgText = lvwList.ColumnHeaders.Item(1).Text
msgText = msgText & " : " & lstItem.Text & vbCr & vbCrLf
Else
MsgBox "Text '" & strFind & "' Not Found in the List!", vbOKOnly + vbCritical, "cmdFind_Click()"
Exit Sub
End If
Case 2
Set lstItem = lvwList.FindItem(strFind, lvwSubItem, , lvwPartial)
If Not lstItem Is Nothing Then
'format the display text
j = lstItem.Index
msgText = lvwList.ColumnHeaders.Item(1).Text
msgText = msgText & ": " & lstItem.Text & vbCr & vbCrLf
Else
MsgBox strFind & " Not Found!", vbOK + vbCritical, "cmdFind_Click()"
Exit Sub
End If
End Select
If Len(strColName) = 0 Then 'If column name is not selected
GoTo nextStep
Else
'Get the column value
strColVal = GetColVal(lstItem, strColName)
msgText = msgText & String(8 - (Len(strColName)), " ") & _
strColName & ": " & Nz(strColVal, "")
End If
nextStep:
If Len(msgText) > 0 Then 'assign to form label
lblMsg.caption = msgText
lvwList.ListItems.Item(j).Selected = True
End If
End Sub
Public Sub FindByKey()
Dim colHeader As MSComctlLib.ColumnHeader
Dim lvItem As MSComctlLib.ListItem
Dim lvKeyVal As String
Dim lvColName As String
Dim txt As String
Dim msgText As String
Dim varcolVal As Variant
lvKeyVal = UCase(Nz(Me!txtKey, ""))
lvColName = Nz(Me!txtCol, "")
On Error Resume Next
If Len(lvKeyVal) > 0 Then
Set lvItem = lvwList.ListItems.Item(lvKeyVal) 'get the item by Key
If Err > 0 Then
Err.Clear
MsgBox "Key Value: '" & lvKeyVal & "' Not Found!", vbOKOnly + vbCritical, "cmdKey_Click()"
On Error GoTo 0
Exit Sub
End If
Else
MsgBox "Please Provide a Valid Key-Value!", vbOKOnly + vbCritical, "cmdKey_Click()"
Exit Sub
End If
txt = lvItem.Text 'get the student name
'format message text
msgText = lvwList.ColumnHeaders.Item(1).Text & " : "
msgText = msgText & txt & vbCr & vbCrLf
If Len(lvColName) > 0 Then 'if column name is given
varcolVal = GetColVal(lvItem, lvColName) 'get column val of student
msgText = msgText & String(8 - Len(lvColName), " ") & lvColName & ": " & varcolVal ' add it to display
End If
lvItem.Selected = True 'highlight the item on form
Me.lblMsg.caption = msgText 'assign details to form Label
End Sub
डेमो डेटाबेस को निम्न लिंक से डाउनलोड करें:
- माइक्रोसॉफ्ट ट्री व्यू कंट्रोल ट्यूटोरियल
- ट्री व्यू कंट्रोल के साथ एक्सेस मेनू बनाना
- ट्री व्यू नोड्स में इमेज असाइन करना
- ट्री व्यू नोड्स-2 में इमेज असाइन करना
- ट्री व्यू कंट्रोल चेकमार्क हटाएं जोड़ें
- ट्री व्यू इमेजकॉम्बो ड्रॉप-डाउन एक्सेस
- ट्रीव्यू नोड्स को ड्रैग एंड ड्रॉप द्वारा पुनर्व्यवस्थित करें
- एमएस-एक्सेस ट्री व्यू के साथ लिस्ट व्यू कंट्रोल
- सूची दृश्य नियंत्रण ड्रैग ड्रॉप इवेंट
- उप-प्रपत्रों के साथ ट्री व्यू नियंत्रण