Аппараттық және бағдарламалық қамтамасыз етуді орнату

Қате Activex контейнері арқылы нысанды жасау мүмкін емес. ActiveX басқару контейнерлерін жасау

Александр Костарев
R-Style Software Lab технологиясы бөлімінің бағдарламашысы.

ActiveX басқару элементтерін жасау арнайы әдебиеттерде кеңінен қарастырылған. Дегенмен, ол ActiveX контейнерлерін жазу әдістерін әлдеқайда сирек, негізінен олардың ActiveX нысандарымен өзара әрекеттесу бөлігі ретінде талқылайды. Одан да азырақ басылымдар өздерінің бағдарламалық интерфейсін (API) қолдайтын контейнерлерді әзірлеу процедураларына арналған, бұл олармен және басқа қолданбалардан немесе сценарий тілдерінен олардағы нысандармен жұмыс істеуге мүмкіндік береді. Мұндай контейнерлердің мысалы ретінде Microsoft Visual Basic, Borland Delphi және т.б. бағдарламалық өнімдерді келтіруге болады.

Дегенмен, қолданыстағы контейнерлер негізінде бірқатар міндеттерді шешу мүмкін емес - бұл бақылаудың мамандандырылған контейнерлерін қажет етеді. Осындай қиындықтардың бірі әзірлеу кезінде күтпеген жалпы операцияларды автоматтандыратын кеңейтілген қолданбаны жасау болып табылады. Автоматтандыру қолданбаның өз нысандарын сыртқа шығаруын және кеңейтімді әзірлеу құралымен біріктірілуін талап етеді. Ғимарат пайдаланушы интерфейсікөп жағдайда пішінге әртүрлі басқару элементтерін кірістіруге негізделген - ActiveX нысандарының контейнері. Осылайша жаратылыс құрал ActiveX контейнерін жасауды талап етеді.

Құралдар кешеніне құрамдас архитектураны енгізу кезінде туындайтын кейбір мәселелерді, сондай-ақ оларды шешу әдістерін қарастырамыз. Бұл басқару контейнерлерін әзірлеушілерді де, ActiveX нысандарын әзірлеушілерді де қызықтыруы мүмкін, өйткені бұл мақала контейнер жағында стандартты басқару интерфейстерінің әртүрлі әдістерінің мақсаты мен қолданылуын көрсетеді.

Ұсынылған шешімдер RS-Forms құрал кешенін әзірлеу тәжірибесіне негізделген - жаңа бағдарламалық өнім R-Style бағдарламалық қамтамасыз ету зертханасы. RS-Forms әзірлеу құралын қамтиды GUIпайдаланушы қосулы Windows платформасы, RSL*, C және C++ тілдерін пайдаланып жасалған бағдарламалардың орындау ортасы, сондай-ақ RSL бағдарламаларының жөндеу жүйесі.

*Object RSL – программалау тілі жоғары деңгей, R-Style Software Lab жасаған. Толық ақпаратты http://www.softlab.ru/products/rsl/ сайтынан қараңыз. - Ескерту. ред.

Жоба шеңберінде пішіндерді құруға, стандартты басқару элементтерін де, оларға еркін ActiveX объектілерін де енгізуге, дайын пішіндерді тұрақты жадта сақтауда сақтауға мүмкіндік беретін пішін құрастырушысының бірінші нұсқасы жүзеге асырылды (1-сурет). орташа және одан жүктеңіз. Конструктордың көмегімен формаға енгізілген кез келген басқару элементінің қасиеттерін, әдістерін және оқиғаларын көруге, сипат мәндерін өзгертуге болады.

Дизайнер жоғарыда сипатталған функционалдылықты қамтамасыз ететін ActiveX басқару контейнеріне (пішін) негізделген. Сонымен қатар, пішін қолдайды әртүрлі опциялароны көрсету параметрлері, оның ішінде ендірілген элементтердің жиектермен пайыздық байланысуы, пернетақта арқылы оларды айналып өту реттілігін бақылау, олардың көріну мүмкіндігі, қаріп түрі мен қаріп өлшемі, фон түсі, мәтін және т.б.

