ImageList ActiveX Control. How to use them Properly?

Visual Basic में विभिन्न प्रकार के ActiveX Controls हैं, जिनका प्रयोग करके हम अपने Data को विभिन्न तरीकों से Display कर सकते हैं और विभिन्न तरीके के User Interface Create कर सकते हैं। अब हम कुछ Special ActiveX Controls के बारे में जानेंगे, जो कि एक Programmer व User दोनों के लिए ज्यादा बेहतर तरीके का Interface Create करने के लिए उपयोगी होते हैं। हम जिन Controls के बारे में जानेंगे, वे निम्नानुसार हैं:

ImageList ActiveX Control

ये Control हमें Icons व Bitmap Images जैसी Graphics Files को अन्य Controls की तरह ही Use करने के लिए अपने Application में Load करने की सुविधा प्रदान करता है।

ListView Control

ये Control हमें हमारे Data को Lists के रूप में Organize करने की सुविधा प्रदान करता है।

TreeView Control

ये Control हमें हमारे Data को Tree के रूप में Organize करने की सुविधा प्रदान करता है।

Toolbar Control

ये Control हमें हमारे Application के लिए Toolbar Create करने की सुविधा प्रदान करता है।

StatusBar Control

ये Control हमें हमारे Application के लिए Status Bar Create करने की सुविधा प्रदान करता है।

Adding ActiveX Control To Toolbox

Visual Basic में उपलब्ध सभी Controls Visual Basic के IDE में Visual Basic के Memory में Load होते ही Toolbox में Place नहीं हो जाते हैं, बल्कि ज्यादातर Controls DLL Files के रूप में होते हैं, जो केवल उसी स्थिति में Visual Basic IDE में Load होते हैं, जब उनकी जरूरत होती है। हमने अभी जिन Controls की बात की है, वे सभी Controls mscomctl.ocx नाम की एक Control File में Store होते हैं और इस Controls को हमें हमारे Visual Basic IDE में इसको Include करना पडता है।

किसी ActiveX Control या उसके Collection को Visual Basic IDE में Attach करने के लिए हमें Visual Basic IDE के Project Menu के Components नाम के Option को Click करना होता है। जब हम इस Option को Click करते हैं, तब हमारे सामने Components नाम का एक Dialog Box Display होता है। इस Dialog Box में हमें “Microsoft Windows Common Controls Library 6.0” नाम के Option के Check Box को Check करके OK Button पर Click करना होता है। जैसे ही हम एसा करते हैं, हमारे Visual Basic IDE के Toolbox में कुछ नए ActiveX Controls Add हो जाते हैं, जिन्हें उसी तरह से Container पर Place किया जा सकता है, जिस तरह से अन्य Controls को Place किया जाता है।

The ImageList Control

ImageList Control एक एसा Control है, जो हमें हमारे Application में Graphical Images को Store करने की सुविधा प्रदान करता है। Application के अन्य Controls ImageList को Images की एक Central Repository के रूप में Use करते हैं। ImageList Control में Icons व Bitmap Images को Hold किया जा सकता है। Run Time में ImageList Control Timer Control की तरह ही Invisible हो जाता है, इसलिए हम इस Control को Form पर किसी भी स्थान पर Place कर सकते हैं।

जब एक बार हम ImageList Control को Form पर Place कर देते हैं, उसके बाद उस ImageList Control में Images को Place किया जा सकता है। जैसाकि हम चित्र में देख सकते हैं, हम ImageList Control में Place किए जाने वाले Images की Size को Control कर सकते हैं। इस Form पर तीन Resolutions 16 X 16, 32 X 32 व 48 X 48 Icon File के Resolutions को Represent करते हैं। चौथा Option Custom को Represent करता है, जो कि हमें Bitmap Images के साथ ही Icons को भी ImageList में Include करने की सुविधा देता है।

हमें Include किए जाने वाले Image की Resolution, Height व Width को Choose करने की जरूरत नहीं होती हैं। हम जैसे ही किसी Image को ImageList में Include करते हैं, Visual Basic स्वयं ही उसकी इन Properties को Determine कर लेता है। जब हम किसी Image को एक बार किसी ImageList Control में Place कर देते हैं, उसके बाद हम उस Image की Resolution Property को Change नहीं कर सकते हैं। Image की ये Properties तब तक के लिए Lock हो जाती है, जब तक कि Image ImageList Control में Included होता है।

ImageList Control में हम जिन Images को Include करते हैं, उन Images की Manage करने के लिए हम Property Page के Images Tab को Use कर सकते हैं। ये Tab हमें Images को Insert करने व किसी अवांछित Image को ImageList Control से Remove करने की सुविधा प्रदान करता है। साथ ही हम हर Image की कुछ Additional Information को भी Set कर सकते हैं। Images के Index की शुरूआत Index Number 1 से होती है, जो कि सबसे पहले Image का Index Number होता है और हर अगली Image के लिए ये Index Number एक-एक के क्रम में Increase होता रहता है।

