परिचय।
पिछले सप्ताह के 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 में इमेज असाइन करना
- ट्री व्यू कंट्रोल चेकमार्क हटाएं जोड़ें
- ट्री व्यू इमेजकॉम्बो ड्रॉप-डाउन एक्सेस
- ट्रीव्यू नोड्स को ड्रैग एंड ड्रॉप द्वारा पुनर्व्यवस्थित करें
- एमएस-एक्सेस ट्री व्यू के साथ लिस्ट व्यू कंट्रोल
- सूची दृश्य नियंत्रण ड्रैग ड्रॉप इवेंट
- उप-प्रपत्रों के साथ ट्री व्यू नियंत्रण