Қолданушының графикалық интерфейсін әзірлеуден басқа, дизайнерде C++ және RSL тілдерінде автоматты түрде код жасау механизмі бар. Конструкторда пішінде орындалатын барлық операциялар бағдарлама кодынан жұмыс уақыты режимінде де қолжетімді болатынын ескеру маңызды.

Күріш. 1. Пішін құрастырушы.

Дизайнерде жасалған графикалық формаларкез келген C/C++ қолданбасында, сондай-ақ Visual Basic немесе RSL сияқты кез келген сценарий тілінде пайдалануға болады. MFC кітапханасымен әзірленген C++ қолданбаларында пішіндерді пайдаланған кезде конструктор диалогтық ресурс редакторы ретінде пайдаланылуы мүмкін.

Енді контейнер құру тұжырымдамасын және ActiveX басқару элементтерімен жұмыс істеу принциптерін талқылайық.

Контейнердің негізгі функциялары

Кез келген басқару элементтерінің контейнерінде ActiveX нысандарын жасауға, олардың дұрыс жұмысын қамтамасыз етуге, оларды жоюға мүмкіндік беретін функционалдылық болуы керек. жедел жады, сондай-ақ объектілер қоймасындағы заттарды тұрақты сақтау ортасында сақтаңыз және одан жүктеңіз*. Контейнер басқару элементтерінің дұрыс жұмыс істеуі үшін қажетті стандартты (Microsoft ActiveX технологиясына сәйкес) функционалдылықты қамтамасыз ететін бірқатар құрамдастарды (2-сурет) қамтиды.

* COM объектілерінің контейнерлері мен серверлерін құрудың жалпы мәселелері Д.Чапелдің «ActiveX және OLE Technologies» кітабында қарастырылған - М .: «Орыс басылымы», 1997 ж.

Контейнер ActiveX басқару элементтері бар қосылым нысандарының жинағын (мысалы, тізім) қолдайды, әр басқару үшін бір қосылым нысаны. Сонымен қатар, бағдарламаланатын контейнер осы жинақтың элементтерімен манипуляциялаудың стандартты механизмін қамтамасыз етуі керек.

Басқару торап нысаны сәйкес элементтің контейнермен дұрыс әрекеттесуі үшін жауап береді. Әрбір қосылым нысаны контейнерге тән сипаттар, әдістер және оқиғалар жиынымен басқаруды кеңейтетін ішкі нысанды қамтиды. Мұндай ішкі объект кеңейтілген басқару деп аталады. Кеңейтілген сипаттардың мысалы ретінде атау (Атау), контейнердегі орын (Ені, Сол жақ) және т.б. Көрсетілген жиындар кез келген жеке басқарудың емес, контейнердің қасиеттері болып табылады, бірақ ол жүйенің пайдаланушысына солай көрінеді. Кеңейтілген басқаруды жүзеге асырудың бірнеше нұсқасы бар. Мысалы, ол байланыс нысанының ішкі нысаны (2-суретті қараңыз) немесе бастапқы басқару элементін біріктіретін нақты COM объектісі болуы мүмкін. Опциялардың әрқайсысының өз артықшылықтары мен кемшіліктері бар. Бұл мақалада біз тек бірінші әдісті қарастырамыз.

Әрбір кеңейтілген басқару элементі ішкі нысан ретінде оның байланысқан басқару элементінен оқиғаларды қабылдау нысанын қамтиды (2-сурет). Оның міндеттері қабылданған оқиғалардың бастапқы сәйкестендірілуін (өзгермелі оқиғаларды өңдеу қажет пе, жоқ па) және қажет болған жағдайда оларды контейнер нысаны иерархиясы бойынша оқиғаларды бағыттауды қамтамасыз ететін оның иесі нысанына (кеңейтілген басқару) беруді қамтиды.

Жасалу сценарийін басқару