ImageList के हर Image का एक Index Number होता है, जिसका प्रयोग करके हम किसी Image को Uniquely Identify कर सकते हैं। इसके अलावा यदि हम चाहें, तो हर Image के साथ एक String यानी Key को Set कर सकते हैं। Key Set करने के बाद हम किसी Image को उसके Index Number के साथ ही उसके उस Sting Key से भी Access कर सकते हैं।

उदाहरण के लिए इस ImageList Control में सबसे पहला Image एक Rose Bitmap है, जिसका नाम हमनें Rose Assign कर दिया है। अब यदि हम Index Number 1 को Use करें या Key Rose को Use करें, दोनों ही स्थितियों में Rose नाम का Image ही Access होगा।

ImageList Control में Add किए गए Images को हम विभिन्न प्रकार के अन्य Controls जैसे कि PictureBox, Image Control आदि में Use कर सकते हैं। हम ImageList में Add किए गए Images को Toolbar व ListView Controls में भी Access कर सकते हैं, जिनके बारे में हम आगे जानेंगे।

हालांकि हम विभिन्न Images को Design Time में Include कर सकते हैं, फिर भी कभी-कभी हमें ImageList Control को Run Time में भी Manipulate करने की जरूरत पडती है। इस जरूरत को पूरा करने के लिए हम ImageList Control के ListImages Collection का प्रयोग कर सकते हैं। ListImages Collection में ListImage Control के Objects होते हैं।

ListImage Object and ListImages Collection

हम ImageList Control में जितनी भी Images को Add करते हैं, वे सभी Images ListImages नाम के एक Collection में Store हो जाती हैं। Collection में हर Icon व Bitmap Image एक Separate ListImage Object होता है। हम इन Images को उनके Index Number अथवा Key द्वारा निम्नानुसार Refer कर सकते हैं:

ImageList1.ListImages(1).Picture

यदि हम Key का प्रयोग करके किसी ListImage Object को Access करना चाहें, तो ये काम हम निम्नानुसार कर सकते हैं:

ImageList1.ListImages("Rose").Picture

List के सभी Images को Use करने के लिए हम ListImages Collection में Loop का प्रयोग कर सकते हैं। यदि हम ListImages Collection में Stored सभी Images को किसी PictureBox Control में Display करना चाहें, तो हम ये काम निम्नानुसार Code का प्रयोग करके कर सकते हैं:

Dim picImage as ListImage
For Each picImage In ImageList1.ListImages
Picture1.Picture = picImage.Picture
Next

यदि हमें पता हो कि हमें ImageList के किस Image Object को PictureBox में Move करना है, तो हम इस Movement को करने के लिए निम्नानुसार Codes का प्रयोग कर सकते हैं:

Picture1.Picture = ImageList1.ListImages(1).Picture
OR
Picture1.Picture = ImageList1.ListImages("Rose").Picture

Add and Remove Methods

ListImages Collection में Run Time में नया Image Add करने के लिए हम Collection Object का Add Method Use कर सकते हैं। Add Method का Syntax निम्नानुसार होता हैः

इस Method में Index व Key दोनों Optional Parameters हैं। यदि हम Index को Specify करते हैं, तो ListImages Collection में Load की जाने वाली Image उस Index की Location पर Load होती है। यदि हम Index को Specify नहीं करते हैं, तो ListImages Collection में Add होने वाली नई Image Collection के अन्त में Add होती है। जैसेः

ImageList1.ListImages.Add(, "FolderIcon", LoadPicture("Folder.ico"))

हालांकि हम इस Code द्वारा Collection में Add होने वाले Image का Index Number नहीं जानते हैं, फिर भी हम इस Image को इसके नाम द्वारा Access करके निम्नानुसार Code द्वारा PictureBox Control में Use कर सकते हैं:

Picture1.Picture = ImageList1.ListImages( "FolderIcon").Picture

यदि हम किसी ListImages Collection से किसी Image को Remove करना चाहें, तो हम Collection के Remove Method को Use करके ये काम कर सकते हैं। Remove Method के साथ हमें उस Image का Index Number अथवा Key Value को Argument के रूप में Use करना होता है। ये काम हम निम्नानुसार कर सकते हैं:

ImageList1.ListImages.Remove 1 OR ImageList1.ListImages.Remove "Rose"

Draw Method

ListImage Object के Draw Method का प्रयोग करके हम एक Image को दूसरे Image पर Draw कर सकते हैं। जैसाकि पहले Discus किया गया है कि एक ImageList Control में स्थित Image को PictureBox Control में निम्न Code द्वारा Set किया जा सकता हैः

