Dnissley की प्रतिक्रिया से चारा लेना (जहां वह पूछता है कि क्या कोई ऐड-इन कर सकता है), मैंने VB6 के लिए ऐड-इन बनाया है। यह थोड़ा कच्चा है (और मैं समझाऊंगा कि क्यों जल्द ही), लेकिन यह काम करता है।
मैंने VB6 में एक नया ऐड-इन प्रोजेक्ट बनाया, जिसने मुझे डिफ़ॉल्ट "frmAddin" फॉर्म (जिसका मैं उपयोग नहीं करता) और "कनेक्ट" डिजाइनर दिया। मैंने स्वयं एक कलर क्लास जोड़ी है जिसमें निम्नलिखित शामिल हैं:
विकल्प स्पष्ट
Dim m_iForeColour इंटेगर के रूप में
डिगर m_iBackColour इंटेगर के रूप में
Dim m_iIndicatorColour इंटेगर के रूप में
सार्वजनिक संपत्ति को हमेशा के लिए छोड़ दें (पूर्णांक के रूप में बायल आईआईडी)
m_iForeColour = iID
अंतिम संपत्ति
सार्वजनिक संपत्ति हमेशा के लिए प्राप्त करें () पूर्णांक के रूप में
फ़ोरकॉलर = m_iForeColour
अंतिम संपत्ति
सार्वजनिक संपत्ति बैककॉलर (इंटीजर के रूप में बायवाल आईआईडी)
m_iBackColour = iID
अंतिम संपत्ति
सार्वजनिक संपत्ति GetColour () पूर्णांक के रूप में
बैककॉल = m_iBackColour
अंतिम संपत्ति
सार्वजनिक संपत्ति संकेतक इंगित करें (पूर्णांक के रूप में बायवाल IID)
m_iIndicatorColour = iID
अंतिम संपत्ति
सार्वजनिक संपत्ति संकेतक के रूप में संकेतक () प्राप्त करें
इंडिकेटरकॉलर = m_iIndicatorColour
अंतिम संपत्ति
और फिर मैंने "कनेक्ट" डिजाइनर में कोड में संशोधन किया है जो निम्नानुसार है:
विकल्प स्पष्ट
सार्वजनिक रूप से बूलियन के रूप में परिभाषित किया गया
सार्वजनिक VBnstance VBIDE.VBE के रूप में
कार्यालय के रूप में मंद mcbMenuCommandBar.ommandBarControl
नई frmAddIn के रूप में मंद mfrmAddIn
सार्वजनिक WithEvents MenuHandler CommandBarEvents कमांड बार इवेंट हैंडलर के रूप में
कार्यालय के रूप में मंद mcbToolbar.CommandBarControl
सार्वजनिक WithEvents MenuHandler2 CommandBarEvents के रूप में
रंग के रूप में मंद कोडकॉल्स ()
'************************************************* ****************************
'रनस्क्रिप्ट सब
'------------------------------------------------- ----------------------------
' विवरण:
'उस कोड को चलाता है जो कोड विंडो के लिए आवश्यक रंग सेट करता है
'सक्रिय आईडीई।
'*** एक साबित होने से पहले ही काम किया जाना चाहिए ***
'************************************************* ****************************
उप रनस्क्रिप्ट ()
ReadColoursFile
'उपकरण> विकल्प चुनें
SendKeys "% to", 5
'टैब पर जाएं, "विकल्प" चुनें
SendKeys "+ {TAB}"
SendKeys "{RIGHT}"
'सूची बॉक्स चुनें
SendKeys "{TAB}"
रंग के रूप में मंद colourSetting
आईगर के रूप में मंद iColour
IColour के लिए = 0 से 9
सेटकोर्स iColour, codeColours (iColour)
अगला iColour
SendKeys "~"
अंत उप
'************************************************* ****************************
'ReadColoursFile उप
'------------------------------------------------- ----------------------------
' विवरण:
'रंग फ़ाइल को डिस्क से पढ़ता है और कोडकॉल सरणी को पॉप्युलेट करता है
'SetColour * द्वारा सही रंगों के चयन के लिए विधियों द्वारा उपयोग किया जाता है
'विकल्प स्क्रीन।
'************************************************* ****************************
उप ReadColoursFile ()
स्ट्रिंग के रूप में मंद कोलोरलाइन
मंद colourArray () स्ट्रिंग के रूप में
रंग के रूप में मंद colourSetting
FileSystemObject के रूप में डिम ओएफएसओ
सेट OFSO = नई FileSystemObject
यदि OFSO.FileExists नहीं है (App.Path & "\ VB6CodeColours.dat") तो
MsgBox "VB6CodeColours.dat" और App.Path में नहीं मिला, vbOKOnly, "VB6CodeColours सेटिंग्स फ़ाइल नहीं मिली!"
उप से बाहर निकलें
अगर अंत
सेट ओएफएसओ = कुछ भी नहीं
# 1 के रूप में App.Path और "\ VB6CodeColours.dat" खोलें
रंग के रूप में कोडिमोल (9) को फिर से करें
जबकि ईओएफ (1) नहीं
लाइन इनपुट # 1, कोलोरलाइन
colourArray = विभाजन (colourLine, ",")
यदि IsNumeric (colourArray (0)) तब
अगर codeColours (colourArray (0)) तो कुछ भी नहीं है
ColourSetting = नया रंग सेट करें
यदि IsNumeric (colourArray (1)) तब
colourSetting.ForeColour = CInt (colourArray (1))
अगर अंत
यदि IsNumeric (colourArray (2)) तब
colourSetting.BackColour = CInt (colourArray (2))
अगर अंत
यदि IsNumeric (colourArray (3)) तब
colourSetting.IndicatorColour = CInt (colourArray (3))
अगर अंत
कोड कोड सेट करें (colourArray (0)) = colourSetting
अगर अंत
अगर अंत
बीतना
# 1 बंद करें
ColourSetting सेट करें = कुछ भी नहीं
अंत उप
'************************************************* ****************************
'सेटकोलॉज उप
'------------------------------------------------- ----------------------------
' विवरण:
'सूची से रंग आइटम का चयन करता है और फिर रंग चयनकर्ता को पुन: प्रसारित करता है
'उस आइटम से जुड़े नियंत्रण और उन्हें मूल्यों के अनुसार सेट करता है
'VB6CodeColours.dat फ़ाइल में सेट किया गया।
'************************************************* ****************************
उप SetColours (ByVal iColour इंटेगर के रूप में, रंग के रूप में ColourSetting)
डिम iKey As Integer
SendKeys "{HOME}"
IKey = 1 को iColour के लिए
SendKeys "{DOWN}"
अगला iKey
SetColourSelector colourSetting.ForeColour
SetColourSelector colourSetting.BackColour
SetColourSelector colourSetting.IndicatorColour
SendKeys "+ {TAB}"
SendKeys "+ {TAB}"
SendKeys "+ {TAB}"
अंत उप
'************************************************* ****************************
'सेटकोलॉरसेलर सब
'------------------------------------------------- ----------------------------
' विवरण:
'चयनकर्ता कॉम्बो में रंग सेट करता है। मान लिया गया है कि इस पर ध्यान केंद्रित किया गया है
'कोड चलाने से पहले नियंत्रण से पहले (पहली पंक्ति टैब के लिए)
'मान लिया गया नियंत्रण)।
'************************************************* ****************************
उप SetColourSelector (पूर्णांक के रूप में ByVal iColour)
डिम iKey As Integer
SendKeys "{TAB}"
SendKeys "{HOME}"
IKey = 1 को iColour के लिए
SendKeys "{DOWN}"
अगला iKey
अंत उप
'************************************************* ****************************
'AddinInstance_OnConnection उप
'------------------------------------------------- ----------------------------
' विवरण:
'यह विधि तब चलती है जब Addin IDE द्वारा लोड किया जाता है
'************************************************* ****************************
निजी उप AddinInstance_OnConnection (ByVal Application as Object, ByVal ConnectMode as AddInDesignerObjects.ext_ConnectMode, ByVal AddInstst as ऑब्जेक्ट, रिवाज (आदि) के रूप में वेरिएंट)
त्रुटि GoTo ErrorHandler पर
'vb उदाहरण सहेजें
VBInstance = एप्लिकेशन सेट करें
यदि ConnectMode ext_cm_External फिर
McbMenuCommandBar = AddToAddInCommandBar ("VB6 रंग वीडियो") सेट करें
'घटना को डुबाओ
मुझे सेट करें। MenuHandler = VBInstance.Events.CommandBarEvents (mcbMenuCommandBar)
कार्यालय के रूप में मंद oStdToolbar.ommandBar
कार्यालय के रूप में डिम oStdToolbarItem.CommandBarControl
सेट करें OStdToolbar = VBInstance.CommandBars ("मानक")
सेट oStdToolbarItem = oStdToolbar.Controls.Add (प्रकार: = msoControlButton)
oStdToolbarItem.Style = msoButtonCaption
oStdToolbarItem.Caption = "आईडीई रंग सेट करें"
oStdToolbarItem.BeginGroup = True
मुझे सेट करें। MenuHandler2 = VBInstance.Events.CommandBarEvents (oStdToolbarItem)
अगर अंत
उप से बाहर निकलें
ErrorHandler:
MsgBox Err.Description
अंत उप
'************************************************* ****************************
'AddinInstance_OnDisconnection उप
'------------------------------------------------- ----------------------------
' विवरण:
'यह विधि तब चलती है जब आईडीई द्वारा एडिन को हटा दिया जाता है और किसी को साफ कर देता है
'संदर्भ आदि।
'************************************************* ****************************
निजी उप व्यसन
त्रुटि फिर से शुरू पर
'कमांड बार प्रविष्टि को हटाएं
mcbMenuCommandBar.Delete
ऐड-इन बंद करें
अगर FormDisplayed तब
SaveSetting App.Title, "Settings", "DisplayOnConnect", "1"
फॉर्मडाइप्लेड = गलत
अन्य
SaveSetting App.Title, "Settings", "DisplayOnConnect", "0"
अगर अंत
अनलोड mfrmAddIn
MfrmAddIn = कुछ भी नहीं सेट करें
मेनूहैंडलर सेट करें = कुछ भी नहीं
MenuHandler2 = कुछ भी नहीं सेट करें
अंत उप
'************************************************* ****************************
'MenuHandler_Click उप
'------------------------------------------------- ----------------------------
' विवरण:
'जब मेनू आइटम पर क्लिक किया जाता है तो यह विधि आवश्यक कार्य करती है।
'************************************************* ****************************
निजी सब मेनूहैंडलर_क्लिक (बायल कमांडबार्करोल ऑब्जेक्ट के रूप में, बूलियन के रूप में संभाला, बूलियन के रूप में रद्द करें)
RunScript
अंत उप
'************************************************* ****************************
'MenuHandler2_Click उप
'------------------------------------------------- ----------------------------
' विवरण:
'टूलबार बटन पर क्लिक करने पर यह विधि आवश्यक कार्य करती है।
'************************************************* ****************************
निजी उप मेनूहैंडलर 2_क्लिक करें (ऑब्जेक्ट के रूप में बायल कमांडबर्कंट्रोल, बूलियन के रूप में संभाला, बूलियन के रूप में रद्द करें)
RunScript
अंत उप
'************************************************* ****************************
'AddToAddInCommandBar उप
'------------------------------------------------- ----------------------------
' विवरण:
'निर्दिष्ट आइटम को मेनू सूची में जोड़ता है।
'************************************************* ****************************
AddToAddInCommandBar (स्ट्रिंग के रूप में अनुकूलन) कार्यालय के रूप में। CommandBarControl
मंद cbMenuCommandBar Office के रूप में। CommandBarControl 'कमांड बार ऑब्जेक्ट
वस्तु के रूप में मंद cbMenu
त्रुटि फिर से शुरू पर
'देखें कि क्या हमें ऐड-इन्स मेनू मिल सकता है
सेट cbMenu = VBInstance.CommandBars ("ऐड-इन्स")
अगर cbMenu कुछ भी नहीं है
'उपलब्ध नहीं है इसलिए हम असफल हैं
कार्य से बाहर निकलें
अगर अंत
त्रुटि GoTo ErrorHandler पर
'इसे कमांड बार में जोड़ें
CbMenuCommandBar = cbMenu.Controls.Add (1) सेट करें
'कैप्शन सेट करें
cbMenuCommandBar.Caption = sCaption
AddToAddInCommandBar = cbMenuCommandBar सेट करें
कार्य से बाहर निकलें
ErrorHandler:
'शान से बाहर निकलें
अंत समारोह
यह कोड एप्लिकेशन को मेरे द्वारा वांछित फ़ाइल के रंगों को पढ़ने की अनुमति देता है जो .dll (VB6CodeColours.dat) के समान निर्देशिका में रहता है। इस फ़ाइल में निम्नलिखित शामिल हैं (और यह VB6.EXE में आपके द्वारा प्रतिस्थापित किए जाने वाले रंगों के आधार पर भिन्न होगा, इसलिए एक सीधी प्रतिलिपि और पेस्ट काम नहीं करेगा।
0,14,12,0
1,0,0,0
2,16,13,0
3,0,15,15
4,16,5,5
5,7,12,0
6,11,12,0
7,8,12,0
8,16,10,10
9,16,3,3
जिह्वा लगती है, लेकिन मैं समझाता हूँ। इसमें प्रारूप "कोड कलर", "फोरग्राउंड", "बैकग्राउंड", इंडिकेटर "है, इसलिए शीर्ष पंक्ति फोरग्राउंड के लिए कॉम्बो में 14 वें आइटम के लिए" सामान्य पाठ ", पृष्ठभूमि के लिए 12 वें और संकेतक के लिए 1 सेट करेगी। ।
क्यों मैंने कहा कि यह एक बहुत ही क्रूड समाधान है: * यह SendKeys का उपयोग करता है। कोई और स्पष्टीकरण की आवश्यकता नहीं है, मुझे यकीन है कि :) * उपयोगकर्ता को प्रभावी होने के लिए मेनू / टूलबार विकल्प पर क्लिक करना होगा। * कोड सबसे अच्छा संरचित नहीं है (मेरी राय में) लेकिन उस समय की मात्रा पर आधारित था जिसे मैं उस समय समर्पित कर सकता था। मैं भविष्य में इसे बेहतर बनाने का लक्ष्य रखता हूं, लेकिन यह वर्तमान स्थिति में मेरे लिए ठीक काम करता है (इसलिए मैं शायद इसे छोड़ दूंगा!)।
शायद आधार के साथ, कोई व्यक्ति इस पर और विस्तार कर सकता है।