Басқару элементін контейнерге енгізу үш кезеңнен тұрады: ActiveX нысанын жасау, оны инициализациялау және белсендіру.

Басқару элементтері контейнердің мекенжай кеңістігінде көмегімен жасалады стандартты мүмкіндіктер CoCreateInstance сияқты COM. Сәйкес ғаламдық бірегей CLSID басқару элементінің идентификаторы ретінде функцияға жіберіледі. Айта кету керек, контейнер жүйедегі COM объектілерін анықтаудың әртүрлі нұсқаларын қолдауы керек - мысалы, бағдарлама идентификаторы ProgID, жол түріндегі бірегей класс идентификаторы және т.б.

Баптандыру кезеңінің негізгі мақсаты қосылым нысанының IOleClientSite интерфейсіне көрсеткішті IOleObject::SetClientSite функциясы арқылы басқару элементіне беру және IPersistStreamInit::InitNew немесе IPersistStreamInit::Load функциясын шақыру (нысанның болуы немесе болуына байланысты) қоймадан жүктеледі немесе жүктелмейді). Нысанды IOleClientSite интерфейсіне меңзерді жіберу жүктеу/бастау алдында немесе одан кейін орын алуы мүмкін; жіберу сәті OLEMISC_SETCLIENTSITEFIRST (IOleObject::GetMiscStatus) атрибутының болуымен анықталады. Бұл маңызды, өйткені көрсеткіш өткен кезде басқару элементі контейнерден қоршаған орта қасиеттерінің мәндерін қай уақытта алатынын анықтайды. Бұл мүмкіндік еленбесе, ActiveX нысанының әрі қарай жұмыс істеуі дұрыс емес болуы мүмкін.

Содан кейін қарастырылған фазаның шеңберінде құрылған ActiveX объектісін толықтыратын кеңейтілген басқару элементінің қасиеттерін бастапқы инициализациялауды жүзеге асыру қажет. Мысалы, объект атын дұрыс орнату керек (контейнердегі басқару элементтерін сәйкестендіруді қамтамасыз ететін Name сипатын инициализациялаңыз). Бағдарламаланатын контейнерге енгізілген кез келген басқару элементі осы сипатты қолдауы керек, бірақ ол бәрібір контейнердің қасиеті болып табылады. Көбінесе, әдепкі бойынша нысандарға олар жататын сыныптың қысқа атауы беріледі (бұл атау USERCLASSTYPE_SHORT параметрі үшін IOleObject::GetUserType әдісімен қайтарылады), контейнер басқару атауларының бірегей екеніне көз жеткізу үшін сандық индекс қосылған. . Алса көрсетілген атаусәтсіз аяқталса немесе ол контейнер логикасын қанағаттандырмаса, онда кейбір алдын ала анықталған атау сәйкес индекспен берілуі мүмкін.

Басқаруды белсендіру белгілі бір әрекеттер тізбегін білдіреді. Бірінші қадам - ​​контейнердегі (басқару сайты) сілтеме нысанына ActiveX нысанының кері сілтемесін орнату. Мұны істеу үшін IOleObject::Advise әдісі шақырылады, оған көрсеткіш жіберіледі. стандартты интерфейс IAdviseSink қосылым нысаны. Әрі қарай, IViewObject тобының интерфейсін дұрыс сұрау керек (спецификацияға сәйкес, ActiveX нысаны мұра иерархиясында орналасқан IViewObject, IViewObject2, IViewObjectEx интерфейстерін қолдай алады) және IViewObject шақыру арқылы ол үшін кері байланыс орнату керек: SetAdvise әдісі көрсеткішті IAdviseSink-ке жібереді. Сонымен қатар, басқару элементіне оның контейнерінің атын айту керек (бұл IOleObject::SetHostName әдісін шақыру арқылы жүзеге асырылады), ActiveX нысанымен дұрыс жұмыс істеу үшін қажетті барлық интерфейстерді (кем дегенде IOleInPlaceObject және IOleControl) сұрау және сақтау керек. Басқару элементін көрнекі түрде көрсету үшін орындалатын соңғы нәрсе - IOleObject::DoVerb* функциясын OLEIVERB_INPLACEACTIVATE параметрімен шақыру.