Picture1.Picture = ImageList.ListImages(1).Picture

हम इसी काम को करने के लिए Draw Method का भी प्रयोग कर सकते हैं। Draw Method को Use करते समय हमारे पास कुछ Additional Options होते हैं, जिनका प्रयोग किया जा सकता है। ये Method निम्नानुसार होता हैः

Index

इस Code में Index उस Image का Index Number है, जिसे Draw करना है। हम इस Index के स्थान पर Image की Key Value String को भी Use कर सकते हैं।

HDC

HDC उस Destination का Device Context ID होता है, जिस पर हम Image को Draw करना चाहते हैं। यदि हम Image को Form पर Draw करना चाहते हैं, तो हमें HDC Argument में Form1.HDC मान Specify करना पडता है। ये Parameter Windows को इस बात की जानकारी देता है कि उसे Form Destination पर Image को Put करना है।

X, Y

ये Optional Parameters होते हैं, जो कि Destination में उस Destination को Identify करते हैं, जहां Image को Draw किया जाना है।

Style

इस Argument में हम निम्न चार मानों में से किसी मान को Specify कर सकते हैं:

imlNormal 

ये Image Normally Display होगा। हम इस Constant के स्थान पर मान 0 का भी प्रयोग कर सकते हैं।

imlTransparent

इस Style को Choose करने पर Image का कुछ हिस्सा Transparent दिखाई देता है। Transparency को ListImage Control की MaskColor Property द्वारा तय किया जा सकता है। हम इस Constant के स्थान पर मान 1 का भी प्रयोग कर सकते हैं।

imlSelected

इस Style का Choose करने पर Image Selected दिखाई देने लगता है। हम इस Constant के स्थान पर मान 2 का भी प्रयोग कर सकते हैं।

imlFocus

इस Style को Choose करने पर Image एसा दिखाई देता है, जैसे Image पर Focus Set हो। हम इस Constant के स्थान पर मान 30 का भी प्रयोग कर सकते हैं।

Overlay Method

यदि हम ListImages Collection से दो Images के Combination को Return करवाना चाहें, तो हम Overlay Method का प्रयोग कर सकते हैं। ये Method एक Function है जो Return Value के रूप में एक Picture Return करता है। इस Method का Syntax निम्नानुसार होता हैः

इस Method में Key1Key2 वे दो Index Number या Key Value Strings होते हैं, जिनके Combination को हम Return करवाना चाहते हैं। इस Combination में प्राप्त होने वाली Resulting Picture Combination को हम Image Control अथवा PictureBox Control में Place कर सकते हैं। हम इस Combination को निम्न Code द्वारा Form पर भी Place कर सकते हैं:

Form1.Picture = ImageList1.Overlay(1, 2)

ImageHeight and ImageWidth Properties

ये दोनों Properties ListImages के Collection के किसी Image की HeightWidth को Pixels Unit में Identify करने का काम करते हैं। इन Properties को Custom Properties Window द्वारा Design TimeRun Time दोनों स्थितियों में की Read/Write किया जा सकता है। एक बात ध्यान रखें कि Images को ListImages में Add करने के बाद अन्य Images का Save Height व Width का होना जरूरी होता है, अन्यथा Error Generate होता है। यदि हम Different Size के Icons को Use करना चाहते हैं, तो हमें हर Size के लिए एक अलग ImageList Controls का प्रयोग करना होता है।

ListImages Property

ये Property किसी ImageList Control में स्थित ListImages Collection Object का Reference Return करता है।

MaskColor and UseMaskColor Properties

MaskColor एक Read/Write Property होती है, जिसका प्रयोग उस Color को Identify करने के लिए किया जाता है, जिसे ImageList Control के Mask को Create करने के लिए Use किया जाता है। इस Property को Run Time में भी Read अथवा Set किया जा सकता है। जैसे

ImageList1.MaskColor = vbBlack

हम MaskColor Property को Visual Basic के Color Constants, QBColor Function अथवा RGB Function का प्रयोग करके भी Set कर सकते हैं। MaskColor का प्रयोग DrawOverlay Method के साथ किसी Image के किसी हिस्से की Transparency तय करने के लिए किया जाता है।

UseMaskColor Property ये तय करता है कि MaskColor Property का प्रयोग Draw या Overlay Method के हिस्से के रूप में किया जा सकता है अथवा नहीं। इसमें Design Time अथवा Run Time में True या False मान Set किया जा सकता है।

Visual Basic 6 in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Visual Basic 6 in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Visual Basic 6 in Hindi | Page: 175 | Format: PDF

BUY NOW GET DEMO REVIEWS