*ATL енгізуде көрсетілген функция, басқа нәрселермен қатар, қалыпты (терезелік) басқару элементтері үшін терезені жасауға жауапты.

Жою сценарийін басқару

Контейнерге енгізілген басқару элементін жадтан алып тастау үшін оған сәйкес басқару элементімен байланыстыру объектісін жинақтан алып тастау керек, содан кейін екі операцияны ретімен орындау керек: үзу кері байланысжәне сақталған көрсеткіштерді ActiveX нысанының интерфейстеріне босату.

Кері сілтемелерді үзу үшін алдымен жойылатын элементті сілтеме нысанының IAdviseSink интерфейсіне ұстайтын көрсеткіштерді босату қажеттілігі туралы хабарлауыңыз керек (IUnknown::Release әдісіне қоңырау шалу арқылы). Мұны істеу үшін IViewObject::SetAdvise әдістері шақырылады (аргумент ретінде NULL мәнін беру) және IOleObject::Unadvise, олар белсендіру кезеңінде сақталған қатынас идентификаторымен қамтамасыз етілуі керек. Әрі қарай, ActiveX нысанын деинитиализациялау процедурасын белсендіру қажет (IOleObject::Close функциясын шақыру арқылы). Келесі қадам басқару элементіне NULL параметрімен IOleObject::SetClientSite шақыру арқылы IOleClientSite интерфейс көрсеткішін босатуды айту болып табылады.

Сақталған көрсеткіштерді басқару интерфейстеріне босату фазасы оларға бір-бірден Release әдісін шақырудан тұрады. Соңғы көрсеткіш босатылған кезде объект (COM технологиясына сәйкес) жедел жадтан жойылады.

Сценарийді сақтау және жүктеу

Контейнер нысанын сақтауға сақтау, оның түріне қарамастан, контейнердің сипаттарын (мысалы, орта сипаттары) және ендірілген басқару элементтерінің жиынын, яғни әрбір нысанның идентификаторлары мен сипаттарын (соның ішінде кеңейтілгендерін) сақтау болып табылады. коллекцияға жатады. Басқару элементінің идентификаторы CLSID класының ғаламдық бірегей идентификаторы болуы мүмкін. Бұл баптандыру кезеңіне қажетті ActiveX нысанын жасауға және оны көрсетілген идентификатордан кейін дүкенде қамтылған деректермен жүктеуге мүмкіндік береді. Басқару элементінің сипаттарын сақтау үшін, мысалы, ағынға, IPersistStreamInit стандартты ActiveX нысан интерфейсінің Сақтау әдісі шақырылады. Жүктеу үшін бірдей интерфейстің Load әдісі шақырылады.

Бұл сақтау процедурасы контейнер нысанының кейінірек сақтаудан қалпына келтірілуін қамтамасыз етеді. Сақтау уақыты мен жүктеу уақыты арасында жүйеден ешқандай басқару элементтерінің нұсқалары өзгертілмесе немесе жойылмаса, сипатталған әдіс жақсы жұмыс істейді. Мұндай жағдайлар сақталған ActiveX басқару элементтері орнатылмаған немесе тіркелмеген деректер қоймасын бір компьютерден екіншісіне тасымалдау кезінде жиі туындайды. Бұл жағдайда қоймадан контейнер нысанын жүктеу бағдарламаның өліммен аяқталуына әкеледі немесе тұтас контейнерді жүктеу кезінде қатені тудырады. Қателерді болдырмау үшін объект идентификаторынан кейін қоймаға ол сақталатын ақпараттың өлшемін жазу арқылы әртүрлі басқару элементтерінің деректері арасындағы шекараны нақты орнату қажет. Бұл жүктеу фазасының өзін әрбір ActiveX нысанының деректерінің басында дәл орналастыруға, сондай-ақ жүйеде тіркелмеген басқару элементтерін өткізіп жіберуге мүмкіндік береді, бірақ тұтастай контейнер нысанын жүктейді.

ActiveX нысандарын жинау интерфейстері

Стандартқа сәйкес басқару контейнері оған енгізілген ActiveX нысандары арасындағы өзара әрекеттесуді қамтамасыз етуі керек. Мұны істеу үшін оған енгізілген барлық басқару элементтерін санауға мүмкіндік беретін IOleContainer интерфейсін қолдау керек. Егер кеңейтілген басқару элементі болса, тізім негізгі нысанның интерфейстерін емес, оның IUnknown интерфейстерін айналып өтуі керек.

Автоматтандыру клиенттеріне жинаққа кіруді қамтамасыз ету үшін стандартты нысандар жинағы интерфейсін пайдаланыңыз. Стандартты жинаққа элементтердің толық итерациясын қамтамасыз ететін Add, Remove, Clear, Item әдістері және _NewEnum және Count сипаттары кіреді. Мысалы, дизайн тіл Көрнекі Basic әрқайсысы үшін элементтерді және құрылысты санау үшін _NewEnum сипатын пайдаланады келесі үшін Count сипатын және Item әдісін пайдалануды қамтиды. RSL нысанында _NewEnum сипаты қатынасу кезінде пайдаланылады стандартты әдіс CreateEnum ActiveX нысаны. Бұл, мысалы, көрсетілген әдіс арқылы қолданбада ашылған файлдардың атауларын басып шығаратын RSL бағдарламасы арқылы суреттелген. Microsoft Excel(оның мәтіні төменде берілген).

rslx импорттау; ob = ActiveX("Excel.Application", нөл, шын); en = ob.Workbooks.CreateEnum; while (en.next) println(en.item.Name) end;

Жоғарыдағы сценарийлер контейнерге басқару элементін қосу және оны одан жою үшін функцияларды әзірлеуге мүмкіндік береді. Көп жағдайда қосу функциясы басқару элементімен байланыстыру нысанын жасайды (ол жұмыс істеуге қажетті ActiveX нысанының интерфейстеріне барлық көрсеткіштерді сақтайды) және оған ұқсас функцияны шақырады. Соңғысы, өз кезегінде, жоғарыда сипатталған іске асыру сценарийін жүзеге асырады (мүмкін белсендіру фазасынсыз). Егер ЖЖҚ-да ActiveX нысанын жасау сәтті болса, онда контейнер функциясы жинаққа сәйкес сілтеме нысанын қосады. Көбінесе олардың ұқсастығына байланысты дүкеннен басқару элементін енгізу және жүктеу процедуралары біріктіріледі.

* * *

Біз мұнда басқару контейнерлерін құруға қатысты негізгі мәселелерді қарастырдық: инъекция, визуалды дисплей, ActiveX объектісін сақтау және жүктеу, сонымен қатар оны жедел жадтан дұрыс жою. Дегенмен, графикалық жұмыс ортасын құру процесінде бізге ұсынылған автоматтандыру интерфейстерінде бір-бірінен ерекшеленетін бірнеше контейнерлерді енгізу қажет болды, енгізуге болатын ActiveX объектілерінің ішкі жиындары, кеңейтілген басқару элементтерінің сипаттар жиыны, әдістері мен оқиғалары, және тағы басқа. Ол үшін әртүрлі контейнер элементтерін жасауға мүмкіндік беретін және ATL кітапханасымен жақсы біріктірілген модель ұсынылды. Белгілі бір интерфейстерден тәуелсіздікке параметрлері осы интерфейстер болып табылатын үлгі кластарын пайдалану арқылы қол жеткізіледі.

*Мысалы, Tab басқару элементі жалпы мақсаттағы контейнерлер болып табылатын сипат беттеріне арналған контейнер.

Бұл модель әртүрлі ActiveX нысандарының негізгі нұсқаларын жылдам жасауға мүмкіндік береді, оларда оларға тән «контейнер логикасы» бар. Сонымен қатар, енгізілген инфрақұрылым басқару элементтері болып табылмайтын контейнерлерді жасауға мүмкіндік береді. Мұндай контейнерді орналастыруға болады Windows терезелеріәзірленетін қолданбаның кез келген бөлігіне, содан кейін тиісті хабарламаларды жіберу арқылы оған әртүрлі басқару элементтерін енгізіңіз.

Нәтиже - контейнерлерді салуға арналған жеткілікті икемді архитектура, оның көмегімен сіз кеңейтетін шеберді (шебер) жасай аласыз. функционалдық Microsoft орталары визуалды студияыдыстың қаңқасын жасау механизміне.


Жарамсыз кілттерді жою үшін Windows тізілімін қолмен өңдеу Қате 800A01AD компьютерлік қызмет көрсету кәсіпқойы болмасаңыз, ұсынылмайды. Тізілімді өңдеу кезінде жіберілген қателер сіздің компьютеріңізді жарамсыз етіп, қалпына келтірілмейтін зиян келтіруі мүмкін. операциялық жүйе. Шындығында, тіпті дұрыс емес жерде қойылған бір үтір компьютердің жүктелуіне жол бермейді!

Осы қауіпке байланысты 800A01AD қатесін сканерлеу және жөндеу үшін WinThruster [Жүктеу] (Microsoft Gold Certified Partner әзірлеген) сияқты сенімді тізілім тазалау құралын пайдалануды ұсынамыз. [Жүктеу] тізілім тазалау құралын пайдалану арқылы бұзылған тізілім жазбаларын, жетіспейтін файл сілтемелерін (мысалы, %%error_name%%) қатесін және тізілімдегі бұзылған сілтемелерді табу процесін автоматтандыруға болады. Әрбір сканерлеу алдында автоматты түрде жасалған сақтық көшірме, ол бір рет басу арқылы кез келген өзгерістерді болдырмауға мүмкіндік береді және сізді компьютердің ықтимал зақымдануынан қорғайды. Ең жақсы бөлігі [Жүктеу] тізіліміндегі қателерді түзету жүйенің жылдамдығы мен өнімділігін күрт жақсартуы мүмкін.


Ескерту:Жетілдірілген компьютер пайдаланушысы болмасаңыз, Windows тізілімін қолмен өңдеуді ұсынбаймыз. Тіркеу редакторын дұрыс пайдаланбау күрделі мәселелерге әкелуі мүмкін және қажет етеді Windows жүйесін қайта орнату. Біз тізілім өңдегішін дұрыс пайдаланбау нәтижесінде туындаған мәселелердің шешілетініне кепілдік бермейміз. Тіркеу өңдегішін өз тәуекеліңізбен пайдаланасыз.

Қолмен қалпына келтірмес бұрын Windows тізілімі, сізге 800A01AD қатесі (мысалы, ActiveX) байланысты тізілім бөлігін экспорттау арқылы сақтық көшірме жасау қажет:

  1. Түймені басыңыз Баста.
  2. енгізу" команда" в іздеу жолағы... ӘЛІ БАСМАҢЫЗ ЕНГІЗУ!
  3. Кілттерді ұстау CTRL-Shiftпернетақтада түймесін басыңыз ЕНГІЗУ.
  4. Қол жеткізу диалогы көрсетіледі.
  5. басыңыз Иә.
  6. Қара жәшік жыпылықтаған курсормен ашылады.
  7. енгізу" regedit« және түймесін басыңыз ЕНГІЗУ.
  8. Тізбе өңдегішінде сақтық көшірмесін жасағыңыз келетін 800A01AD қатесіне қатысты кілтті (мысалы, ActiveX) таңдаңыз.
  9. Мәзірде Файлтаңдаңыз Экспорттау.
  10. Тізімге енгізілген Сақтау ActiveX кілтінің сақтық көшірмесін сақтағыңыз келетін қалтаны таңдаңыз.
  11. Алаңда Файл атауысақтық көшірме файлының атауын енгізіңіз, мысалы, «ActiveX Backup».
  12. Өрісті тексеріңіз Экспорт ауқымымән таңдалды Таңдалған филиал.
  13. басыңыз Сақтау.
  14. Файл сақталады reg кеңейтімімен.
  15. Енді сізде ActiveX-қа қатысты тізілім жазбасының сақтық көшірмесі бар.

Тізілімді қолмен өңдеудің келесі қадамдары бұл мақалада қарастырылмайды, себебі олар сіздің жүйеңізді зақымдауы мүмкін. Тізілімді қолмен өңдеу туралы қосымша ақпарат алғыңыз келсе, төмендегі сілтемелерді қараңыз.

Жүйелер және барлық қатысты қолжетімді болды. Бұл қатенің келесі себептері мен шешімдері бар:

    Сынып тіркелмеген. Мысалы, жүйелік тізілімде сынып туралы айтылмайды немесе сынып аталды, бірақ қате түрдегі файлды немесе табылмайтын файлды көрсетеді. Мүмкін болса, нысан қолданбасын іске қосыңыз. Тізілім туралы ақпарат қате немесе ескірген болса, қолданба тізілімді тексеріп, ақпаратты түзетеді. Қолданбаны іске қосу мәселені шешпесе, қолданба орнатушысын қайта іске қосыңыз;

    Қолдануға болмайды DLLНысан талап етілді, себебі ол табылмады немесе бүлінген деп табылды. Барлық қатысты DLL файлдары қолжетімді екеніне көз жеткізіңіз. Мысалы, Деректерге қол жеткізу нысаны (DAO) платформаға қарай өзгеретін DLL файлдарына қолдау көрсетуді қажет етеді. Бұл қатенің себебі болса, сол элемент үшін орнатушыны қайта іске қосу керек;

    Нысан құрылғыда қол жетімді, бірақ лицензияланған және ол нысанды жасау үшін қажетті лицензияның қолжетімділігін тексере алмайды.

    Кейбір нысандарды құрамдас табылғаннан кейін ғана жасауға болады лицензия кілтіБұл нысанның данаға тіркелгенін растайтын A бұл компьютер. Дұрыс орнатылған немесе дұрыс кілтте нысанға сілтеме болса, автоматты түрде беріледі.

    Егер дананы жасау әрекеті функция шақыруының нәтижесі болса CreateObjectнемесе GetObject, нысан кілтті табуы керек. Бұл жағдайда ол жүйелік тізілімді немесе іздеуді іздей алады арнайы файл, ол орнату кезінде жасайды (мысалы, .LIC кеңейтімімен). Кілт табылмаса, нысанды құру мүмкін емес. Соңғы пайдаланушы нысан қолданбасын қате конфигурациялаған болса, біржола жойылады қалаған файлнемесе жүйелік тізілімді өзгертсе, нысан өз кілтін таба алмайды. Кілт табылмаса, нысанды құру мүмкін емес. Бұл жағдайда инстанция әзірлеушінің жүйесінде жұмыс істей алады, бірақ пайдаланушы жүйесінде емес. Пайдаланушы лицензияланған нысанды қайта орнатуы керек;

    Сіз get нысан функциясын қолдануға тырысып жатырсыз GetObjectкөмегімен жасалған сыныпқа сілтеме алу үшін визуалды қолданунегізгі. GetObject Visual Basic көмегімен жасалған сыныпқа сілтеме алу үшін пайдаланыла алмайды;

    Нысанға кіруге нақты тыйым салынады. Мысалы, сіз тығырықтан аулақ болу үшін қазіргі уақытта пайдаланылып жатқан және құлыпталған деректер нысанына кіруге әрекет жасап жатырсыз. Бұл жағдайда нысанға басқа уақытта қол жеткізуге болады.

Алу үшін Қосымша Ақпаратсұрағыңыз бар элементті таңдап, F1 (Windows) немесе HELP (Macintosh) пернесін басыңыз.

Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл мақала пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
рахмет. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны таңдаңыз, басыңыз Ctrl+Enterжәне біз оны түзетеміз!