М И Н И СТ Е РСТ В О О БРА ЗО В А Н И Я РО ССИ Й СК О Й Ф Е Д Е РА Ц И И В О РО Н Е Ж СК И Й ГО СУ Д А РСТ В Е Н Н Ы Й У...
5 downloads
726 Views
515KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
М И Н И СТ Е РСТ В О О БРА ЗО В А Н И Я РО ССИ Й СК О Й Ф Е Д Е РА Ц И И В О РО Н Е Ж СК И Й ГО СУ Д А РСТ В Е Н Н Ы Й У Н И В Е РСИ Т Е Т
VISUAL BASIC Т Е О РИ Я (Ч А С Т Ь 1)
У Ч ЕБ Н О -М ЕТ О Д И Ч ЕС К О Г О П О С О Б И Е Д Л Я Б А К А Л А ВРО В Н А П РА В Л Е Н И Й “ЭК О Н О М И К А ” 521600 И “М Е Н Е Д Ж М Е Н Т ”521500
ВО РО Н Е Ж 2004
2
У тверж дено научно -мето дическим со вето м эко но мическо г о факультета П ро то ко л№ 10 о т25 декабря 2003
Со ставители: к.э.н., до ц . Н аг инаЕ .К ., к.э.н., до ц . И щ енко В .А .
У чебно -мето дическо е по со бие по дг о то влено накафедре инфо рмац ио нны х техно ло гий и математических мето до ввэко но м ике эко но мическо го факультетаВ о ро неж ско го государственно г о университета. Реко мендуется для студенто в эко но м ическо г о факультета, 1 курса дневно г о и вечернег о о тделений .
3
П РЕД И С Л О ВИ Е За до лг о е время развития три алг о ритмических язы ка: Бей сик, П аскаль, СИ ++ стали не про сто язы ками про г рамм иро вания, а ц елы ми системами про г рамм иро вания. Система о тличается о тязы ка тем , что о на не то лько имеетко мпилято р, но со держ итещ е неско лько до по лнительны х про г рамм для упро щ ения про г раммиро вания. С ее по мо щ ью мо ж но не писать про г раммы , а со бирать их из г о то вы х ко мпо ненто в то чно так ж е, как из ко мпо ненто вдетско г о ко нструкто расо бираю тсамы е разно о бразны е иг руш ки. Т ак, язы к Basic превратился в систем упро граммиро вания Visual Basic. Я зы к П аскаль реализо вался в систем уDelphi, а язы к СИ ++ реализо ван внеско льких системах, например, C++ Builder, Microsoft Visual C++. У чебно -мето дическо е по со бие “ Visual Basic 6. Т ео рия” (часть 1) предназначено для изучения и практическо го о сво ения приемо в испо льзо вания интег риро ванно й среды разрабо тки – IDE. У чебно е по со бие по дг ото влено с учето м то г о , что студентв до стато чно й степени о сво ил прием ы про г раммиро вания с испо льзо ванием алгоритмическо г о язы каBasic. У чебно -мето дическо е по со бие предназначено для студенто вдневно й и вечерней фо рм о бучения направлений Бакалавр эко но м ики и Бакалавр менедж мента, атакж е для ж елаю щ их изучить о сно вы про г рамм иро вания в среде Visual Basic само сто ятельно . П ри по дг о то вке по со бия авто ры не ставили ц ель по лно стью о писать все во змо ж но сти VB, аисхо дили то лько из требо ваний учебны х про грамм различны х вузо в.
1. Visual Basic как система объектноориентированног опрог раммирования 1.1. В ведение в Visual Basic О бъектно -о риентиро ванно е про граммиро вание (О О П ) заво евы вает по ло ж ение до минирую щ ей парадигмы . О О П бы стро заменяет мето ды структурно г о про г раммиро вания. О О П о сно вы вается наследую щ их правилах: ü П рикладная про г рамма – стро ится из о бъекто в с неко то ры ми сво й ствами и неко то ры х мето до в, ко то ры е эти мето ды мо г ут вы по лнять. ü Т екущ ее со сто яние о бъекта через како е-то время мо ж етизменяться, но про грамма всег дазависито то бъекто в, причем о бъекты не мо гутвзаимо дей ство вать другс другом про изво льно . ü П ро граммистпри разрабо тке про г раммы сам реш аетво про с , фо рмиро вать ли о ригинальны й о бъект или применять уж е имею щ ий ся.
4
Visual Basic (VB) – это язы к про г раммиро вания, о сно ванны й на манипулиро вании о бъектами и их атрибутам и. VB – инструмент, предназначенны й для разрабо тки и разверты вания ш иро ко -предметны х инфо рмац ио нны х систем (И С). П ро ц едуры разрабо тки прило ж ений ставятперед про граммисто м задачуреш ения следую щ их про блем : • Будетли прило ж ение рабо тать с внеш ними данны ми. Е сли да, то как о но будето бращ аться к данны м – ло кально или дистанц ио нно , всистеме сетево й базы данны х (БД ). • К акие ко м по ненты будутиспо льзо ваться – о риг инальны е (разрабо танны е для данно г о прило ж ения) или уж е сущ ествую щ ие. Д ля реализац ии этих задач мо г утиспо льзо ваться следую щ ие техно ло г ии: Ø О бъектно -о риентиро ванная мо дель разрабо тки VB по зво ляет испо льзо вать стандартную мето до ло гию при рабо те со всеми о бъектами – о ттаблиц и представлений на сервере до фо рм, тексто вы х по лей и т.д. Ø С применением про г рессивны х стандарто в OLE-авто матики и ко мпо нентно й о бъектно й мо дели (COM) мо ж но бы стро разрабаты вать прило ж ения из различны х ко мпо ненто в других прило ж ений и интерфей со в. Ø Развитие механизмо в сво й ств по мо гаю тлегко связы вать фо рмы и о тчеты (о бъекты внеш него интерфей са) с таблиц ами и представлениями (о бъектамиБ Д ). Ø П ро грессивны й трехуро вневы й по дхо д к разрабо тке прило ж ений (по льзо вательский интерфей с / правила бизнеса / данны е) по зво ляет резко увеличить про изво дительно сть про г раммисто в. Ø Стандартно г о вида прило ж ения и ко мпо ненты прило ж ений бы стро со здаю тся с по мо щ ью мастеро ви ш абло но в.
1.2. О сновны е понятия объектно-ориентированног о прог рамми рования 1.2.1. О бъекты В VB каж ды й о бъектсистем ы (“ прило ж ение – база данны х” или “ прило ж ение - сеть”) о тбазы данны х до интерфей са по льзо вателя – это о бъект, ко торы й мо ж но идентифиц иро вать (дать им я) и управлять им, испо льзуя унифиц иро ванны е техно ло гии. В сем о бъектам, с ко то ры ми рабо тает про г раммист, независимо о т типа о бъекта, присущ и стандартны е сво й ства (характеристики, управляю щ ие по ведением о бъекта) и в бо льш инстве случаев мето ды (про г раммно е о писание дей ствий о бъекта) стандартны е или по льзо вательские. О бъекты прило ж ения VB мо г утбы ть “ о сязаем ы ” для по льзо вателя. Н апример: о кна диало га, ко мандны е кно пки, тексто вы е по ля и т.д. О бъекты такж е мо г утпредставлять со бо й неко то ры е катег о рии, ко то ры е непо -
5
средственно не являю тся частью по льзо вательско го интерфей са и неко то ры е из них нельзя “ по тро г ать” курсо ро м мы ш и. Н апример: рабо чие о бласти, набо ры записей . П ри по стро ении прило ж ения про граммистпро г раммируетдей ствия о бъекто вили задаетреакц ию этих о бъекто вна неко то ры е со бы тия или со сто яния среды или прило ж ения. В VB о бъект – это ко мбинац ия про г раммно го ко да и данны х, во спринимаемая как единиц а, и ко то ро й мо ж но каким-либо о бразо м манипулиро вать. Н апример: о бъекто м “ тексто во е по ле” мо ж но манипулиро вать, вво дя внег о данны е, изменяя ц вето во е о фо рмление, устанавливая ш рифты и их размеры и т.д. П ро г раммно каж ды й о бъекто пределяется как кл ас с . Со здаваемы е о бъекты в VB мо г утуправляться то лько изменением сво й ств и вы зо во м мето до в. В про г рамм но й реализац ии внутри со здаваемы х о бъекто в-элементо вуправления не до лж но бы ть никаких переменны х public. Д ля упро щ ения про ц едур разрабо тки и о тладки про г рамм реко мендуется со здавать небо льш ие о бъекты , ко то ры е вы по лняю тнеско лько задач вместо чрезмерно сло ж ны х о бъекто в с бо льш им ко личество м внутренних данны х и связей , требую щ ихся для управления, или со тен сво й ств и мето до в. 1.2.2. С обы тия, методы и свой ства В Visual Basic манипулиро вать о бъектами мо ж но двумя спо со бами: • И зменяя сво й ствао бъекта; • Заставляя о бъектвы по лнять спец ифические задания путем активизац ии мето да (мето до в), ассо ц ииро ванны х с этим о бъекто м. О ба эти спо со ба ассо ц иирую тся с наступлением неко то ро г о по льзо вательско г о или системно г о со бы тия. С о бы т ие – это дей ствие или ситуац ия, связанная с о бъекто м. Н апример: щ елчо к кно пки мы ш и или наж атие клавиш и. Со бы тия такж е мо гутиниц ииро ваться в про граммно м ко де прило ж ения (заг рузка фо рмы в память) или непо средственно в систем но й среде. Д ля о брабо тки со бы тия мо ж но со здать сво й про г раммны й ко д в про ц едурах о брабо тки со бы тий , ко то ры е вы зы ваю тся авто матически. В со бы тий но -управляемо м прило ж ении про г раммны й ко д не следует предо пределенны м , ж естко ко диро ванны м путем. В место это г о различны е разделы ко да вы по лняю тся в о тветна со бы тия. П о следо вательно сть со бы тий о пределяетпо следо вательно сть вы по лнения ко да. С во йс т ва о пределяю т представление, по ведение и другие черты о бъекта. Ц ветфо наи заголо во к фо рмы , таблиц аБ Д (исто чник записей для фо рмы ) являю тся сво й ствам и тех или ины х о бъекто в. М ет о ды – это про граммны е про ц едуры , ко то ры е вы по лняю тнеко то рую о брабо тку, связанную с о бъекто м. Н апример, если щ елчко м на про граммно й кно пке требуется о ткры ть фо рму, нео бхо димо со о тветствую -
6
щ ий про г раммны й ко д до бавить к телу про ц едуры Click () ко мандно й кно пки. Стандартны е мето ды VB по дразделяю тся надве катег о рии: 1. П ро ц едуры , реаг ирую щ ие настандартны е со бы тия – это набо р со бы тий , авто матически о брабаты ваемы х для каж до г о о бъекта. Н апример, заг рузкафо рмы и вы во дее наэкран. 2. Стандартны е мето ды , вы зы ваем ы е явно в про граммно м ко де разрабо т чика. С во йс т ва и м ет о ды назы ваю т с я т акж е инт ерфейс о м о бъект а. 1.2.3. К л ассы В аж ней ш ее по нятие О О П – кл ас с . К ласс о бы чно о писы вается как ш абло н, про ект, из ко то ро г о впо следствии будетсо здан о бъект. К аж ды й о бъектв эт о м случае является экземпляро м класса. Е сли о бъекты сущ ествую тв прило ж ениях, то класс это абстракц ия, о бъединяю щ ая о бъекты в о днугруппусо г ласно их сво й ствам и по ведению всреде о круж ения, в ко то ро й о ни сущ ествую ти взаимо дей ствую т. Н апример, фо рмадля вы печки печенья – класс, само печенье – о бъекты класса это г о типа (фо рмы ) или кно пка вфо рме со всеми сво им и ко нкретны м и сво й ствами и дей ствием является о бъекто м классаCommandButton. К ласс характеризуется следую щ ими о сно во по лагаю щ им и по нятиям и О О П : И нкапс ул яция – это о бъединение данны х и чертпо ведения о бъектав о дно м пакете и со кры тие по дро бно стей их реализац ии о тпо льзо вателя. О бъект, ко то ры й является экземпляро м класса, до лж ен иметь неко то ры е значения переменны х экземпляра. Э ти значения о пределяю ттекущ ее со сто яние о бъекта. К ро ме то го: • Ф ункц ии и про ц едуры вклассе VB со о тветствую тсво й ствам и мето дам о бъекта. • П о льзо вательский до ступ к текущ ему со сто янию о бъекта (к по лям экземпляра) до пускается то лько через эти мето ды и сво й ства. Нас л едо вание. О бъекткласса о бладаетвсем и сво й ствам и, мето дами и со бы тиям и класса. П ро ц едура со здания класса в О О П мо ж етбы ть упро щ ена, если их со здавать на базе имею щ ихся классо в. К ласс, со здаваемы й из друг ог о класса, расш иряетег о . О бщ ая ко нц епц ия расш ирения базо во го классаназы вается нас л едо ванием . П о л им о рфизм о значает, чт о по ро ж денны е о бъекты “ знаю т”, какие мето ды о ни до лж ны испо льзо вать в зависимо сти о тто г о , где о ни нахо дятся в ц епо чке наследо вания. Н апример, мо то ц икл и маш ина из класса “ средства передвиж ения” до лж ны вы по лнять “ правы й по во ро т”, но мето д по во ро таукаж до го о бъектабудетсво й . И ерархия. И ерархическая структура вклю чения предпо лаг аетвклю чение друг их о бъекто в в неко то ры е классы о бъекто в. Н апример, ко мандная кно пкавнутрифо рмы .
7
М о дул ьно с т ь. М о дульно сть предпо лаг ает, что о бъектдо лж ен заклю чать в себе по лно е о пределение его характеристик. Н икакие о пределения про ц едур и сво й ств о бъекта не до лж ны распо лаг аться г де-либо вне данно го о бъекта.
2. И нтег рированнаясреда разработки П о сле запуска VB (П уск / П ро г раммы / VB) наэкране мо ж но увидеть старто вы й интерфей с интегриро ванно й среды разрабо тки (IDE). Э та среда предназначенадля про сто г о , ло гично г о представления наэкране о бъекто в, испо льзуем ы х при разрабо тке прило ж ения. Ч ерез ряд о ко н интерфей са мо ж но вы по лнять следую щ ие про ц едуры разрабо тки: • Д о бавлять, изменять, удалять о бъекты ; • Редактиро вать мето ды и сво й ствао бъекто в; • У станавливать со единения меж дуо бъектами прило ж ений и о бъектами Б Д ; • П ро сматривать и вы бирать ко м по ненты текущ их про екто в и библио тек; • О тлаж ивать ко д про граммны х про ц едур; • Т естиро вать о бъекты прило ж ений , о пределять их вид и по ведение во врем я вы по лнения ко да. И нтег риро ванная средаVB со сто итиз следую щ их элементо в: ü Главно еменю ; ü К о нтекстно е меню ; ü П анели инструменто в; ü П алитрао бъекто в; ü О кно про во дникапро екта(Project Explorer); ü О кно сво й ств; ü Страниц ы сво й ств; ü О кно ко нструкто рафо рм; ü О кно макетафо рм; ü О кно про смо трао бъекто в(Object Browser); ü О кно редактиро вания ко да; ü П анель элементо вуправления. Рассмо трим неко то ры е элементы среды IDE.
2.1. Г л авное меню Главно е меню , как и во всех прило ж ениях Microsoft, представляет со бо й линей кураскры ваю щ ихся меню . О но со держ итследую щ ие о сно вны е ко манды : File (Ф ай л), Edit (П равка), View (В ид), Project (П ро ект), Format (Ф о рмат), Debug (О тладка), Run (Запуск), Query (Запро с), Diagram (Д иаг рамма), Tools (Сервис), Add-Ins (Н адстро й ки), Window (О кно ), Help (Справка). Н аибо лее часто испо льзуемы е ко манды меню о то браж ены в ви-
8
де кно по к со значками настандартно й панели инструменто в, размещ енно й ниж е меню . М но г ие ко манды знако мы по льзо вателю , по ско льку главно е меню Visual Basic 6 о рг анизо вано и рабо таеттак ж е, как и вдруг их прило ж ениях Microsoft, - например, в тексто во м редакто ре Microsoft Word или таблично м про ц ессо ре Microsoft Excel.
2.2. П анел и инстру ментов П о умо лчанию при запуске VB вы во дится стандартная панель инструменто в. Д о по лнительны е панели инструменто в для редактиро вания ко да, о тладки ко да и разрабо тки фо рм мо г утпо дклю чаться ко мандо й меню View / Toolbars. Д ля со здания по льзо вательских панелей инструменто в и редактиро вания сущ ествую щ их испо льзуется о кно диало г а Customize, вы зы ваемо е ко мандо й View / Toolbars / Customize.
2.3. П ал итра объектов П алитра о бъекто в представляетсо бо й набо р инструментальны х элементо в управления и ко нструкто ро в, ко то ры е мо ж но испо льзо вать во время разрабо тки, размещ ая их на фо рме. П ри запуске VB палитра о бъекто в со держ итстандартны й набо р элементо в управления, но это тнабо р мо ж но редактиро вать, до бавляя до по лнительны е элементы управления, например, ко мандо й меню Project / Components.
2.4. О кнопроводника проектов О кно про во дникапро екта Project о чень по хо ж е наанало г ично е о кно про во дника систем ы Windows и по зво ляетлег ко и бы стро про сматривать со став и сво й ства вы бранно г о про екта, перемещ аться меж ду про ектами, если их о ткры то сразунеско лько , ко пиро вать нео бхо дим ы е о бъекты из о кнао дно г о про ектавдругой , как это о сущ ествляется впро во днике систем ы Windows. П ро во дник про екта мо ж но вы звать ко мандо й View / Project Explorer или ко мбинац ией клавиш + . В о кне представлена иерархическая структура фай ло в фо рм и мо дулей текущ его про екта. П о мере со здания, до бавления или удаления фай ло в из про екта VB о то браж аетизменения во кне Project Explorer.
2.5. О кносвой ств В о кне Properties (Сво й ства) перечислены устано вки сво й ств текущ ей фо рмы или элемента управления. Д иало гово е о кно Properties вы зы ва-
9
ется ко мандо й View / Properties Window, кно пко й Properties Window на стандартно й панели инструменто в или ко мандо й Properties ко нтекстно го меню вы бранно го о бъекта. П ри вы бо ре о бъекта со держ имо е о кна сво й ств изменяется, о то браж ая сво й ствавно вь вы бранно г о о бъекта. О кно сво й ствсо сто итиз следую щ их раздело в: • Рас кры ваю щ ийс я с пис о ко бъект о в т екущ ей фо рмы и с ам о й фо рм ы (в верхней части о кна); • Ряд с т ро к, о писы ваю щ их сво й ствао бъекта; • Две вкл адки для переклю чения меж дуалфавитны м и категориро ванны м представлением спискасво й ств. П о рядо к про смо трао кнасво й ство бъекта: 1. В ы брать о бъект, сво й ствако то ро г о нуж но про смо треть. 2. В ы по лнить ко мандуменю View / Properties Window или наж ать клавиш уF4.
2.6. С траницы свой ств К ро ме о кна сво й ств, со сво й ствами о бъекто в мо ж но рабо тать через о кно страниц сво й ств. О кно диало га Property Pages мо ж но о ткры ть следую щ ими спо со бами: • В о кне сво й стввы брать стро куCustom и щ елкнуть стрелкувниз. • В ы брать о бъекти вы по лнить ко мандуView / Properties Page.
2.7. О кнопросмотра объектов Д ля про смо тра всех элементо в, вхо дящ их в со став про екта, Visual Basic 6 предо ставляето чень удо бную во змо ж но сть – о кно про смо тра о бъекто в Object Browser.Е г о мо ж но вы звать ко мандо й View / Object Browser. В о кне перечислены о бъекты , до ступны е для испо льзо вания в про екте. В нем мо ж но про сматривать о бъекты , мето ды и сво й ства, до ступны е для этих о бъекто в. Object Browser вы во дитнаэкран инфо рмац ию в виде трехуро внево й иерархии: библио тека, прило ж ение или про ект-о бъект(класс) – члены класса. В качестве члено в класса в о кне Members представлены сво й ства, мето ды , о брабаты ваемы е со бы тия, ко нстанты , элементы управления, атакж е друг ие вклю чаемы е о бъекты класса.
2.8. О кноконстру ктора ф орм О кно ко нструкто ра фо рм является о сно вны м рабо чим о кно м, в ко то ро м вы по лняется визуально е про ектиро вание прило ж ения. В ы звать это о кно мо ж но из г лавно г о меню ко мандо й View / Object. О кно ко нструкто ра фо рм служ итдля про ектиро вания и настро й ки интерфей са прило ж ения. В VB фо рмы – это базо вы е стро ительны е бло ки прило ж ения, через о кна ко то ры х по льзо ватель взаимо дей ствуетс ло г ико й прило ж ения, о бращ ается к
10
базе данны х, взаимо дей ствуетс другими по льзо вателям и и по лучаетинфо рмац ию по сети. Н а фо рме мо ж но распо лаг ать элементы управления, графические о бъекты и ко нструктивы . С фо рмам и связаны спец ифические со бы тия, о ни имею тсво й ства и мето ды , по средство м ко то ры х разрабо т чик мо ж етуправлять их о блико м и по ведением . К аж дая фо рма в прило ж ении имеетсво е со бственно е о кно дизай нерафо рмы .
2.9. О кноредакти рования кода Редакто р ко да–это мо щ ны й встро енны й редакто р с удо бны м и средствам и вво да исхо дно г о ко да про г раммы . Е го мо ж но вы звать ко мандо й из главно го меню View / Code. Э то о кно служ итв качестве редакто ра для вво дако дапро ц едур прило ж ения. Д ля каж до й фо рмы или мо дуля со здается о тдельно е о кно редактиро вания ко да. Э то о кно мо ж но рассматривать как спец иализиро ванны й интеллектуальны й тексто вы й про ц ессо р, сущ ественно о блегчаю щ ий написание ко даVB. Т ак как про г раммны й ко д прило ж ения VB ко мпо нуется из мо дулей , о тдельно е о кно редакто рао ткры вается для каж до г о мо дуля, ко то ры й мо ж но вы брать из Project Explorer. К о д внутри каж до го мо дуля о рг анизо ван в о тдельны е разделы для каж до го о бъекта, со держ ащ ег о ся в мо дуле. П ереклю чение меж ду разделами про изво дится вы бо ро м со о тветствую щ его о бъекта в списке Object в лево м верхнем углу о кна редакто ра. В мо дуле фо рмы списо к вклю чаето бщ ий раздел General, раздел для фо рмы и для каж до г о о бъектафо рмы . Д ля мо дуля класса списо к вклю чаетраздел General и раздел Class. Д ля стандартно г о мо дуля имеется то лько раздел Procedure. К аж ды й раздел ко да мо ж етсо держ ать неско лько различны х про ц едур, к ко то ры м мо ж но о братиться через списо к Procedure в право м верхнем углуо кна редактиро вания ко да. Списо к про ц едур для мо дуля фо рмы со держ ито тдельны й раздел для каж до й про ц едуры о брабо тки стандартно го со бы тия для фо рмы всех ее элементо в управления. Списо к мо дулей классо в со держ итто лько про ц едуры со бы тий непо средственно класса Initialize и Terminal. Стандартны е мо дули не имею тникаких про ц едур о брабо тки со бы тий , так как о ни не по ддерж иваю тсо бы тия. Списо к Procedure для разделамо дуля General (о бщ ег о ) со держ итединственны й вы бо р – разделDeclarations, гдеразмещ аю тся о бъявления уро вня мо дуля переменны х, ко нстанти DLL. Е сли к мо дулю до бавляю тся про ц едуры Sub или Function, эти про ц едуры до бавляю тся всписо к Procedure ниж е разделаDeclarations.
2.10. О кномакета ф ормы О кно макета фо рм ы Form Layout (М акетфо рмы ) вы зы вается ко мандо й View / Form Layout Window. В это м о кне по казы вается уменьш енно е
11
изо браж ение про ектируемо й фо рмы в то м виде, как эта фо рма будетвы глядеть наэкране мо нито рапри вы по лнении прило ж ения. Э то о кно по зво ляетспо зиц ио ниро вать фо рмувприло ж ении вреж име разрабо тки, испо льзуя небо льш о е г рафическо е представление экрана.
2.11. Н астрой ка среды разработки Д ля настро й ки среды разрабо тки про г раммы Visual Basic испо льзуется диало г о во е о кно Options (П араметры ), вы зы ваемо е из меню Tools (Сервис) ко мандо й Options (П араметры ). О кно со держ итш есть вкладо к: • Editor (Редакто р), • Editor Format (Ф о рматредактиро вания), • General (О сно вны е настро й ки), • Docking ( И нструменты среды ), • Environment Средапро ектиро вания), • Advanced (Расш иренны е настро й ки). Д ля настро й ки среды разрабо тки (IDE)на вкладках испо льзую тся группы флаж ко в, переклю чателей , раскры ваю щ иеся списки.
3. О бъекты и у правл ение объектами в VB 3.1. О бъекты , испол ьзу емы е при создании при л ож ения О бъект ы в VB – это все, чем мо ж но управлять визуально и про граммны м спо со бо м. О бъект – это ко мбинац ия про граммно г о ко да и данны х, ко то рая мо ж ето брабаты ваться как единиц а. О бъектмо ж етбы ть как частью прило ж ения (например, элементуправления), так и самим прило ж ением. Т ипы о бъекто в, ко то ры е мо ж но испо льзо вать в VB, приведены в табл.1. Т аблиц а1 Т ипы о бъекто в, испо льзуем ы х вVB О бъект К о мандная кно пка Ф о рма Базаданны х Д иаг рамма
К о мментарий Э лементы управления палитры о бъекто в такие, как ко мандны е кно пки, являю тся о бъектами К аж дая фо рма в про екте VB является о тдельны м о бъекто м База данны х – эт о о бъекты , ко торы е со держ атдругие о бъекты . Н апример: по ля, таблиц ы , индексы . Д иаг рамма Microsoft Excel является о бъекто м, до ступны м вVB.
12
К аж ды й о бъекто пределяется сво им классо м. Н апример: фо рма, как о сно вно й о бъектдля разрабо тки прило ж ения или по льзо вательско г о элементауправления, является классо м. В перио д ее разрабо тки VB по зво ляет о пределить экземпляр класса фо рмы , о ткры вая для нег о о кно дизай нера фо рм. Э лемент управления палитры о бъекто в VB является фо рмально классо м, но размещ енны й нафо рме, стано вится насто ящ им о бъекто м. Самы й про сто й спо со б со здания о бъекта – дваж ды щ елкнуть элементуправления в палитре о бъекто в. О днако что бы реализо вать по лную мо щ ь о бъекто в, до ступны х в VB и о бъекто в других прило ж ений , нео бхо димо испо льзо вать про г раммны е во змо ж но сти VB для со здания о бъекто вв перио д вы по лнения.
3.2. О сновы работы собъектами П ризнакам и о бъекто в VB, о тличаю щ ие их друго тдруга, являю тся их сво й ства, мето ды , и со бы тия.
3.2.1. У становка и пол у ч ение знач ения свой ства К аж ды й о бъектвсегданахо дится во пределенно м со сто янии, ко то ро е характеризуется набо ро м сво й ство бъекта. П о д во здей ствием со бы тий о бъектперехо дитв другие со сто яния. С во йс т во – признак, неко то ро е о тдельно е качество (параметр) о бъекта. Н апример, сво й ствам и мо г утбы ть размеры о бъекта, заг о ло во к, его наимено вание. Со во купно сть сво й ств о бъекта о пределяетег о со сто яние. К ак правило , сво й ства–это набо рпеременны х и ко нстант, вко то ры х хранятся значения, о пределяю щ ие параметры о бъекта. Х арактеристики о бъекта мо ж но изменять, меняя значения ег о сво й стватрибуто в, ко то ры е мо ж но устано вить или по лучить их значения. Н еко то ры е сво й ства мо гутбы ть устано влены во врем я разрабо тки про г раммы . Сво й стватакж е мо ж но устано вить через о кно сво й ств, не прибег ая к написанию про г раммно г о ко да. Д ля устано вления значения сво й ства в про г раммно м ко де испо льзуется следую щ ий синтаксис: О бъект. С вой ство= <знач ение свой ства> Н апример: Text1.Top =200 ‘Ус т анавл ивает с во йс т во Top = 200 bun (1bun = 1/20 ло гичес ко й принт ерно й т о чки) Text1.Visible = True ‘Дел ает т екс т о во е по л е видимы м Text1.Text = “VB” ‘Вы во дит в т екс т о во м по л е значение VB Д ля по лучения значения сво й ства како го-либо о бъекта испо льзуется следую щ ий синтаксис: П еременная = О бъект. С вой ство Э то нео бхо димо для вы яснения со сто яния о бъектаперед вы по лнением ко дапро ц едуры каких-либо до по лнительны х дей ствий .
13
3.2.2. И спол ьзованиеметодов в коде процеду р М ето д –это функц ия или про ц едура, ко то рая реализуетво змо ж ны е с о бъекто м дей ствия. Ф о рматзаписи о перато ро в с мето до м зависито тто г о, ско лько параметро в принимаетпро ц едура мето да и во звращ аетли мето д значение. Ког да мето д не требуетпараметро в, испо льзуется следую щ ий синтаксис: О бъект. М етод Н апример: Form1. PrintForm ‘П ечат ает о браз фо рм ы Picture1.Refresh ‘П о вт о рно вы рис о вы вает о бъект -изо браж ение Picture1 Е сли мето д требуетбо лее о дно го параметра, то параметры о тделяю тся запяты ми, например, мето д Circle испо льзует параметры , о пределяю щ ие распо ло ж ение, радиус и ц веткруг анафо рме: ‘Нарис о ват ьс иний круг радиус о м 1200 т вип. Form1.Circle(1600,1800),1200,vbBlue Е сли требуется со хранить во звращ аемо е значение мето да, параметры нео бхо димо заклю чить в круглы е ско бки. Н апример, мето д GetData во звращ аетизо браж ение из буферао бмена: Picture=Clipboard.GetData(vbCFBitmap) Е сли во звращ аемо г о значения нет, параметры указы ваю тся без круг лы х ско бо к. Н апример, мето д AddItem нево звращ аетзначения: List1.AddItem”Visual Basic” ‘До бавит ькс пис кут екс т ”Visual Basic” Среди мето до в, ко то ры м и о бладаю твсе о бъекты , мо ж но вы делить: • Move - по зво ляетперемещ ать о бъект; • SetFocus – активизируето бъектдля во змо ж но сти взаимо дей ствия с ним. 3.2.3. С оздание прог раммног окода дл я обработки собы тия объекта П о м имо сво й ств и мето до в, для о бъекто в мо ж но задавать про г раммны е ко ды , написанны е на язы ке Visual Basic и вы по лняемы е при наступлении связанны х с ним и со бы тий . Т аким о бразо м, со бы тие – это средство взаимо дей ствия о бъекто в другс друг о м . О бъекты генерирую тзаданны е со бы тия и вы по лняю тдей ствия в о тветна заданны е со бы тия. Со бы тие – это анало гсо о бщ ений , ко то ры епо лучаю тио тправляю то бъекты . Н апример, при наж атии кно пки про исхо дитсо бы тие Click. Д ля о брабо тки эт о го со бы тия при со здании фо рмы до лж на бы ть написана про ц едура, о писы ваю щ ая это со бы тие. Д ля со здания это й про ц едуры нуж но о ткры ть о кно редакто рако дао дним из следую щ их спо со бо в: • Д во й но й щ елчо к нао бъекте, для ко то ро г о со здается или про сматривается про граммны й ко д; • У стано вить курсо р нао бъектеи вы по лнить ко манду: View / Code
14
• В ы брать ко мандуView Code из ко нтекстно г о меню . В верхней части о ткры вш ег о ся о кна Project распо ло ж ены два раскры ваю щ ихся списка (Object и Procedure). Л евы й списо к Object со держ итвсе о бъекты фо рмы и саму фо рму. П равы й списо к Procedure со держ итсо бы тия, для ко то ры х мо ж но со здать про ц едуру. В о бласти, предназначенно й для написания ко да, распо ло ж ены следую щ ие ко манды : Private Sub CommandButton1 _ Click () End Sub г де CommandButton1 _ Click () – имя про ц едуры , End Sub – ко нец про ц едуры . Т екстпро ц едуры распо лаг ается меж дуэтим истро ками.
4. С тандартны еэл ементы у правл ения VB 4.1. О бщ ие свой ства, методы и собы тия эл ементов у правл ения Э л ем ент ы управл ения – эт о о бъект ы , ко т о ры е м о ж но по мес т ит ь на фо рм е. Д ля о рганизац ии эффективно г о взаимо дей ствия с элементам и управления приразрабо тке прило ж ения испо льзуется реж им ко нструкто ра. В реж име ко нструкто рамо ж но вы делять изменять внеш ний вид элемента управления, изменять их сво й ства. Н о в это м реж име не про исхо дит запуск со бы тий элементо в управления. Д ля вклю чения и вы клю чения реж има ко нструкто ра нуж но щ ёлкнуть со о тветствую щ ую кно пкуна панели инструменто в. К ак и все о бъекты , о ни имею тсво й ства и мето ды . Сво й ства элементо в управления (Э У ) о пределяю тих внеш ний вид (по ло ж ение, ц вет, размер) и по ведение. И зменять сво й ства мо ж но как во врем я про ектиро вания, так и во время вы по лнения про г раммы . М ет о д – эт о про цедура, ко т о рая во здейс т вует на о б ъект во врем я её вы по л нения. Н апример, мето д Move – перемещ ение о бъекто в. П римеро м сво й ствамо ж етслуж ить сво й ство Name, ко то ро е о пределяетимя о бъектаи испо льзуется для ссы ло к наЭ У впро г рамме. М о ж но испо льзо вать русские буквы . Рассмо трим те сво й ства, ко то ры е по чти для всех элементо в имею т о дин и то тж е см ы сл и назы ваю тся о динако во . Name – имя, ко то ро е испо льзуется для ссы ло к на Э У в про г рамме, ег о нельзя менять впро ц ессе вы по лнения про г раммы . Left –по зиц ия Э У о тно сительно лево г о края фо рмы или рамки. Top –по зиц ия Э У о тно сительно верхнего края фо рмы или рам ки. Height –вы со таЭ У .
15
Width –ш иринаЭ У . Visible – о пределяет, будетли виден Э У на экране: True – виден, False –нет. Н иж е приведены мето ды о бщ ие для всех элементо вуправления. Move –перемещ ение элементо вуправления по фо рме. Drag –служ итдля перетаскивания элементо вуправления. Бо льш инствуэлементо в управления принадлеж атследую щ ие со бы тия. Click –Запускается, ко г дапо льзо ватель щ ёлкаетэлементуправления DblClick – Запускается, ко г да по льзо ватель дваж ды щ ёлкаетэлемент управления Рассмо трим наибо лее часто испо льзую щ иеся элементы управления и о пиш ем их сво й ства, мето ды и со бы тия.
4.2. Эл ементу правл ения командная кнопка Э лемент К но пка (CommandButton) о чень часто испо льзуется приразрабо тке интерфей саи имеетследую щ иесво й ства: Caption - задаёттекстнадписи накно пке. Picture - о пределяетрисуно к напо верхно сти кно по к. PicturePosition – о пределяетпо зиц ию рисунка о тно сительно надписи. Со бы тия элементакно пки: Click –во зникаетпри наж атии по льзо вателем кно пки мы ш ью или на клавиатуре. DblClick –во зникаетпри дво й но м наж атии накно пке. 4.3. Эл ементу правл ения текстовое пол е Э лемент П о ле (TextBox) о беспечивает во змо ж но сть вво да текста по льзо вателем во время рабо ты прило ж ения или о то браж ения инфо рмац ии, задаваемо й сво й ство м Text про граммно или при разрабо тке. Т ексто вы е о кнапо ддерж иваю твво д и редактиро вание текстабез вмеш ательствас ваш ей сто ро ны . Сво й стваэлементаП о ле. Text – Главно е сво й ство , со держ ащ ее текст, введённы й по льзо вателем или присво енны й емупро г раммо й . Т ексто во е по ле в VB характеризуется двум я сво й ствам и, по зво ляю щ ими испо льзо вать их при со здании по лей , предназначаем ы х для вво да паро ля: PasswordChar – задаетсим во л, о то браж аемы й в по ле вместо вво димы х сим во ло в; MaxLength – максимально е число симво ло в, вво димы х впо ле.
16
4.4. Эл ементу правл ения метка Э лементМ етка (Label) испо льзуется для размещ ения в фо рме статическо г о текста, ко т о ры й не мо ж ет бы ть о тредактиро ван по льзо вателем. Э ти элементы управления испо льзую тся, что бы идентифиц иро вать о бъекты в фо рме – например, со держ ать заг о ло вки или о писания для элементо в управления; в перио д вы по лнения прило ж ения с их по мо щ ью мо ж но вы вести наэкран инфо рмац ию во тветнасо бы тиеили про ц есс вприло ж ении. Н аибо лее часто метки испо льзую тся с элементам и управления, ко то ры е не имею тсво ег о со бственно го сво й стваCaption. Сво й стваэлементаМ етка: Caption – со держ иттекст, размещ ённы й в это м элементе. Д лина значения сво й ствао г раничена1024 бай тами. Font –испо льзуется для устано вки параметро вш рифта.
4.5. Эл ементу правл ения рамка Э лементРамка (Frame) является ко нтей неро м и служ итдля о бъединения других элементо в вг руппу, по сле чего по мещ енны ми в нег о о бъектами мо ж но управлять как едины м ц елы м. Н апример, элементуправления Frame мо ж но испо льзо вать для о бъединения в г руппу размещ енны х в фо рме и функц ио нально связанны х переклю чателей . Сво й стваэлементарамка: Caption – задаеттекст, распо лагаю щ ий ся в верхнем лево м углурамки. Font –испо льзуется для устано вки параметро вш рифта. Appearance – сво й ство мо ж етпринимать значения 0-Flat или 1-3D, задаю щ ие пло ский или о бъемны й вид рам ки.
4.6. Эл ементу правл ения ф л аж ок Э лементФ лаж о к (CheckBox) испо льзуется для размещ ения в фо рме данны х, ко то ры е мо г утиметь то лько о дно из двух до пустимы х значений . Ф лаж ки мо г утиспо льзо ваться в фо рме по о дно муили группам и. К ак правило , флаж о к нахо дится в о дно м из двух по ло ж ений – устано влен или сбро ш ен (значения True и False). В аж ней ш ие сво й ствафлаж ка. Caption –текст, о то браж аемы й рядо м с флаж ко м . Value – задаётили во звращ аетсо сто яние флаж ка. Э то сво й ство мо ж етиметь следую щ ие значения: 0 (vbUnchecked) –Unchecked (Сбро ш ен); 1 (vbChecked) – Checked (У стано влен); 2 (vbGrayed) – Grayed (Н едо ступен. В аж ней ш ее со бы тие элемента: Click - испо льзуется для реаг иро вания нащ елчо к флаж ка.
17
4.7. Эл ементу правл ения перекл ю ч ател ь Э лемент П ереклю чатель (OptionButton) функц ио нально по хо ж на элементФ лаж о к, о днако о н по зво ляетпо льзо вателю вы брать о дин из неско льких взаимо исклю чаю щ их варианто в. О бы чно переклю чатели со браны вг руппы : если устано влен о дин, о стальны е сбро ш ены . П о умо лчанию на рабо чем листе все переклю чатели со браны в о дну группу. Ч то бы по льзо ватель мо гвы брать о дно временно неско лько переклю чателей , их нео бхо димо разбить на неско лько групп в о кне Сво й ства (Properties), задав сво й ство GroupName о бъекта OptinButton про г раммно или вручную . В аж ней ш ие сво й стваэлемента: Caption –текст, о т о браж енны й рядо м с переклю чателем. GroupName –г руппа, к ко то ро й принадлеж итпереклю чатель. Value – задаетили во звращ аетсо сто яние переклю чателя. Значение True о значает, что переклю чатель наж ат, False –сбро ш ен. В аж ней ш ее со бы тие Click – част о испо льзуется для реагиро вания на щ елчо к переклю чателя.
4.8. Эл ементу правл ения С писок Э лементСписо к (ListBox) со здаетв фо рме списо к, в ко то ро м элементы распо ло ж ены в о днуили неско лько ко ло но к. К о личество значений списка, вы веденны х на экран, о пределяется размеро м о кна списка. В случае, если элементы спискане по мещ аю тся всо зданно м о бъекте ListBox, то в нем по являю тся по ло сы про крутки, распо лаг аемы е снизуи/или с право й сто ро ны . В аж ней ш ие сво й ствасписка: List –массивстро к, вхо дящ их всписо к. Text – во звращ аетвы бранны й всписке элемент.
4.9. Эл ементу правл ения П ол е сосписком Э лементП о ле со списко м (ComboBox) со здаетв фо рме раскры ваю щ ий ся списо к, представляю щ ий со бо й о бъекттипа ComboBox. Э то ттип списка по зво ляетпо льзо вателю о сущ ествлять вы бо р значения, вво димо го в размещ аемо е сверху по ле вво да или вы бирать значение из списка, о ткры ваемо г о наж атием кно пки со стрелко й , размещ аемо й с право й сто ро ны . Списо к данно г о типа удо бно испо льзо вать в то м случае, если вво димы х значений мно г о , а места в фо рме для распо ло ж ения о бы чно го списка не хватает.
18
В аж ней ш ие сво й стваэлементо вСписо к и П о ле со списко м : List –о беспечиваетдо ступ ко всем элементам списка. Э то сво й ство со держ итмассив, в ко то ро м каж ды й элементсписка является элементо м массива. К аж ды й элементпредставлен встро ко во й фо рме. И ниц иализиро вать элементы спискамо ж но неско льким испо со бами. 1. Е сли впро г раммео писан массиво перато ро м Dim MyArray(10), то присво ить значение это г о массиваспискумо ж но о перато ро м: MyList.List( ) = MyArray. 2. Э лементы спискамо ж но вво дить во время разрабо тки, устанавливая сво й ство List в о кне сво й ствэлемента управления. Е сли вы брать стро куList в о кне сво й ств и затем щ елкнуть стрелку “ вниз”, о ткро ется о кно , куда мо ж но вво дить элементы списка. Ч то бы перей ти к но во й стро ке, нуж но ввести клавиатурную ко мбинац ию Ctrl + Enter. О братиться к элементуспискамо ж но о перато ро м : ListBox.List(индекс ) Н апример: Text1.Text=List1.List(2)’Вво дит в т екс т о во е по л е т рет ий эл ем ент ListIndex – со держ итно мер вы бранно г о элемента списка. Значение это г о сво й ство = 0, если вы бран первы й (верхний ) элементсписка и так далее. ListCount –со держ итко личество значений всписке. Н апример: Text1.Text=”В MyList им еет с я”&Mylist.ListCount&”эл ем ент а с пис ка” Text - Со держ итвы бранно е или введённо е значение, ко то ро е о т ображ ается втексто во м по ле. Н апример: Private Sub List1_Click () Text1.Text=”Вы брано з начение”&List1.Tex End Sub Style – О пределяет, как по льзо ватель мо ж етввести значения в по ле списка: 0 – по зво ляетпо льзо вателю вво дить в по ле спискатекстс клавиатуры , ко то ры й присваивается сво й ствуValue элементаComboBox; 2 –по сво ем удей ствию не о тличается о то бы чно г о списка ListBox. О сно вны е мето ды элементо вСписо к и П о лесо списко м : AddItem – до бавляетэлементы к списку. Е сли индекс задан, то элементдо бавляется в указанную индексо м по зиц ию , если ег о нет, то – в ко нец списка. М ето д имеетследую щ ий синтаксис: Object.AddItem эл ем ент [, индекс ] RemoveItem – удаляетэлементиз списка. М ето д имеетследую щ ий синтаксис: Object.RemoveItem индекс Clear –удаляетвсе стро ки из списка.
19
4.10. Эл ементу правл ения С ч етч ик Э лементСчётчик (SpinButton) по зво ляетуменьш ать или увеличивать число во е значение врезультатещ елчкастрелки.
4.11. Эл ементу правл ения П ол оса прокру тки Э лементП о ло са П ро крутки (ScrollBar) по зво ляетвы бирать значение из заданно го диапазо на с по мо щ ью м ы ш и щ елчко м стрелки на ко нц ах по ло сы про крутки или на само й по ло се или путём перетаскивания бег унка мы ш ью . В аж ней ш ие сво й стваSpinButton и ScrollBar: Max - максимально е значение, вы даваемо е по ло со й про крутки или счётчико м. Э то по ло ж ительно е ц ело е число или нуль. Min – минимально е значение, вы даваемо е по ло со й про крутки или счетчико м. Э то по ло ж ительно е число или нуль. Min всег да меньш е, чем Max. CmallChange –о т риц ательно е или по ло ж ительно е ц ело ечисло равно еш агуизменения значения по ло сы про крутки или счётчикапри щ елчке о дно й из стрело к. Value –текущ ее значение элементауправления. В аж ней ш ие со бы тия SpinButton иScrollBar Change – про исхо дитпри смене значения элемента управления, ко гдапо льзо ватель наж имаето днуиз кно по к элементаили ко г дабег уно к занял но во е по ло ж ение или при изменении значения сво й ства Value в про грамме.
4.12. Эл ементу правл ения Л ини я Э лементЛ иния (Line) испо льзуется для до бавления вфо рмулинии. О сно вны е сво й стваэлементаLine: BorderWidth – задаетто лщ инулинии. BorderColor – задаетц ветлинии.
4.13. Эл ементу правл ения Н абор вкл адок Э лементН або р вкладо к (TabStrip) является элементо м – ко нтей неро м, со сто ящ им из прямо уг о льно й о бласти, в ко то рую мо ж но по местить друг ие элементы и стро ки ярлы ко в. К аж до й вкладке со о тветствует элемент, нахо дящ ий ся на фо рме. И спо льзуя со бы тия Click или Change это го элемента, мо ж но менять сво й ства элементо в, размещ енны х в ко нтей нере меню , ко то ро е вы зы вается щ елчко м право й кно пки мы ш и навкладке.
20
В о время вы по лнения про г раммы каж до й вкладке со о тветствует о бъектTab из семей ства Tabs. В се элементы про нумеро ваны , начиная с 0. О бращ ение к элементумо ж но о сущ ествлять через его но мерили имя. Д ля до бавления или удаления вкладки во время вы по лнения про граммы нуж но применять мето ды семей стваTabs. В аж ней ш ие сво й стваэлементаTabStrip: SelectedItem – во звращ аетвы бранны й вданны й мо менто бъектTab. Value –но мер активно й вкладки. Tabs – испо льзуется для до ступа к семей ствуTabs или ко нкретно му о бъектусемей ства. Style – о пределяетстиль элемента (вы во дятся на экран ярлы ки или кно пки) О сно вны е со бы тия элементаTabStrip. Change –во зникаетпри вы бо ре но во й вкладки уэлемента. Click –во зникаетпри щ елчке мы ш ью наярлы ке текущ ей вкладки. Рассмо трим следую щ ие мето ды семей стваTabs. Add –Со здать но вую вкладку. Clear – У даляетвсе о бъекты из семей стваTabs. Item – В о звращ аетвкладкус указанны м но меро м. Remove –У даляетвкладку.
5. С озданиепростог оприл ож ения Бо льш инство прило ж ений , со зданны х вVB, рабо таю тв интерактивно м реж име. Н а экран вы во дится инфо рмац ия, предназначенная для по льзо вателя про г раммы , и о ж идается о тветная реакц ия в виде вво да данны х или ко манд. И нтерактивно е прило ж ение в VB со здается на базе фо рмы . Ф о рма, как правило , является о сно вны м о кно м интерфей са с элементам и управления, по зво ляю щ им и о сущ ествлять взаимо дей ствие с по льзо вателями. Ф о рмы мо ж но со здавать с по мо щ ью : • М астерапо со зданию фо рм; • Ш абло но вфо рм; • К о нструкто рафо рм.
5.1. С оздание проекта Со здание лю бо г о прило ж ения VB начинается с со здания про екта. П ро ект – это со во купно сть фай ло в, вхо дящ их в прило ж ение и хранящ их инфо рмац ию о б ег о ко мпо нентах. 5.1.1. С оздание новог опроекта 1-ы й с по с о б: 1. Запустить про г раммуVB. П о явится о кно диало г аNew Project.
21
2. В ы брать вкладкуNew. 3. В ы делить значо к Standard EXE. 4. Н аж ать кно пкуО ткры ть. 2-о й с по с о б: В ы по лнить ко мандуFile / New / New Project во кне запускаVB. 3-ий с по с о б: Н аж ать ко мбинац ию клавиш Ctrl + N. 5.1.2. С охранение проекта Д ля со хранения про ектануж но вы по лнить следую щ ие дей ствия: 1. В ы по лнить ко мандуFile / Save Project 2. В о ткры вш емся о кне диало га Save File As вы брать из списка Тип файл а значение Form Files. 3. И з списка П апка вы брать папку, в ко то ро й следуетсо хранить фай л. 4. В по ле И мя файл а ввести имя фо рм ы и наж ать кно пкуС охранить. 5. В но во м о кне диало г а Save File As ввести им я но во го про ект а и наж ать кно пкуС охрани ть. 5.1.3. О ткры тиепроекта В о кне VB вы по лнить следую щ ие дей ствия: 1. В ы по лнить ко мандуFile / Open Project. 2. Н ай ти нуж ны й фай л и наж ать кно пкуО ткры ть. 3. В ы по лнить ко мандуView / Project для до ступак ко м по нентам про екта. В о кне про во дника П ро ектаиз спискавсех ко м по ненто впро ектавы брать нуж ны й ко м по нентиактивизиро вать его. 5.1.4. Вы пол нение прил ож ения Сущ ествуетнеско лько спо со бо в для запуска прило ж ения на вы по лнение: • К о манда Run / Start. • К но пкаStart настандартно й панели инструменто в. • К лавиш аF5.
5.2. С оздание ф ормы 5.2.1. П орядок создания ф ормы П ри испо льзо вании ко манд, со здаю щ их но вы й про ект, VB со здает про екти о ткры ваетно вую фо рму, по сле чег о мо ж но приступать к со зданию прило ж ения. Л ю бая фо рма в Visual Basic со сто итиз о бъекто в, назы ваемы х элементам и управления, по рядо к рабо ты с ко то ры ми о писан в главе 4. В се элементы управления имею тхарактерны е для них сво й ства. Д ля лю бо го
22
о бъекта мо ж но указать дей ствия, вы по лняемы е про граммо й при наступлении о пределенны х со бы тий . П ро ц есс со здания фо рмы в ко нструкто ре фо рм со ст о итв размещ ении в фо рме о бъекто в и о пределении сво й ств, а такж е связанны х с ними со бы тий и вы по лняемы х дей ствий . Д ля размещ ения на фо рме о бъекто в, назы ваем ы х элементам и управления, на экране нуж но о то бразить панел ь эл ем ент о в управл ения, вы по лнив о дно из следую щ их дей ствий : • К о мандаView / Toolbox. • Н аж ать кно пкуToolbox настандартно й панели инструменто в. Размещ ение элементо в управления в фо рме о сущ ествляется следую щ им о бразо м : 1. Щ елкнуть кно пку нуж но г о элемента управления на панели элементо вуправления Toolbox. 2. У стано вить курсо р, принявш ий вид перекры тия, в место предпо лагаемо г о размещ ения о бъектавфо рме. 3. Н аж ать кно пкум ы ш и и, не о тпуская ее, нарисо вать рамкутребуемо г о размера, при эт о м рядо м с курсо ро м мы ш и по являю тся текущ ие размеры со здаваемо г о о бъектавтвипах. 4. О тпустить курсо р м ы ш и. 5.2.2. С вой ства объектов ф ормы В се о бъекты VB, размещ енны е в фо рме, и сама фо рма характеризую тся сво й ствами. Сво й ства мо ж но настро ить по сво емуусмо трению . Д ля про смо тра и редактиро вания сво й ств о бъекта, размещ енно г о на фо рме, следуето ткры ть О кно с во йс т в, вы по лниво дно из следую щ их дей ствий : • К о мандаView / Properties. • В ы делить о бъектна фо рме и вко нтекстно м меню вы брать ко мандуProperties. • К лавиш аF4. В результате вы по лнения о дно г о из этих дей ствий о ткро ется о кно Properties со сво й ствам и вы деленно го о бъекта. Раскры ваю щ ий ся списо к вверхуо кна со держ итперечень всех о бъекто в фо рмы . Н иж е списка распо ло ж ены две вкладки: ü В кладка Abphabetic (П о алфавиту) со держ итраспо ло ж енны е по алфавитуназвания сво й ство бъекта; ü В кладка Categorired (П о катег о риям) со держ итсво й ства о бъекто в, сг руппиро ванны е по категориям. В ниж ней части о кна со держ ится о писание сво й ства, вы бранно г о в списке. В средней частио кнасо держ ится две панели: ü Л евая панель со держ итнаимено вания сво й ств; ü П равая панель со держ итзначения сво й ств.
23
5.2.3. Д ей ствия, вы пол няемы е собъектами ф ормы В про ц ессе со здания фо рм ы мо ж но перемещ ать, удалять о бъекты или изменять их размеры и сво й ства. Рассмо трим следую щ ие ко манды для вы по лнения дей ствий над о бъектами фо рмы : • Вы дел ение о бъект а вы по лняется с по мо щ ью ко манды Edit / Select All. • П ерем ещ ение о бъект а вы по лняется с по мо щ ью клавиш со стрелками при наж ато й клавиш и Ctrl. • Удал ение о бъект а вы по лняется с по мо щ ью ко манды Edit / Cut или клавиш и Del. • И зм енение разм ера вы деленно г о о бъектавы по лняется с по мо щ ью маркеро вуправления. • Вы равнивание о бъект о в вы по лняется с по мо щ ью ко манды Format / Align. 5.2.4. Н астрой ка параметров ф ормы П ро ц есс со здания фо рмы мо ж но разделить наследую щ ие этапы : 1. Н астро й капараметро вфо рмы . 2. Размещ ение о бъекто ввфо рме. 3. Н астро й касво й ств, размещ енны х вфо рме о бъекто в. Ф о рма, как и все о бъекты на ней , имеетсво й ства, испо льзуя ко то ры е мо ж но задать имя, заг о ло во к, ц вет, размер, ко о рдинаты верхнег о уг ла и т.д. Н астро й ка сво й ств фо рмы о сущ ествляется в о кне Properties (Сво й ства), для о ткры тия ко то ро г о следуетустано вить курсо р на сво бо дную о т о бъекто в по верхно сть фо рмы , и вы по лнить ко манду View / Properties Window или наж ать клавиш у . П ри со хранении фо рмы со здается фай л с расш ирением frm, в ко то ро м хранится инфо рмац ия о фо рме, ее сво й ствах, о размещ енны х в ней о бъектах и их сво й ствах. А такж е заданны й про г раммны й ко д. Н иж е приведены наибо лее часто испо льзуемы е сво й ствафо рмы : • Left и Top – о пределяю траспо ло ж ение фо рмы на экране и указы ваю т рассто яние со о тветственно о т лево г о и верхнего края. • Height и Widht –служ атдля изменения размерафо рмы . • Capion – задаетзаг о ло во к фо рмы . • Name – по зво ляетзадать имя фо рмы , по ко торо мувпро г рамме про исхо дито бращ ение к фо рме. • BorderStyle – по мо г аетсо здать стиль о фо рмления фо рмы . • BackColor –по зво ляетзадать ц ветфо нафо рмы .
24
5.2.5. С обы тия и методы ф ормы П о м имо сво й ств фо рма имеетмето ды , о пределяю щ ие, вы по лняемы е ею дей ствия. Н апример, для печати о браза фо рмы до стато чно вставить о перато р следую щ ег о вида: Form1.PrintForm где Form1 –фо рма, аPrintForm –название мето да. П о м имо сво й ств и мето до в для фо рмы мо ж но задать про г раммны е ко ды или испо льзо вать уж е сущ ествую щ ие, написанны е на язы ке Visual Basic и вы по лняем ы е при наступлении связанны х с ними со бы тий . Ч то бы о ткры ть о кно , предназначенно е для вво да про граммно г о ко да, следуетвы по лнить о дно из следую щ их дей ствий : • вы по лнить дво й но й щ елчо к на сво бо дно й о то бъекто в по верхно стифо рмы ; • устано вить курсо р нафо рмеи вы по лнить ко мандуView / Code; • вы по лнить ко мандуко нтекстно го меню фо рмы View Code. Ч то бы со здать про ц едурудля о брабо тки со бы тия фо рмы , нео бхо димо вы по лнить следую щ иедей ствия: 1. О ткры ть о кно про ц едур Project лю бы м удо бны м спо со бо м. 2. И з раскры ваю щ егося спискаObject вы брать о бъектForma. 3. И спо льзуя раскры ваю щ ий ся списо к Procedure, вы брать о брабаты ваемо е со бы тие. 4. М еж дуо перат о рамиSub и End по местить текстпро ц едуры . Д ля настро й ки о кна про ц едур Project испо льзуется вкладка Editor (Редакто р) диало гово г о о кна Options, о ткры ваемо го ко мандо й Tools / Options (Сервис / П араметры ). П ри устано вке в это м о кне флаж ка Default to Full Module View о то браж ается списо к всех про ц едур. Д ля удо бства про смо тра про ц едур их мо ж но разделить линиям и (разбить на секц ии), устано вивфлаж о к Procedure Separator. Н аибо леечасто встречаю щ иеся со бы тия приведены втабл.2. Т аблиц а2 Со бы тия фо рмы Со бы тие Ситуац ия Activate (активизиро вать) О то браж ение фо рм ы наэкране Ф о рма стано вится неактивно й при актиDeactivate визац ии друг о й фо рм ы Load (заг рузка) Заг рузкафо рмы впам ять Resize (изменить размер) И зменение размерафо рмы Terminate (заверш ение) У даление фо рм ы Unload (вы г рузка) В ы грузкафо рмы из памяти
5.3. П орядок создани я при л ож ения 1. В ы по лнить ко мандуво кне VB File / New Project.
25
2. В о ткры вш емся о кне увеличьте размерфо рмы . 3. Д ля вво дазаголо вкафо рмы следуетиспо льзо вать сво й ство фо рмы Caption. 4. Разместить в фо рме элементы управления, для ко то ры х ж елательно присво ить о см ы сленны е имена, то г да при рабо те в о кне сво й ств, о кне редакто ра ко да при написании про ц едур не будет путаниц ы с именам и о бъекто в: § Д ля размещ ения в фо рме тексто во го по ля, предназначенно го для вво да данны х, следуетиспо льзо вать элементTextBox. И нфо рмац ия, о то браж аемая втексто во м по ле, задается сво й ство м Text. § Д ля указания, будетли вы брано о дно из двух значений , разместить в фо рме флаж о к CheckBox и устано вить для него сво й ство Caption и если требуется, что бы флаж о к бы л устано влен по умо лчанию , сво й ству Value присво ить значение Checked. § Д ля размещ ения в фо рме о бы чно г о списка следуетво спо льзо ваться элементо м ListBox. Д ля фо рмиро вания списка следует во спо льзо ваться сво й ство м List и ввести весь списо к. Д ля перехо да на следую щ ую стро кусписка нуж но испо льзо вать ко мбинац ию клавиш Ctrl + Enter. § Д ля размещ ения в фо рме раскры ваю щ егося списка, ко то ры й требуетна фо рме меньш е места, чем списо к, следуетво спо льзо ваться элементо м ComboBox. Д ля вво да списка нуж но во спо льзо ваться сво й ство м List. § Д ля со здания надписей для всех размещ енны х в фо рме элементо в управления нуж но со здать надписи с по мо щ ью элементаLabel. § Д ля о то браж ения расчетны х данны х мо ж но во спо льзо ваться элементо м TextBox илиэлементо м Label: ü для элемента TextBox со здать надпись к нем у, испо льзуя сво й ство Name, ввести им я по ля для о бращ ения к нем ув про грамме; инфо рмац ия, о то браж аемая в это м по ле, задается сво й ство м Text; для сво й ства Locked устано вить значение True, по ско лькуэто по ле предназначено то лько для про смо траинфо рмац ии. ü для элемента Label со здать надпись к нему, испо льзуя сво й ство Name, ввести имя, например, Н адписьЗначение; инфо рмац ия, о то браж аемая вэто м по ле, задается сво й ство м Caption; в про ц ессе размещ ения это г о элемента в фо рме сво й ствуСaption нуж но присво ить пусто е значение. § Д ля со здания кно пки, щ елчо к на ко то ро й приведетк вы по лнению расчето в, с испо льзо ванием введенны х значений в по ля
26
фо рмы , следуетво спо льзо ваться инструменто м CommandButton напанели элементо вуправления: ü испо льзуя сво й ство Caption, следует ввести название кно пки; ü для изменения ш рифта текста на кно пке – во спо льзо ваться сво й ство м Font; ü что бы задать про ц едуруо брабо тки со бы тия Click, нуж но дваж ды щ елкнуть на кно пке и в о ткры вш емся о кне редакто рако да со здать про ц едурувы числения (расчет о в) в зависимо сти о т введенны х параметро в. В ко нц е про г раммно г о ко да следуетприсво ить по лученно е значение сво й ству Text о бъекта TextBox, в ко то ро м размещ ается результат вы числений или сво й ству Caption о бъекта Label. § Со здание прило ж ения заверш ено . Затем запустить ег о на вы по лнение, наж ав клавиш у или вы брав ко манду Run / Start. Е сли про г рамма не будетвы по лнена, следуетвернуться в о кно редакто ра ко да и вы по лнить про ц едуру о тладки про граммы .
6. У правл ениепроектом О сно вны м по нятием для Visual Basic при разрабо тке прило ж ения является про ект . В се прило ж ения со здаю тся как про екты и хранятся в фай лах с расш ирением vbp. Д аж е само е про сто е прило ж ение требуетрабо ты с про екто м. В Visual Basic про ект– это ко нтей нер, в ко то ро м нахо дятся все требуемы е фо рмы прило ж ения и другие визуальны е элементы вместе с про граммны м ко до м. Т аким о бразо м, мо ж но сказать, что про ект является средство м интег рац ии визуальны х и про граммны х ко мпо ненто в прило ж ения. К ро ме это г о , к про ектумо ж но по дклю чить библио теки DLL, ко м по ненты сто ро нних разрабо т чико вс по мо щ ью о ко н ссы ло к References и ко мпо ненто вComponents. В Visual Basic мо ж но рабо тать с г руппо й про екто в, что расш иряет во змо ж но сти рабо ты с ними. Группа про ект о в – эт о фай л с расш ирением vbg, анало гпро ектапро екто в, вко то ро м со брано неско лько про екто в. В се элементы про екта – фо рмы , диало г о вы е о кна, про граммны е мо дули, о тно сящ иеся к о дно мупро екту. Реко мендуется хранить в о тдельно й папке, со зданно й спец иально для это г о про екта.
6.1. С тру кту ра проекта П ро екто беспечиваетвзаимо дей ствие всех элементо в прило ж ения и по это му, как всякий о рг анизо ванны й о пределенны м о бразо м о бъект, имеет
27
сво ю со бственную структуру. Рассмо трим пример структуры про екта для прило ж ения Sales. Project: Sales Module: Mounting_Sales Form: Customer Control: LabelCustomerName Control: LabelOutstandingBalance Control: TextCustomerName Control: TextOutstandingBalance Form: Invoice Control: LabelCustomerName Control: LabelInvoictdata Control: LabelPastDueCharges Control: LabelCurrentCharges Control: LabelTotalCharges Control: TextCustomerName Control: TextInvoictData Control: TextPastDueCharges Control: TextCurrentCharges Control: TextTotalCharges Control: FrameInvoiceCopies Control: CheckboxAccountSupervisor Control: CheckboxRegionalCreditDept Control: CheckboxCollectionsDept Control: CommandPrintInvoice Control: CommandSaveWithoutprint Control: CommandCancelinvoice Д анны й про ектсо сто итиз про г раммно го мо дуля и двух фо рм с элементам и управления. Э лементы управления, в со о тветствии со структуро й про екта, то ж е мо г утбы ть вло ж енны ми. Д ля рабо ты со структуро й про екта в среде про ектиро вания Visual Basic имею тся спец иальны е инструментальны е средства, вко то ры х о нанаглядно представлена: про во дник про екта и браузер о бъекто в. Структура про екта со держ итссы лки на элементы про во дника про екто в и браузера о бъекто в, аименно : • фай лы фо рм, имею щ ие расш ирение frm; • дво ичны е фай лы сво й ств элементо в управления для каж до й фо рмы , имею щ иерасш ирение frx; • фай лы для каж до г о мо дуля классо в, имею щ ие расш ирение cls; • фай лы для каж до г о про граммно г о мо дуля с расш ирением bas; • фай лы элементо вуправления ActiveX, имею щ ие расш ирение ocx; • фай лресурсо вс расш ирением res; • библио течны е фай лы ; • фай лы ко м по ненто в.
28
6.2. П роводник проекта П ри рабо те с про екто м удо бнее всег о рабо тать впро во днике про екта. В это м о кне наг лядно видна структура про екта со всеми элементам и разрабаты ваемо г о прило ж ения. В о кне про во дника про екта, так ж е как и во кне про во дникаWindows, мо ж но вы по лнять все дей ствия, нео бхо дим ы е при про ектиро вании прило ж ений с фай лам и элементо впро екта: • до бавлять фай лы элементо в про екта: фо рмы , мо дули, классы мо дулей и т. д.; • исклю чать элементы из про екта; • редактиро вать; • со хранять элементы про екта. Д ля до бавления в про ектфо рмы , мо дуля, фай ла и друг их элементо в нео бхо димо вы по лнить следую щ ие дей ствия: 1. В ы по лнить ко мандуProject / Add с указанием со о тветствую щ его типа фай ла, например, Add Form (Д о бавить фо рму) или Add Module ( Д о бавить мо дуль). 2. В по явивш емся о кне диало г а вы брать нуж ны й элемент. П о сле это г о элементпро ектапо явится во кне про во дника. Д ля удаления элемента из про ектадо стато чно вы делить в про во днике нуж ны й элементи вы по лнить ко мандуProject / Remove или через ко нтекстно еменю . Д ля редактиро вания элемента про екта нео бхо димо вы делить ег о в о кне про во дника и вы по лнить ко мандуView / Object или в ко нтекстно м меню вы брать ко манду View Object, наж ав правую кно пку мы ш и на редактируемо м о бъекте. Н о самы й про сто й спо со б дваж ды щ елкнуть на редактируемо м о бъекте. П ри это м будетвы зван со о тветствую щ ий инструментсреды разрабо тки с вы бранны м элементо м для внесения изменений . Д ля фо рм и диало г о вы х о ко н это ко нструкто р фо рм, для про граммны х мо дулей – редакто р. Д ля редактиро вания про г раммно г о ко да визуально го о бъектамо ж но испо льзо вать ко мандуView / Code.
6.3. П росмотр стру кту ры проекта В Visual Basic про во дник про екта на является единственны м средство м рабо ты со ст руктуро й про екта. У до бны м до по лнительны м инструменто м является Object Browser (Браузер о бъекто в). Д ля про смо тра структуры про екта в о кне браузеро в о бъекто в из списка, распо ло ж енно г о в верхнем лево м уг лу, следуетвы брать имя о ткры ваемо г о про екта. Браузер о бъект ов предо ставляетдо ступ к сво й ствам, мето дам и со бы тиям о бъекто в, вхо дящ их в про ект. В это м о кне мо ж но вы по лнять тексто вы й по иск заданно го значения впределах всего про екта.
29
Д ля запуска браузера мо ж но во спо льзо ваться о дним из следую щ их спо со бо в: • В ы по лнить ко мандуView / Object Browser; • Н аж ать кно пку Object Browser на стандартно й панели инструменто в; • Н аж ать клавиш у. О кно браузера и о кно про во дника при рабо те над про екто м до по лняю тдругдруг а. В про во днике бо лее нагляднаиерархия про ектаи из него запускается визуально е про ектиро вание о бъекто в, а в браузере по дро бно представлен со ставэлементо впро екта, библио тек и классо в. В о кне Object Browser удо бно рабо тать с о бъектами бо лее низко го уро вня, чем фо рмы , диало г о вы е о кна, фай лы про екта. И з о кна браузера запускается редакто р ко дао бъекто в, запуск визуально г о про ектиро вания здесь не до ступен.
6.4. С вой ства проекта Visual Basic предо ставляет во змо ж но сть редактиро вать сво й ства про екта с по мо щ ью диало г о во г о о кна сво й ств про екта Project Properties. Д ля о ткры тия это г о о кна нео бхо димо вы по лнить следую щ ую ко манду Project / <И мя проекта> Properties. Д иало гово е о кно Project Properties со держ итпять вкладо к: • General (О сно вны е) –о сно вны е сво й ства; • Make (Со здать) –сво й ствасо здаваемо г о прило ж ения; • Compile (К о мпиляц ия) –усло вия ко мпиляц ии про екта; • Component (К о м по ненты ) –параметры ко мпо ненто вActiveX про екта; • Debugging (О тладка) –параметры о тладки про екта.
6.5. О тл адка проекта К ак правило , о тладка– это про веркарабо ты и исправление о ш ибо к со ставителем про ектанако нтро льно м примере. И нструментарий о тладки по зво ляет про ко нтро лиро вать избранны е участки ко да прило ж ения для ло кализац ии о ш ибки, вы по лняя прило ж ение по ш аг ам, о станавливаясь в то чках о стано ва, даетво змо ж но сть про верить значения переменны х, сво й ств о бъекто в и друг ую интересую щ ую инфо рмац ию и вы яснить таким о бразо м исто чник о ш ибки. В набо р инструментария о тладки вхо дяттакие о сно вны е инструменты , как: • панель инструменто в Debug (О тладка) с кно пкам и ко манд для вы по лнения о тладки прило ж ения; • о кно Immediate (Н епо средственно е вы по лнение), предназначенно е для непо средственно г о вво да ко манд, требую щ их немедленно го вы по лнения;
30
• о кно Watches (Н аблю дение), предназначенно е для про смо тразначений вы раж ений , вклю ченны х всписо к про смо тра; • о кно Locals (Л о кальны е), предназначенно е для про смо тра значений переменны х; • редактор ко да со встро енны м и во змо ж но стям и про смо тра переменны х, ко нстант, сво й ств, вы раж ений при о тладке прило ж ения в то чках о стано ваи по ш агово м вы по лнении прило ж ения; • о кно Call Stack (Стек вы зо во в) для про смо тра вы званны х, но незаверш енны х про ц едур. Д ля вы зо ва панели инструменто в Debug на экран нео бхо димо вы по лнить ко манду: View / Toolbars / Debug (В ид / П анели инструменто в / О тладка). Н а это й панели инструменто в распо ло ж ены не то лько кно пки всех перечисленны х вы ш е о сно вны х инструменто в о тладки. В качестве примера испо льзо вания инструменто в о тладки, распо ло ж енны х на панели инструменто в рассмо трим Debug, рассмо трим ус т ано вку т о чки о с т ано ва, ко то рая испо льзуется в про ц ессе о тладки прило ж ения. Д ля это г о следует щ елкнуть кно пко й м ы ш и, устано вивуказатель в серо м вертикально м по ле редакто ра ко да напро тив интересую щ ей стро ки (предпо ло ж ительно , г де есть о ш ибка) или вы по лнить ко мандуDebug / Toggle Breakpoint (О тладка / У стано вить то чкуо стано ва). П ри это м всеро м вертикально м по ле рядо м с вы бранно й ко мандо й устанавливается ж ирная то чка, о стано вка вы по лнения про г раммы про изо й детименно вэто м месте ко дапро г раммы . П ри запуске про г раммы в то чке о стано ва вы по лнение про граммы прио станавливается и для ко нтро ля рабо ты прило ж ения мо ж но испо льзо вать весь о тладо чны й инструментарий : про сматривать значения переменны х и вы раж ений при по зиц ио ниро вании маркера на вы бранно й переменно й или вы раж ении. Д ля бо лее тщ ательно г о ко нтро ля рабо ты прило ж ения мо ж но испо льзо вать о кна про смо тра: Immediate (Н епо средственно е вы по лнение), Watches (Н аблю дение), Locals (Л о кальны е), Quick Watch (Бы стры й про смо тр), Call Stack (Стек вы зо во в).
6.6. О бработка оши бок О брабо тка о ш ибо к и неправильны х дей ствий по льзо вателя – о бязательная со ставляю щ ая лю бо г о про екта. Д ля рабо ты с о ш ибками в Visual Basic есть спец иальны й о перато р On Error. Сущ ествуетнеско лько варианто всинтаксисаэто го о перато ра: • On Error Go To StringLabel где StringLabel – метка о перато ра – лю бо е тексто во е значение, начинаю щ ееся с буквы и заверш аю щ ееся дво ето чием. В это м варианте синтаксиса при во зникно вении о ш ибки про граммабудетперехо дить к о перато ру, сле-
31
дую щ ем у непо средственно за это й метко й , например, к о перато ру, ко то ры й вы зы ваетпро ц едуруо брабо тки о ш ибки. • On Error Resume Next В то ро й вариантэто г о о перато раиспо льзуется для иг но риро вания о ш ибки, впро ц ессе вы по лнения ко да. • On Error Go To 0 Э то твариантиспо льзуется для о тклю чения о брабо тки о ш ибо к в како й либо про ц едуре. Д ля вы по лнения дей ствий про г раммы по сле о бнаруж ения о ш ибки служ ито перато р Resume, ко торы й имеетразличны е варианты испо льзо вания. Н апример: • Resume Next П ри это м вы по лняется о перато р, следую щ ий зао перато ро м с о ш ибко й . • On Resume NextLabel где NextLabel – метка о перато ра, ко торы й будетвы по лняться по сле о брабо тки о ш ибки.
6.7. С оздание испол няемог оф ай л а проекта П о сле заверш ения про ектиро вания про екта, тестиро вания и о тладки ег о в среде Visual Basic наступаетзаверш аю щ ий этап – ко мпиляц ия, то есть со здание независимо г о о тсреды испо лняемо г о фай ла( с расш ирением exe), библио теки динам ическо й ко мпо но вки ( с расш ирением dll) или ко мпо нентаActiveX (с расш ирением ocx). Д ля запуска про ц есса ко м пиляц ии и со здания испо лняемо г о фай ла про ектаприло ж ения нео бхо димо вы по лнить следую щ ие дей ствия: 1. В ы по лнить ко мандуProject / <И мя проекта> Properties и в о ткры вш емся диало гово м о кне Project Properties сво й ств про екта настро ить параметры ко мпиляц ии на вкладках Make (Со здать) и Compile (К о мпиляц ия). 2. В ы по лнить ко мандуFile / Make <имя проекта>.exe Ф ай л / Со здать. П ри это м по является о кно диало г аMake Project. 3. В по ле И м я файл а диало г о во го о кна Make Project (Со здать про ект) ввести им я испо лняемо г о фай ла или о ставить им я, предлаг аемо е Visual Basic по умо лчанию исхо дя из имени про екта. 4. Н аж ать кно пкуOptions (П араметры ) иво ткры вш емся диало г о во м о кне Project Properties сво й ств про екта ввести но мер версии испо лняемо г о фай ла. 5. Н аж атием кно пки OK запустить про ц есс ко м пиляц ии. П о сле успеш но г о заверш ения про ц есса ко мпиляц ии про ектгото в к независимо й рабо те без среды Visual Basic.
32
7. Разработка пол ьзовател ьског оинтерф ей са 7.1. Д иал ог овы е окна В Visual Basic сущ ествуетспец иальны й вид о ко н – диало говы е. В распо ряж ении со ставителя прило ж ений имеется хо ро ш о развиты й инструментарий для их со здания. Д иало г о вы е о кнабы ваю тдвух типо в – мо дальны е и немо дальны е. М о дал ьно е о кно – эт о о кно , из ко то ро г о нельзя перей ти в друг о е о кно , не закры втекущ ее. Д анны й вид диало г о вы х о ко н испо льзуется для вы дачи со о бщ ений о хо де рабо ты прило ж ения, ег о настро й ки или вво да каких-либо данны х, нео бхо димы х для рабо ты прило ж ения. Нем о дал ьно е диало го во е о кно – это о кно , по зво ляю щ ее перемещ ать фо куснадруг о е о кно или фо рмубез закры тия текущ ег о о кна. П ро стей ш ие из диало г о вы х о ко н –это о кнасо о бщ ений и о кна, предназначенны е для вво да инфо рмац ии. В до по лнение к ним в Visual Basic сущ ествуетнабо р бо лее сло ж ны х стандартны х диало г о вы х о ко н для прило ж ений : • Open (О ткры ть) – диало гово е о кно для по иска в фай ло во й структуренуж но г о фай ла; • Save As (Со хранить как) – для по иска места хранения фай ла и вво деег о имени; • Font (Ш рифт) –для вы бо раи устано вки ш рифта; • Color (Ц вет) –для вы бо рац вето во й палитры ; • Print (П ечать) –для насто й киреж имапечати; • Help (Справка) –для рабо ты со справо чно й системо й прило ж ения. В се перечисленны е в это м списке диало г о вы е о кна мо ж но со здать с по мо щ ью элемента управления CommonDialog.П реж де чем его испо льзо вать, нео бхо димо по дклю чить к про екту библио теку Microsoft Common Dialog Control 6.0 через диало гово е о кно Components (К о мпо ненты ) среды про ектиро вания. Бо лее по дро бно о рабо те с этими о кнам и мо ж но узнать в со о тветствую щ ей литературе по Visual Basic (1). Рассмо трим бо лее по дро бно о кно со о бщ ений и о кно , предназначенно е для вво да инфо рмац ии. В стро енны е диало г о вы е о кна – о кно со о бщ ения – MessageBox и о кно вво да – InputBox представляю тсо бо й о перато ры илифункц ии язы каVisual Basic. 7.1.1. О кносообщ ения (MsgBox) Д иало гово е о кно со о бщ ения не требуетпро ектиро вания и вы зы вается из про г раммы ко мандо й MsgBox или со здается с по мо щ ью функц ии MsgBox (), ко то рая имеетследую щ ий синтаксис: MsgBox (prompt [, buttons] [, title] [, helpfile, context] г де:
33
• параметр prompt – о бязательны й . Э та стро ка вы дается в о кне со о бщ ения. М аксимальная длинатекста1024 симво ла; • параметр buttons – нео бязательны й . Значение параметра ц ело е число равно е сумме значений , о пределяю щ их набо р кно по к и т. д., еслиег о нет, то значение параметраравно 0; • параметр title –заг о ло во к о кнасо о бщ ения; • параметр helpfile –ссы лканафай лсправо чно й системы ; • параметр context – ссы лка насо держ ание вфай ле справо чно й системы . Д ва по следних параметра являю тся нео бязательны ми и касаю тся справо чно й инфо рмац иик данно мусо о бщ ению . Н ео бхо димо иметь в виду, что для задания неско льких параметро в кно по к и значко во дно временно следуетпро сто сло ж ить со о тветствую щ ие кно пки. Н апример: Ans = MsgBox (“З ако нчит ьвы чис л ения ? ”, VbYesNo + VbQuestion + VbDefaultButtonl, “П рим ер о кна MsgBox”). В зависимо сти о твы бо ракно пки диало г о во е о кно MsgBox во звращ аето дно из значений , заданны х систем ны ми ко нстантам и. Д ля о пределения, какая кно пкабы ла наж ата, значение переменно й Ans анализируется усло вны м о перато ро м if. If Ans = VbYes then User Form1. Hide Ф ункц ия во звращ аетзначение, со о тветствую щ ее вы бранно й по льзо вателем кно пке во кнесо о бщ ения. 7.1.2. О кноввода инф ормации (InputBox) Д о стато чно част о в диало г о во м о кне нео бхо димо не то лько наж ать кно пки вы бо ра дей ствия, но и ввести о пределенную инфо рмац ию , ко то рая затем анализируется про г раммо й . Д ля вы по лнения тако г о ро да дей ствий в Visul Basic мо ж но испо льзо вать диало гово е о кно вво да инфо рмац ии InputBox Э тафункц ия имеетследую щ ий синтаксис: InputBox (promt [, title] [, default] [,xpos] [, ypos] [, helpfile, context] где: • параметр prompt – о бязательны й . Э та стро ка вы дается в о кне со о бщ ения. М аксимальная длинатекста1024 симво ла; • параметр title –текстзаголо вкадиало г о во го о кна; • параметр default – стро ка в тексто во м по ле. Е сли параметр о тсутствует, стро као стается пусто й ; • параметр xpos – по зиц ия по вертикали лево го верхнег о уг ла диало гово г о о кна о тно сительно лево г о верхнего угла экрана. П о умо лчанию присваивается значение, со о тветствую щ ее середине экрана; • параметр ypos - по зиц ия по г о ризо нтали лево г о верхнег о угладиало гово г о о кна о тно сительно лево г о верхнего угла экрана. П о
34
умо лчанию присваивается значение, со о тветствую щ ее середине экрана; • параметр helpfile –ссы лканафай лсправо чно й системы ; • параметр context – ссы лка на со держ ание в фай ле справо чно й системы . О кно со держ итсо о бщ ение о то м, какие данны е до лж ен ввести по льзо ватель по сле текстадля вво да данны х и две кно пки О К и О тмена, ко то ры е по дтверж даю т или о тменяю т вво д данны х. Зако нчив вво д данны х, по льзо ватель до лж ен наж ать о днуиз них. Е сли щ елчо к вы по лнен на кно пке<О К >, то значением функц ии является текст, нахо дящ ий ся впо ле вво да. Е сли– накно пке , то значением функц ии будетпустая стро ка. Н апример: A = InputBox (“ В ведите паро ль”, “ О кно для вво дапаро ля”) В результате наэкране по явится диало г о во ео кно следую щ ег о вида: О кно для вво дапаро ля В ведите паро ль
О К Cancel
В о тличие о тдиало г о во г о о кна MsgBox, в о кне InputBox всег да имею тся то лько две кно пки управления: и . К но пка по дтверж даетвво д данны х, кно пка - закры ваетдиало г о во е о кно без вво даданны х.
7.2. Ф ормы как пол ьзовател ьские окна диал ог а П о льзо вательско е о кно диало га – это фо рма, со держ ащ ая элементы управления, вклю чая ко мандны е кно пки, переклю чатели и тексто вы е по ля, ко то рая о беспечиваетпо льзо вателю вво д инфо рмац ии, требуемо й для рабо ты прило ж ения. У стано вко й значений сво й ств мо ж но настаивать вид и по ведение о кна диало г а. М анипулиро вать по льзо вательскими о кнами диало г амо ж но вперио двы по лнения через про г раммны й ко д. 7.2.1. С оздание пол ьзовател ьског оокна диал ог а Ч то бы со здать по льзо вательско е о кно диало га, мо ж но о ткры ть но вую фо рмуили настро ить сущ ествую щ ее о кно диало г а. П о мере разрабо т-
35
ки но вы х о ко н диало г абудетнакапливаться ко ллекц ия о ко н диало г а, ко то ры е мо ж но испо льзо вать вразны х прило ж ениях. Д ля то г о чт о бы настро ить сущ ествую щ ее о кно диало г а, нуж но вы по лнить следую щ ую по следо вательно сть дей ствий : 1. В ы по лнить ко мандуProject / Add Form / В кладка Existing, в о ткры вш емся о кне Add Form до бавить сущ ествую щ ую фо рмук про екту. 2. В ы по лнить ко мандуFile / Save <И мя ф ай л а> As и ввести но во е имя фай ла. (Э то предо хранито тизменений сущ ествую щ ую версию фо рмы ). 3. П ри нео бхо димо сти, настро ить вид и ко м по но вкуфо рм ы . 4. В о кне редакто ра ко да наст ро ить про ц едуры о брабо тки со бы тий фо рмы иэлементо вуправления. Д ля со здания но во г о о кнадиало г апо рядо к вы по лнения дей ствий будетследую щ ий : 1. В ы по лнить ко манду Project / Add Form / В кладка New, в о ткры вш емся о кнедо бавить к про ектуно вую фо рму. 2. Н астро ить ко мпо но вкуно во й фо рмы и ввести элементы управления. 3. Д о бавить ко д к про ц едурам со бы тий фо рмы и элементо вуправления. П ри со здании по льзо вательско г о о кна диало гаразрабо тчик по лучает значительную сво бо дув о пределении ег о ко мпо но вки и по ведения. О кно мо ж ет бы ть фиксиро ванны м или перемещ аем ы м, реж имны м или нереж имны м . О но мо ж етсо держ ать элементы управления различны х типо в. Реж им но е о кно диало гадо лж но бы ть закры то (скры то или вы г руж ено ), преж де чем мо ж но будетпро до лж ить рабо тувприло ж ении. Н ереж имны е о кна диало га по зво ляю т перемещ ать фо кус о т о кна диало г ак другой фо рме, не закры вая это о кно диало г а. В то время как о кно диало г ао ткры то , мо ж но про до лж ать рабо тать вдругом месте прило ж ения. 7.2.2. О ткры тиепол ьзовател ьског оокна диал ог а В ы вести о кно диало га на экран мо ж но так ж е, как и лю бую друг ую фо рму в прило ж ении. Ф о рма запуска загруж ается авто матически при запуске прило ж ения. К о гда требуется о ткры ть вто рую фо рмуили о кно диало г а, со о тветствую щ ий ко дзаг руж аети вы во дитег о наэкран. А нало г ично , ко г да требуется удалить фо рмуили о кно диало г а, вы по лняется ко д, ко то ры й их вы г руж аетилискры вает. Разрабо тчикуприло ж ения предо ставляется бо льш ая г ибко сть в о пределенииреж имо взаг рузки впамять и о ткры тия о кнадиало га. В табл. 3 приво дятся различны е задачи при вы во де фо рмы на экран и средствареш ения этих задач.
36
Т аблиц а3 Спо со бы вы во даи фо рмы наэкран Задача Спо со б реализац ии Заг рузить фо рмув пам ять, но не вы - И спо льзо вать о перато р Load или во дить ее наэкран про сто о братиться к сво й ству или элементууправления вфо рме Заг рузить и о ткры ть фо рму как не- И спо льзо вать мето д Show реж имную Заг рузить и о ткры ть фо рмукак ре- И спо льзо вать мето д Show со стилем ж им ную vbModal В ы вести на экран заг руж енную У стано вить сво й ство Visible в True фо рму или испо льзо вать мето д Show Скры ть фо рму У стано вить сво й ство Visible в False или испо льзо вать мето д Hide Скры ть фо рму и вы г рузить ее из И спо льзо вать о перато р Unload памяти
8. К омпоненты язы ка Visual Basic К ак и лю бо й друг о й язы к про граммиро вания Visual Basic по ддерж иваетряд о бщ их ко нструкц ий про г раммиро вания и язы ко вы х элементо в. Н иж е рассмо трены о сно вны е ко мпо ненты язы ка
8.1. П еременны е П еременны е испо льзую тся для управления данны м и при вы по лнении про граммы , что эко но митвремя разрабо тчикаи уско ряетпро ц есс вы по лнения про г раммы . Visual Basic. П еремен н а я – это нечто , до пускаю щ ее изменения. П еременная о пределяется как имя, ко то ро е по льзо ватель даето пределенно й ячей ке памяти П К . Т .е. мо ж но рассматривать переменную как пам ятную ячей купро граммы . К аж дая переменная имеетсво е им я. Значение переменно й , в о тличие о тее имени, мо ж етизменяться в про ц ессе вы по лнения про г раммы . Т .о . переменная представляетсо бо й зарезервиро ванно е место в о перативно й памяти для временно го хранения данны х. О дно й из важ ны х причин испо льзо вания переменны х является то , что переменны е упро щ аю тпро ц есс написания по дпро г раммы . П еред испо льзо ванием переменно й в тексте про г раммы о на до лж на бы ть о писана. О писание переменно й о сущ ествляется с по мо щ ью спец иально г о о перато равверхней части про г раммы . 8.1.1. Т ипы переменны х Различаю тдватипапеременны х:
37
1. П еременны е, ко то ры е о пределяетсам по льзо ватель. 2. Cво й ствао бъекто вуправления и экранны х фо рм Visual Basic. Т аким о бразо м, сво й ства являю тся о дним из видо в переменны х и о ни мо гутизменяться впро ц ессе вы по лнения про г раммы . 8.1.2. И мя переменной И мя переменно й делаетпеременную бо лее наглядно й и про сто й для чтения. И м я переменно й до лж но удо влетво рять следую щ им требо ваниям : • И мя мо ж етсо держ ать лю бы е буквы и ц ифры . • И мя до лж но начинаться с буквы . • И мя не до лж но со держ ать то чкуи про белы . • И мя до лж но бы ть уникальны м впределах о бласти видимо сти. • И мя не мо ж етсо держ ать бо лее 255 симво ло в. ! И м я перем енно й м о ж ет бы т ьдо с т ат о чно дл инны м , чт о бы о т разит ьназначение в про грамм е. 8.1.3. Т ипы данны х дл я переменны х VB Т ипы значений , ко то ры е мо гутпринимать переменны е, назы ваю тся «типам и данны х». П еременная мо ж етхранить текст, ц елы е и десятичны е числа, даты , врем я, ло г ические величины , о бъекты OLE (например, рисунки), ко то ры е занимаю тразличны й о бъем памяти и имею тразличны й до пустим ы й диапазо н изменений значений переменно й . Х арактеристики различны х типо впеременны х приведены втабл.4. Т аблиц а4 Т ипы переменны х и их характеристики Д иапазо н Т ип переХ ранимая величина Занимаемы й менны х размер памяти значений 1 2 3 4 Integer Ц елы ечисла О т–32768 2 бай та до + 32768 Long Бо льш ие ц елы е числа П риблизи4 бай та тельно +/2 млрд. Single Ч исла с плаваю щ ей за+/- о т1Е 45 4 бай та пято й о бы чно й то чно сти до 3Е 38 Double В ещ ественны е числа +/- о т5Е 8 бай т дво й но й то чно сти с пла324 до ваю щ ей запято й 1.8Е 308 CurД енеж ны е величины . Д есяrency тичны е числа с фиксиро ванно й то чко й (15 знако в 8 бай т +/- 9Е 14 до то чки и 4 знака по сле то чки)
38
1 String
2 Т ексто вая инфо рмац ия фиксиро ванно й длины
Byte Boolean
Т ексто вая инфо рмац ия переменно й длины Д во ичны е данны е Лог ические величины
Значения даты и времени
Date Variant
Л ю бо й тип данны х из приведенны х вы ш е
Object
Ссы лки на о бъекты (рисуно к, о бъекты ,OLE)
П ро до лж ение табл. 4 3 4 До 16 1 бай тна 2 симво ло в 31 сим во л Д о 2 симво ло в 1 бай т О т0 до 255 True (истина) или False 2 бай та (ло ж ь, по умо лчанию ) О т1/1/100 до 8 бай т 12/31/9999 16 бай т+ 1 Н е задан бай тна сим во л 4 бай та
Н е задан
Следует по м нить, что симво л Е испо льзуется для кратко й записи экспо ненты и о значаетстепень числа10. В наимено вании переменно й реко мендуется испо льзо вать префиксы , ко то ры е о траж аю ттип переменно й . П ри тако м о бо значении переменны х по вы ш ается читабельно сть про г раммы и сниж ается ко личество о ш ибо к про г раммиро вания. П рефиксы о то браж аю ттип переменно й и о бласть ее дей ствия. Т ипы данны х переменны х, испо льзуемы е префиксы и примеры испо льзо вания приведены втабл.5. Т аблиц а5 П рефиксы , испо льзуемы е вименах переменны х Т ип данны х
П рефикс
Boolean Byte Currency Date Double Integer Long Single String Variant
BLn Byt Cur Dtm Dbl Int Lng Sng Str Vnt
П ример испо льзо вания BlnSuccess BytImage CurPrice DtmFinish DblSum IntQuality LngTotal SngLength StrLastname VntValue
39
8.1.4. О бъявл ение переменны х в прог рамме О пределение в про г рамме переменны х различно г о типа по зво ляет испо льзо вать различны й о бъем ресурсо в памяти. О днако при о бъявлении бо льш о г о числа переменны х типа variant, ко то ры е занимаю тсущ ественны й о бъем пам яти, мо ж но о чень бы стро исчерпать системны ересурсы . Д ля задания типа переменно й эту переменную следует о бъявить. О бъявление переменно й о сущ ествляется двум я спо со бами: 1. Я вно е о бъявление. 2. Н еявно ео бъявление. Я вно е о бъявление испо льзуето перато ры присваивания для задания типа переменно й . Э ти о перато ры испо льзую тся не для присваивания значений , а для указания типаданны х. Я вно е о бъявление переменны х о сущ ествляется о перато рами Dim, Private, Static, Public, ко то ры е имею тследую щ ий синтаксис: Dim им яП ерем енно й1 [As т ипП ерем енно й1] им яП ерем енно й2 [As т ипП ерем енно й2] Private им яП ерем енно й1 [As т ипП ерем енно й1] им яП ерем енно й2 [As т ипП ерем енно й2] Static им яП ерем енно й1 [As т ипП ерем енно й1] им яП ерем енно й2 [As т ипП ерем енно й2] Public им яП ерем енно й1 [As т ипП ерем енно й1] им яП ерем енно й2 [As т ипП ерем енно й2] Dim – указы ваетна о писание переменно й (со кращ енно е о тDimension). Public –о бъявляето бщ ие переменны е, ко то ры е до ступны во всех про ц едурах и функц иях про г раммы . Э ти переменны е мо ж но испо льзо вать для хранения инфо рмац ии, нео бхо димо й в неско льких про ц едурах. Private – о бъявляет переменны е, испо льзуем ы е то лько внутри про ц едуры или функц ии, в ко то ро й о ни о пределены . П о заверш ении про ц едуры пам ять, занятая этим и переменны ми, о сво бо ж дается и инфо рмац ия, хранящ аяся в них, стано вится недо ступно й . П о умо лчанию переменны е о пределяю тся как Private. Static – по о бласти видимо сти переменны х анало гичен Private, Зв исклю чением то г о , что значение переменно й со храняется до следую щ ег о вы зо вапро ц едуры . Т аким о бразо м о перат о ры Dim, Private, Static, Public о пределяю то бласть дей ствия переменно й . С по мо щ ью о дно г о о перат о рамо ж но о бъявить неско лько переменны х, разделяя их запяты м и. Я вно е о бъявление переменно й является бо лее предпо чтительны м. П о это мув начале мо дуля вставляется о перато р Option Explicit (явно е о бъявление). Э то то перато р мо ж етбы ть до бавлен авто матически во все мо дули, если во кне про г рамм ы VB вы по лнить ко манду: С ервис / П араметры / вкладка Editor / устано вить флаж о к require Variable Declaration
40
Д ля неявно г о о бъявления испо льзуется спец иальны й симво л, ко то ры й до бавляется по сле имени переменно й при перво м присваивании ей значения. П еречень до пустим ы х сим во ло в, испо льзуем ы х при неявно м о бъявлении переменны х, приведен втабл.6. Т аблиц а6 Спец иальны е симво лы , испо льзуемы е при неявно м о бъявлении переменно й Т ип переменно й Симво л, до бавляем ы й к имени переменно й Integer % Long & Single ! Double # Currency @ String $ Byte Н е испо льзуется Boolean Н е испо льзуется Date Н е испо льзуется Variant Н е испо льзуется Object Н е испо льзуется П ри испо льзо вании переменно й типа String, ко то рая храниттекст овую инфо рмац ию (явно го и неявно го о бъявления), со здается стро ка переменно й длины (длинадо 2 Гбай т). Стро ка переменно й длины меняетсво ю длину в зависимо сти о т о бъема храним ы х в ней данны х. Бо льш инство стро к, с ко то ры мирабо таетVB, являю тся стро ками переменно й длины . Стро ки фиксиро ванно й длины имею тнеизменную длинунезависимо о тприсво енно го ей значения. Е сли тако й переменно й присваивается значение, меньш ее о бъявленно й для нее длины , то о ставш аяся часть переменно й запо лняется про белами. Е сли ж е присваивается значение бо льш ее длины стро ки, то стро каусекается до размерапеременно й . Д ля о бъявления стро ки с фиксиро ванно й длино й испо льзуется следую щ ий синтаксис: Dim им яП ерем енно й As String * дл инаП ерем енно й, где: * - сим во л, ко то ры й указы ваетнапеременную фиксиро ванно й длины ; длинаП еременно й – параметр, указы вает на максимально е ко личество сим во ло в, ко то ро е мо ж етсо держ ать переменная. В VB нео бъявленная переменная всегдабудетиметь тип variant. П ри о бъявлении бо льш о го ко личества переменны х, например типа integer, нео бязательно каж дую переменную о тдельно о бъявлять этим типо м. Visual Basic предо ставляетво змо ж но сть изменять приняты й по умо лчанию тип сразудля всег о диапазо наимен переменны х. Д ля это го испо льзую тся клю чевы е сло ва, перечень ко то ры х приведен втабл. 7.
41
Т аблиц а7 Т ипы переменны х ио пределяю щ ие их клю чевы е сло ва Т ип переменно й Integer Long Single Double Currency String Byte Boolean Date Variant Object
К лю чево е сло во DefInt DefLn DefSng DefDbl DefCur DefStr DefByter DefBool DefData DefVar DafObj
8.1.5. П рисвоение знач ения переменной Д ля хранения инфо рмац ии впеременно й надо присво ить переменно й значение. О дним из спо со бо в присво ения значения переменно й – это испо льзо вание литерало в. Д ля переменны х типа String и Date фактические значения назы ваю тся литералами и вво дятся спец иальны м о бразо м: а) значение переменно й типа String до лж но бы ть заклю чено в дво й ны е кавы чки («»). Е сли это го не делать, то VB во сприметег о как имя переменно й , апри о тсутствии по следней про изо й дето ш ибка. б) значение переменно й типа Date до лж но бы ть по мещ ено меж ду двумя знакам и но мера(#). В про тивно м случае значение будетво спринято как математическо е вы раж ение, что приведетк о ш ибке. Рассмо трим примеры испо льзо вания это г о спо со ба: 1) испо льзо вание о перато раLet и литерало в msgtxt$ = “This is a message” strnum$ = “1000” Dim Thursday as Date Thursday = #20/2/2003# 8.2. К онстанты К о нс т ант о й назы вается элементвы раж ения, значение ко то ро г о не изменяется в про ц ессе вы по лнения про граммы . П о сле то г о , как ко нстанта о пределена по льзо вателем (либо в VB), ее изменение в про г рамме о перато ро м присваивания не до пускается. П о пы тка сделать это приведет к о ш ибке. П риведем неско лько примеро вко нстант:
42
75.07 число вая ко нстанта 2.7Е +6 число вая ко нстанта=2700000 “ О ш ибкадо ступак Б Д ” сим во льная ко нстанта 1/12/2003# ко нстантатипадата False Л о гическая ко нстанта. Н аибо лее часто ко нстанты испо льзую тся для представления трудно запо минаемы х величин, а такж е что бы избеж ать набо ра часто встречаю щ ихся длинны х стро к и вкачестве различны х ко эффиц иенто впересчета. VB со держ итбо льш о е число встро енны х ко нстант: const для о пределения пикто граммы и кно по к, размещ аю щ ихся напанели со о бщ ения, const о пределения ц вета, const для до ступа к данны м, const ко до в клавиш и о пределения фигур. В стро енны е ко нстанты имею тпрефикс Vb. В стро енны е const о пределенно й категории мо ж но най ти с по мо щ ью кно пки Object Browser (П ро смо тр о бъекто в) настандартно й панели инструменто в. О бъявление const анало гично о бъявлению переменны х. К о нстанты мо ж но о бъявлять на уро вне мо дуля или про ц едуры . О б ласть их дей ствия о пределяется теми ж е правилами, что идля переменны х. Д ля о бъявления ко нстантна уро вне про ц едуры испо льзуется о перато рConst, ко то ры й имеетследую щ ий синтаксис: С onst имяК о нс т ант ы [As т ипДанны х] = Вы раж ение П ример: Const StrDBEerrorMessage As String = “о ш ибка до с т упа к б азе данны х” Д ля о бъявления const на уро вне мо дуля мо ж но до по лнительно указать о бласть ее дей ствия, то г дасинтаксис имеетследую щ ий вид: Public/Private] Const им яК о нс т ант ы [As т ипДанны х] = вы раж ение П ример: Public Const StrDBEerrorMessage As String = “О ш ибка до с т упа кбазе данны х” В данно м примере ко нстантаStrDBEerrorMessage о бъявленакак гло бальная const. О перато р Const лучш е всег о записать в начале про ц едуры . Н иж е приведен пример испо льзо вания это г о о перат о ра: Const MetersToFeet = 3.3 Distmeters=7.5 Distfeet = distmeters*MetersToFeet
8.3. М ассивы М ассив представляет со бо й набо р переменны х с о дним именем и различны ми индексами. К аж дая такая переменная назы вается элементо м массива. И ндекс – это число во е значение, испо льзуемо е для ссы лки на о тдельны й элементв массиве. К о личество хранящ ихся в массиве элементо в назы вается размеро м массива. Размер массива о граничен о бъемо м о пера-
43
тивно й пам яти и типо м данны х элементо в массива. Размер массива, в о тличие о тпеременно й , мо ж етменяться впро ц ессе вы по лнения про грамм ы . П ро сто й массив имеето дно измерение. Н апример, массив, со держ ащ ий списо к студенто в в г руппе. П римеро м трехмерно г о массива мо ж ет служ ить сведения о б о бъеме про даж по рег ио ну, за месяц , за г о д. М о ж но иметь в массиве до 60 измерений . О днако в реально й ж изни о чень редко встречается испо льзо вание размерно сти вы ш е5 или 6. Размерно сть массива – это ко личество индексо в, ко то ры е о пределяю тместо по ло ж ение элементавмассиве. 8.3.1.О бъявл ениемассива В VB сущ ествую тмассивы фиксиро ванно го размераи динам ические массивы . М ассив фиксиро ванно г о размера имеетнеизменны й размер, заданны й при его о бъявлении. 8.3.2. О бъявл ение массива ф иксированног оразмера О бъявление массивафиксиро ванно го размеразависито то бласти его видимо сти и о сущ ествляется следую щ им о бразо м : • г ло бальны й массив о бъявляется с по мо щ ью о перато ра Public в секц ииDeclaration или Dim мо дуля; • массив уро вня мо дуля – с по мо щ ью о перато ра Private в секц ии Declaration мо дуля; • ло кальны й массив –с по мо щ ью о перато раPrivate или Dim про ц едуры . Н аибо леечасто для о бъявления массиваиспо льзуется о перато р Dim. О бы чно индексы массива начинаю тся с нуля. Границ ы массива всегдадо лж ны бы ть ц елы ми числами. Синтаксисо перато раDim: Dim имяМ ассива(размерМ ассива) [As типМ ассива] О бъявление массивазависито то бласти ег о видимо сти. 8.3.3. О бъявл ение динамич еског омассива В случае, ко гда размер массива заранее неизвестен, Visual Basic по зво ляетиспо льзо вать динам ические массивы , размер ко то ры х мо ж но изменять в про ц ессе вы по лнения про г раммы . П рименение динамических массиво в по зво ляетэффективно управлять памятью , вы деляя память по д бо льш о й массив лиш ь нато время, ко г даэто тмассивиспо льзуется, азатем о сво бо ж дая ее. Со здание динамическо г о массива о сущ ествляется следую щ им о бразо м : 1. О бъявляется массив с по мо щ ью клю чевы х сло в, испо льзуем ы х при со здании массива фиксиро ванно го размера. Списо к размерно стей массива о стается пусты м . П ри о бъявлении гло бально г о массива нео бхо димо вы брать клю чево е сло во Public, при о бъявлении массива на уро вне мо дуля – Dim, при о бъявлении массива впро ц едуре - Dim или Static. Н апример,
44
Dim intCountPar () As Integer. 2. С по мо щ ью вы по лняемо го о перато раRedim указы вается размерно сть массива и ег о размер в виде числа или вы раж ения. Синтаксис это го о перато ра анало г ичен синтаксису о перато ра о бъявления массива фиксиро ванно го размера. Н апример, ReDim intCountPar (1 To 20). П ри вы по лнении о перато ра ReDim данны е, размещ енны е в массиве ранее, теряю тся. Э то удо бно в то м случае, если данны е вам бо льш е не нуж ны , и вы хо тите перео пределить размер массиваи по дгото вить его для размещ ения но вы х данны х, как бы про извести о чисткумассива. Е сли нуж но изменить размер массива, не по теряв при это м данны х, то нео бхо димо во спо льзо ваться о перато ро м ReDim с клю чевы м сло во м Preserve. Н апример, приведенны й ниж е про г раммны й ко д увеличиваетразмер массива на единиц убез по тери хранящ ихся вмассиве данны х: ReDim Preserve intCountPar (X+1).
8.4. О ф ормл ение прог раммны х кодов П ри написании про г раммны х ко до впро г раммистунео бхо димо по забо титься о то м, что бы про г рамма бы ла читабельно й , то есть, снабж ена до стато чны м ко личество м ко мментариев, ао перато ры бо льш о й длины бы ли размещ ены на неско льких стро ках. Рассмо трим прием ы о фо рмления про г раммны х ко до в: • Д ля вклю чения в текстпро г раммы ко мментария нео бхо димо ввести сим во л (‘), ко то ры й мо ж етбы ть первы м сим во ло м в стро ке или нахо диться в лю бо м ее месте. Э то тсимво л о значаетначало ко мментария, все сим во лы , нахо дящ иеся за ним, Visual Basic не будеттранслиро вать. • В то м случае, ко г да о перато р имеетбо льш ую длину, ег о мо ж но разбить на неско лько стро к, испо льзуя сим во лы про до лж ения стро ки: про бел, зако то ры м следуетсимво л по дчеркивания (_). • К ак правило , при написании про г рамм о перато ры размещ аю тна о тдельно й стро ке. Е сли о перато ры имею тнебо льш ую длинуи являю тся о дно типны м и, Visual Basic по зво ляетих по местить на о дно й стро ке, разделивсим во ло м (:).
8.5. П рог раммны е моду л и П ро г раммы VB хранятся впро г раммны х мо дулях трех видо в: § мо дуль фо рмы ; § стандартны й мо дуль; § мо дуль класса. П ро сто е прило ж ение, со сто ящ ее из о дно й фо рмы , со держ ит, как правило , то лько мо дуль фо рмы . Е сли в про ц ессе со здания прило ж ения в
45
неско льких мо дулях фо рмы со держ атся по вто ряю щ иеся функц ии, то их мо ж но вы делить в о тдельны й про г раммны й ко д, ко то ры й будетявляться о бщ им для этих мо дулей . Т ако й про г раммны й ко д назы вается стандартны м мо дулем . П о ско льку VB является язы ко м о бъектно -о риентиро ванно г о про граммиро вания, то о сно вны м по нятием О О П являю тся о бъект и класс. Следо вательно , мо ж но гово рить о разрабо тке мо дулей классо в для со здания классо в с испо льзо ванием ко манды Add Class Module (Д о бавить мо дуль класса) или Add User Control (Д о бавить по льзо вательский элемент управления) меню Project. М о дул и фо рм ы мо г утсо держ ать о бъявления переменны х, ко нстант, типо в данны х, внеш них про ц едур, испо льзуем ы х на уро вне мо дуля, про ц едур о брабо ткисо бы тий . О ни хранятся вфай лах срасш ирением .frm. С т андарт ны е м о дул и мо г ут со держ ать о бъявления гло бальны х и ло кальны х переменны х, ко нстант, типо в, внеш них про ц едур и про ц едур о бщ ег о характера до ступны х для друг их мо дулей данно г о прило ж ения. О ни хранятся вфай лах с расш ирением .bas. М о дул и кл ас с о в. Рассматривая VB с по зиц ий о бъектно о риентиро ванно го и визуально го про г раммиро вания, мо ж но гово рить о со здании но вы х о бъекто в с разрабо танны ми для них сво й ствами и мето дами, по мещ ая их вмо дули классо ввфай лах с расш ирением cls.
8.6. Редактирование исходны х кодов Д ля со здания про граммны х ко до в испо льзуется редакто р ко да. Д ля ег о запуска в о кне Project Explorer следуетвы делить фо рмуили мо дуль, для ко то ро го со здается про г раммны й ко д, и вы по лнить о дно из следую щ их дей ствий : − В ы по лнить ко мандуView / Code − И з ко нтекстно г о меню вы по лнить ко мандуView Code. О ткро ется о кно редактиро вания, вко то ро е вво дится текстпро г раммы . Д ля каж до го мо дуля со здается о тдельно е о кно ко да, разделенно е внутри на секц ии. В ы бо р секц ии о сущ ествляется с по мо щ ью списка Object, распо ло ж енно г о слева в верхней части о кна. Д ля стандартно г о мо дуля это тсписо к со держ ито бщ ую секц ию General. В мо дуле классавэто тсписо к вклю чены о бщ ая секц ия и секц ия классо в. В мо дуле фо рмы списо к Object со держ ит о бщ ую секц ию , секц ию для фо рмы (Form), а такж е секц ии для всех размещ ённы х нафо рме о бъекто в. Д ля каж до й вы бранно й секц ии мо ж но со здать про ц едуру, вы бравее из списка Procedure вправо м верхнем уг луо кна редакто ра ко да, со держ ащ его со бы тия. Д ля элемента списка General из списка Object есть то лько о дно значение Declarations (О бъявления) всписке Procedure.
46
8.7. П роцеду ры П ро ц едуры по зво ляю тразбивать про г раммны е мо дули нанебо льш ие ло г ические бло ки. В Visual Basic сущ ествую тследую щ ие виды про ц едур: § Sub § Function 8.7.1. П роцеду ры Sub П ро ц едураSub не во звращ аетзначения и наибо лее часто испо льзуется для о брабо тки связанно г о с ней со бы тия. Е е мо ж но по мещ ать в стандартны е мо дули, мо дули классо в и фо рм. О на имеетследую щ ий синтаксис: [Private] [Public] [Static] Sub им яП ро цедуры (аргум ент ы ) о перат о ры End Sub М еж дуклю чевы ми сло вами Sub и End Sub впро ц едуре распо лаг аю тся вы по лняем ы е при ее вы зо ве о перато ры про г раммно г о ко да. П араметры аргум ент ы мо ж но применять для о бъявления передаваем ы х в про ц едуру переменны х. П ро ц едуры Sub по дразделяю тся на о бщ ие про ц едуры и про ц едуры со бы тий . О бщ ие про ц едуры служ атдля размещ ения по вто ряю щ ихся о ператоро в, испо льзуемы х про ц едурам и по о брабо тке со бы тий , тем самы м, разг руж ая их и исклю чая дублиро вание часто встречаю щ ихся ко до в, что в сво ю о чередь о блегчаетпо ддерж куприло ж ения. П ро ц едуры о брабо тки со бы тий связаны с о бъектами, размещ енны ми в фо рмах Visual Basic, или с само й фо рмо й и вы по лняю тся при наступлении со бы тия, с ко то ры ми о ни связаны . Д ля со бы тия, связанно го с фо рмо й , про ц едураSub имеетследую щ ий синтаксис: Private Sub Form_им яС о бы т ия (аргум ент ы ) Операт о ры End Sub Д ля со бы тия, связанно г о с элементо м управления фо рмы , про ц едура о брабо ткисо бы тий Sub имеетследую щ ий синтаксис: Private Sub им яЭ л ем ент аУправл ения_им яС о бы т ия (аргум ент ы ) о перат о ры End Sub Visual Basic о блег чаетфо рмиро вание имен со здаваем ы х про ц едур. Д ля это г о нео бхо димо вы по лнить следую щ ие дей ствия: 1. В о кне Properties с по мо щ ью сво й ства Name (И мя) задать им я о бъекта, для ко то ро г о со здается про ц едура. 2. В о кне редакто рако да из спискаObject (О бъект) вы брать о бъект, для ко то ро г о со здается про ц едура. 3. И з списка Procedure (П ро ц едура) вы брать со бы тие, о брабо тка ко то ро г о будетвы по лняться.
47
4. М еж дуо перато рами Sub и End Sub разместить вы по лняемы й при наступленииэто г о со бы тия про грамм ны й ко д. 8.7.2. П роцеду ры Function П ро ц едуры Function в о тличие о тпро ц едур Sub мо гутво звращ ать значение в вы зы ваю щ ую про ц едуру. Синтаксис про ц едуры Function вы глядитследую щ им о бразо м: [Private] [Public] [Static] Function им яП ро цедуры (аргум ент ы ) [As type] о перат о ры End Function П ро ц едуры Function, как и переменны е, имею ттип, задаваемы й с по мо щ ью клю чево г о сло ва As. Е сли тип про ц едуры не задан, по умо лчанию ей присваивается тип Variant. Т ип про ц едуры о пределяетвсво ю о чередь тип во звращ аемо г о ею значения. В о звращ аемо е про ц едуро й значение присваивается имени про ц едуры им яП ро цедуры и мо ж етбы ть испо льзо вано в вы раж ениях про г рамм но го ко да анало г ично стандартны м функц иям Visual Basic. 8.7.3. Вы зов процеду р П ро ц едура Sub не во звращ аетзначения, о днако о на мо ж етизменять значения переменны х, заданны х для нее в качестве параметро в. В ы зо в про ц едуры мо ж но о сущ ествлять двумя спо со бами: • Call NameProc (аргум ент 1,аргум ент 2,. . . аргум ент N) • NameProc аргум ент 1, аргум ент 2 . . . аргум ент N П ри вы зо ве про ц едуры мо дуля фо рмы из друг ог о мо дуля нео бхо димо указы вать ссы лкуна имя мо дуля фо рмы , со держ ащ ег о про ц едуру. Н апример, для вы зо ва про ц едуры с именем NameProc, нахо дящ ег о ся в мо дулефо рмы Form1, о перато р до лж ен вы г лядеть так: Call Form1.NameProc (аргумент 1, аргум ент 2, . . . аргум ент N) В ы зо в про ц едуры Function анало г ичен вы зо вувстро енны х функц ий Visual Basic. К ро ме это г о , про ц едуруFunction мо ж но вы зы вать так ж е, как про ц едуруSub.
9. У правл яю щ иестру кту ры В VBA предусмо трено неско лько спо со бо в изменения по рядка вы по лнения про г рамм. У правляю щ ие структуры VBA функц ио нально эквивалентны по до бны м структурам в язы ке про граммиро вания Бей сик, за исклю чением For-Each-Next. Н иж е перечислены о сно вны е управляю щ ие структуры VBA. If-Then-Else
В ы по лняетг руппуо перато ро в, если со блю дено неко то ро еусло вие
48
For-Next
В ы по лняетгруппуо перато ро в заданно е число раз
While-Wend
В ы по лняет г руппу о перато ро в, по ка со блю дается неко то ро е усло вие В ы по лняет г руппу о перато ро в, по ка со блю дается или несо блю дается неко то ро еусло вие В зависимо сти о тзначения неко то ро й переменно й или результата про верки усло вия вы по лняето дну из неско льких во змо ж ны х г рупп о перато ро в В ы по лняетдей ствие над каж ды м о бъекто м семей стваили элементо м массива
Do-Loop Select Case
For-Each-Next
9.1. С тру кту ра принятия решения If-Then-Else У сло вны й о перато р If-Then-Else изменяетпо рядо к вы по лнения про граммы взависимо стио трезультато впро верки неко то ро г о усло вия. Sub Proc30_IfThenElse ( ) Dim Num1 As Integer Num1 = GetRandomNumber If Num1 = 7 Then MsgBox “Congratulations! You recelved the winning” &_ Num1 & “.” Else MsgBox “I′m sorry, you lose. Your number was” &_ Num1 &”.” End If End Sub Function GetRandomNumber ( ) GetRandomNumber = Int (10*Rnd( )) End Function В Proc30 вы зо вфункц ии GetRandomNumber присваиваетпеременно й Num1 случай но е значение о т0 до 9. Затем в о перато ре If про исхо дитпро верка усло вия: Num1=7. Е сли результатпро верки равен True (Num1 равно 7), наэкран вы во дится инфо рмац ио нно е о кно с со о бщ ением о вы игры ш е. Е сли результатпро верки равен False (Num1 не равно 7), наэкран вы во дится друг о е о кно –с со о бщ ением о про иг ры ш е. Рассмо трим о тдельны еэлементы о перато раIf-Then-Else. If К лю чево е сло во , о тмечаю щ ее начало о перато ра If-ThenElse. Num1 = 7 У сло вие для про верки. П ерво е усло вие всег да указано по сле клю чево г о сло ваIf. Результато м про верки является о дно из двух значений - True или False, ко то ро е и о пре-
49
деляетпо рядо к вы по лнения ко манд в о перато ре If-ThenElse. Е сли усло вие со блю дено (True), управление передается о перато ру, написанно м усразуза клю чевы м сло во м If, следуетдо о перато ра перед клю чевы м сло во м Else, а затем перехо дитк о перато рупо слеклю чевы х сло вEnd If. Е сли усло вие не вы по лнено (False), управление передается о перато ру по сле клю чево г о сло ва Else и следуетдо клю чевы х сло вEnd If. Then К лю чево е сло во , о тмечаю щ ее ко нец усло вия. MsgBox О перато р, вы по лняем ы й при по ло ж ительно м “ Congratulations! результате You received the winning” & Num1 &”.” Else К лю чево е сло во , о тмечаю щ ее ко нец бло ка о перато ро в, вы по лняемы х при по ло ж ительно м результате про верки, и начало бло ка о перато ро в, вы по лняем ы х при о триц ательно м результате про верки MsgBox “ I′m sorry, Ф ункц ия, вы по лняемая при о триц ательно м You lose. результате про верки You number was” & Num1 & “ .” End If К лю чевы е сло ва, о тмечаю щ ие ко нец структуры If-ThenElse В структуре If-Then-Else клю чево е сло во Else и следую щ ий за ним бло к о перато ро в не являю тся о бязательны м и. Е сли эти элементы о тсутствую т, при о триц ательно м результате про верки управление передается о ператору, сто ящ ем упо сле клю чевы х сло вEnd If.
9.2. Д опол нител ьное у сл овие ElseIf Средствами структуры принятия реш ения If-Then-Else мо ж но о рг анизо вать вы по лнение о перато ро в в зависимо сти о тсо блю дения о пределенно г о усло вия. Рассмо трим друг о й вариантее испо льзо вания, наэто траз с клю чевы м сло во м ElseIf. П ро г рамма Proc31 о то браж аетзапро с на вво д паро ля. Е сли паро ль введен правильно , про г рамма предо ставляетпо льзо вателю о пределенны е во змо ж но сти рабо ты с рабо чей книг о й и со о бщ ает емуо б это м. Sub Proc31_IfThenElseIf ( ) Dim Password As String Password = GetPassword If Password = “level1” Then For Each Sheet In ActiveWorkbook.Sheets Sheet.Visible = True
50
Sheet. Unprotect Next MsgBox “You have read/write access te all sheets.” ElseIf Password = “level2” Then ActiveWorkbook.Worksneets (1).Visible = True ActiveWorkbook.Worksneets (1).Unprotect MsgBox “You have read/write access to one worksneet.” ElseIf Password = “level3” Then ActiveWorkbook.Worksneets (1).Visible = True MsgBox “You have read-only access to one worksneet.” Else MsgBox “Passwore incorrect. Please try again” End If End Sub Function GetPassword ( ) GetPassword = Lcase (InputBox(“Enter Password:”,” Password”)) End Function В Proc31 клю чево е сло во ElseIf с по следую щ им усло вием испо льзуется дваж ды . Н о во е усло вие вно ситв по рядо к вы по лнения ко манд до по лнительны е изменения, если про верка перво г о усло вия зако нчилась неудачей . В Proc31 перво е усло вие указано сразуза клю чевы м сло во м If. В нем про веряется равенство переменно й Password стро ке ”levell”. Е сли переменная не равнастро ке, VBA перехо дитк перво муклю чево мусло вуElseIf, где про веряетследую щ ее усло вие – равенство переменно й Password стро ке “level2”. Н ачиная с это г о мо мента, про граммаиспо льзуетто лько но во е усло вие, “ забы вая” о старо м. Е сли равенства о пять нет, управление перехо дитк следую щ емуклю чево мусло вуElseIf и т. д. В стро ке 3 про ц едуры Proc31 вы зы вается функц ия GetPassword, в ко то ро й испо льзо ваны но вы е элементы . Рассмо трим бо лее по дро бно эти элементы . Function GetPassword ( ) GetPassword = Lcase (InputBox(“Enter Password:”,” Password”)) End Function Здесь во вто ро й стро ке заданы о бращ ения к двум встро енны м функц иям VBA-Lcase и InputBox. П ервая прео бразуетвсе буквы переданно й в нее стро ки встро чны е. В то рая вы во дитна экран диало г о во е о кно с запро со м на вво д данны х по льзо вателем. У это й функц ии есть неско лько нео бязательны х арг ументо в, из ко то ры х нас интересую т то лько первы е два. О дин из них – стро ка, о то браж аемая в о кне над по лем для вво да. В то ро й со держ итст ро кузаг о ло вка диало г о во го о кна. П ри вы зо ве функц ии InputBox на экране по является диало г о во е о кно с заданны ми заг о ло вко м и тек-
51
сто м - приг лаш ением , кро ме то г о о но со держ итпусто е по ле, в ко то ро м по льзо ватель мо ж етввести данны е. Значение, во звращ аемо е InputBox, зависито тто г о , какую кно пкущ елкнетпо льзо ватель. Е сли это – О К , во звращ ается введенная стро ка, если – О тмена (Cancel), то пустая. В наш ем примере буквы это й стро ки передаю тся в функц ию Lcase, ко то рая прео бразуетих в стро чны е. В бло ке, начинаю щ емся сразуза клю чевы м сло во м If, по мещ ен ц икл For-Each-Next (о н по дро бно о писан ниж е в разделе "У правляю щ ая структура For-Each-Next”). В это м ц икле перебираю тся все листы активно й рабо чей книг и, с каж ды м из ко то ры х вы по лняю тся два дей ствия – сво й ствуVisible присваивается значение True и вы зы вается мето д Unprotect. П ерво е дей ствие по зво ляетпо льзо вателю видеть лист, вто ро е – снимаетс листазащ итупаро лем . У мето да Unprotect есть о дин арг умент–стро кас паро лем . Н о вданно м случае паро ль для защ иты листо вм ы не испо льзо вали, по это муUnprotect вы зван без аргументо в. В друг их бло ках про г рамм ы сво й ство Visible и мето д Unprotect вы зы ваю тся вы бо ро чно , взависимо стио твведенно го паро ля.
9.3. У правл яю щ ая стру кту ра For-Next О напо зво ляетвы по лнять неско лько ко манд заданно е число раз. Рассмо трим пример 32; внем число , присво енно е переменно й Base, во зво дится встепень, со держ ащ ую ся впеременно й Power. Sub Proc32_ForNext ( ) Dim Base As Integer
Dim Power As Integer Dim Result As Integer Dim Count1 As Integer Base = 4 Power = 5 Result = 1 For Count1 = 1 To Power Step 1 Result = Result*Base Next MsgBox Base & “raised to the” & Power & “the power = “& Result End Sub В это й про грамме с по мо щ ью ц икла For-Next четы ре во зво дится в пятую степень. Н адо о тметить, что в VB есть о перато р во зведения в степень - ^, по это мудля по до бно г о расчетадо статочно написать Num = 4 ^ 5 Рассмо трим элементы о перато ра For – Next, испо льзуемы е в примере32. For К лю чево е сло во , о тмечаю щ ее начало о перато ра For-Next Countl = 1 To Power В ы раж ение, о пределяю щ ее счетчик и ег о начально е и ко нечно е значения, задаю щ ие число по вто ре-
52
ний ц икла. В данно м случае в качестве счетчика испо льзуется переменная Countl. К лю чево е сло во Т о разделяет начально е (1) и ко нечно е (Power) значения счетчика. П ри перво м о бращ ении к ц иклу переменно й Countl присваивается значение 1, и начинается вы по лнение ц икла Step 1 К лю чево е сло во , задаю щ ее ш агприращ ения счетчика при заверш ении о чередно г о ц икла. Ч ащ е всег о в ц иклах For-Next о н равен 1, но мо ж етбы ть лю бы м ц елы м число м, в то м числе и о триц ательны м (то г да значение счетчика в каж до м ц икле уменьш ается). В начале о чередно го ц иклазначение счетчика сравнивается с ег о ко нечны м значением . Е сли разниц а по ло ж ительная (значение счетчика прево схо дитег о ко нечно е значение), управление передается о перато ру, заданно мупо сле клю чево го сло ва Next. Т о ж е само е про исхо дити при о триц ательно й разниц е. У казание клю чево го сло ва Step и величины ш аг а не является о бязательны м. Е сли о ни не о пределены , VBA вы по лняетц икл с ш агом 1 Result = Result*Base Т ело ц икла. М о ж етсо сто ять из неско льких о перато ро в Next К лю чево е сло во , о тмечаю щ ее ко нец структуры For-Next. П ри до стиж ении клю чево г о сло ва Next значение счетчика увеличивается на величинуш аг а, по сле чег о управление передается на начало ц икла. Затем про исхо дитсравнение счетчика с ко нечны м значением, и ц икл при нео бхо димо сти по вто ряется сно ва В про г рамме Proc33 – ещ е о дин пример применения ц иклаFox-Next. Ф ункц ия InputBox про г рамм ы вы даетна экран запро с на вво д числа, а затем, испо льзуя ц икл For-Next и два усло вны х о перато ра If-Then-Else, вы числяетего факто риал (факто риал числаn равен про изведению всех ц елы х чисел о т1 до n; факто риал 0, по о пределению , равен 1; n до лж но бы ть бо льш е либо равно 0). Sub Proc33_ForNextIfThenElse ( ) Dim NumberString As String Dim Num As Integer Dim Factorial As Double Dim Count1 As Integer NumberString = InputBox (“Enter Number:”.”Calculate Factorial”) If IsNumeric (NumberString) Then Num = Val (NumberString) If Num >= 0 Then
53
Factorial = 1 For Count1 = 1 To Num Factorial = Factorial*Count1 Next MsgBox “ The factorial of” & Num &”is” & Factorial Else MsgBox “Factorial cannot be calculated on negative” _ & “numbers.” End If Else
MsgBox “ The factorial cold not be calculated. Please “_ & “try again.” End If End Sub В это й про г рамме вперво м усло вии испо льзуется встро енная функц ия VBA IsNumeric, ко т о рая во звращ аетTrue, если ее единственны й арг ументявляется число м , и False – в про тивно м случае. Т аким о бразо м, если по льзо ватель ввел число , про верка о канчивается успеш но , и управление передается следую щ ей инструкц ии. В ней задано о бращ ение к ещ е о дно й функц ии Visual Basic – Val. О на прео бразуетпереданную ей стро кув число , ко то ро е затем присваивается переменно й Num. И спо льзо вание это й функц ии здесь нео бхо димо , так как InputBox во звращ аетто лько стро ко вы е значения, адля расчетафакто риаланам нео бхо димо число . Д алее указана следую щ ая усло вная структура If-Then-Else, г де про веряется, является ли переменная Num нео триц ательно й . Е сли и это усло вие вы по лнено , в ц икле For-Next вы числяется факто риал, и ег о значение присваивается переменно й Factorial (о братите внимание, что факто риал 0 дей ствительно равен 1). Е сли вто ро е усло вие не со блю дено , на экране по является со о бщ ение, что факто риал о триц ательно г о числа по считать нельзя. Е сли ж е по льзо ватель ввелнечисло во е значение, неудачей заканчивается про верка перво г о усло вия, и на экран вы во дится про сьбапо вто рить по пы тку. Е сли все усло вия вы по лнены и факто риал вы числен, результато то браж ается вследую щ ем о кне: Microsoft Excel The factorial of 5 is 120
OK
54
9.4. У правл яю щ ая стру кту ра While-Wend Д ей ствие ее по до бно дей ствию For-Next, но группа о перато ро в вы по лняется не заданно е число раз, адо со блю дения о пределенно го усло вия. В про г рамме Proc34 инструкц ия While-Wend испо льзо вана для вы деления о пределенно г о значения из по следо вательно сти случай ны х чисел. Sub Proc34_WhileWend ( ) Dim LotteryEntry As Integer LotteryEntry = 0 While LotteryEntry <> 7 LotteryEntry = Int (10*Rnd ( )) Beep Wend MsgBox “Your number is “& LotteryEntry &”. You Win!!” End Sub П ро г рамма Proc34 г арантирует, чт о в инфо рмац ио нно м о кне всег да о то браж ается заданно е число . Ц икл While-Wend вы по лняется, по ка значение переменно й LotteryEntry не станетравны м 7 (в усло вии испо льзо ван о перато р неравенства <>). П ри каж до м вы по лнении ц икла это й переменно й присваивается случай но е значение о т1 до 9, азатем с по мо щ ью функц ии Visual Basic Beep по дается звуко во й сигнал через внутренний динам ик ко мпью тера. П ри запуске это й про г раммы неско лько раз, мо ж но услы ш ать разно е ко личество сигнало в, в зависимо сти о тто г о , накако м ш аг ег енерато рслучай ны х чиселвернетчисло 7. Рассмо трим структуруц иклаWhile-Wend по дро бнее. While К лю чево е сло во , начало структуры WhileWend. LotteryEntry <> 7 У сло вие, о пределяю щ ее, будетили нетвы по лнен ц икл. Е сли о но со блю дено , ц икл вы по лняется, если нет– управление передается о перато ру, сто ящ ему за клю чевы м сло во м Wend. LotteryEntry=Int(10*Rnd( )) П ервы й о перато ртела. Beep В то ро й о ператор тела. Wend К лю чево е сло во , о тмечаю щ ее ко нец структуры While-Wend.
9.5. У правл яю щ ая стру кту ра Do-Loop О на по хо ж а на структуру While-Wend, о днако до по лнительно о бладаетдвумя важ ны ми о со бенно стями. В о -первы х, усло вие заверш ения ц иклаDo-Loop мо ж но задавать не то лько вего начале, но и вко нц е. У сло вие в
55
ко нц е ц икла гарантирует, что о н будетвы по лнен хо тя бы о дин раз. В о вто ры х, усло вие мо ж но сделать критерием как вы по лнения ц икла DoLoop, так и ег о заверш ения. П о следняя во змо ж но сть в ц икле While-Wend такж е до ступна – что бы ц икл вы по лнялся, по ка не со блю дено неко то ро е усло вие, ег о надо указать вструктуре While с ло гическим о перато ро м Not. Рассмо трим неско лько про сты х примеро в. В про г рамме Proc34 инструкц ия While-Wend применялась для о пределения мо мента, ко г да в по следо вательно сти случай ны х чисел по являлась семерка. В Proc35 та ж е о перац ия о сущ ествляется ц икло м Do-Loop. Sub Proc35_DoWileLoop ( ) Dim LotteryEntry As Integer LotteryEntry = 0 Do While LotteryEntry <> 7 LotteryEntry = Int (10*Rnd ( )) Beep Loop MsgBox “Your number is “& LotteryEntry &”. You Win!!” End Sub Э та про г рамма мало о тличается о т примера 34: во -первы х, перед клю чевы м сло во м While по явило сь сло во Do, во -вто ры х, в ко нц е ц икла вместо Wend сто итLoop. О днако ц икл Do-Loop по зво ляетпереписать эту про ц едуруещ е неско лькими спо со бами. В примере 36 сло во While заменено сло во м Until, авместо о ператоранеравенствавсравнении LotteryEntry и 7 задан о перато рравенства. Sub Proc_DoUntilLoop ( ) Dim LotteryEntry As Integer LotteryEntry = 0 Do Until LotteryEntry = 7 LotteryEntry = Int (10*Rnd ( )) Beep Loop MsgBox “Your number is “& LotteryEntry &”. You Win!!” End Sub Ц икл Do - Loop по зво ляетвнести вэтупро ц едуруещ е неско лько изменений . Н апример, в про г рамме Proc37 клю чево е сло во Do о ставлено в начале ц икла, аусло вие заверш ения и клю чево е сло во Until переместило сь в его ко нец , за клю чево е сло во Loop. В тако м варианте ц икл о бязательно вы по лняется хо тя бы о дин раз, по ско лькуусло вие заверш ения не про веряется, по ка не будут вы по лнены все о перато ры из тела ц икла. П о это му мо ж но убрать о перато рдля иниц иализац иипеременно й Lottery Entry. Sub Proc37__DoLoopUntil () Dim LotteryEntry As Integer Do
56
LotteryEntry = Int (10*Rnd ( )) Beep Loop Until LotteryEntry = 7 MsgBox “Your number is “ & LotteryEntry & “. You win!!” End Sub
9.6. У правл яю щ ая стру кту ра Select Case Структура Select Case по зво ляетв зависимо сти о тзначения переменно й или вы раж ения вы по лнить о дин из неско льких фраг менто в про граммы . Е е дей ствие по до бно дей ствию структуры If-Then-Else, в ко т о ро й усло вие перео пределяется клю чевы м сло во м Elself. В примере 31 испо льзо вана структура If-Then-Else для о пределения прав по льзо вателя со г ласно введенно муим паро лю . В следую щ ей про грамме те ж е дей ствия вы по лняю тся средствам иструктуры Select Case. Sub Proc38_ SelectCase ( ) Dim Password As String Dim Sheet As Object Password = Lcase (InputBox (“Enter Password:” , “Password”)) Select Case Password Case “ level1” For Each Sheet In ActiveWorkbook.Sheets Sheet.Visible = True Sheet.Unprotect Next MsgBox “You have read/write access to all sheets.” Case “level2” ActiveWokbook. Worksheets (1).Visible = True ActiveWokbook. Worksheets (1).Unprotect MsgBox “You have read/write access to one worksheet.” Case “level3” ActiveWokbook.Worksheets (1).Visible = True MsgBox “You have read-only access to one worksheet.” Case Else MsgBox “Password incorrect. Please try again.” End Select End Sub Рассмо трим ко м по ненты о перато ра, испо льзуем ы е впримере38. Select Case К лю чевы е сло ва, о тмечаю щ ие начало структуры . Password П еременная или вы раж ение, чье значение о пределяетвы бо р фраг мента ко да для вы по лнения. О но до лж но со впадать со значением , указанны м по сле о дно го из клю чевы х сло в Case. Е сли ни о дно г о со впадения нет, вы по лняется фраг мент, написанны й по сле сло в Case Else. Е сли и этих сло в
57
нет, управление передается о перато ру, заданно му по сле End Select. Case“ level1” П ервы й вариант значения. Е сли значение о пределяю щ его вы раж ения со впадает с ним , вы по лняется фраг мент про г раммы до следую щ ег о клю чево г о сло ва Case, а затем управление передается о перато рам, сто ящ им по сле End Select. Е сли со впадения нет, управление передается следую щ ем уCase. Case “level2” В то ро й вариант значения. Д ей ствует так ж е, как Case “level1”. Case “level3” Т ретий вариант значения. Д ей ствует так ж е, как Case “level1”. Case Else Ф раг ментпро г раммы , указанны й заэтим и сло вами, вы по лняется, если значение о пределяю щ ег о вы раж ения не со впало нис о дним из преды дущ их варианто вCase. End Select К лю чевы е сло ва, о тмечаю щ ие ко нец структуры Select Case.
9.7. У правл яю щ ая стру кту ра For-Each-Next Э то самы й мо щ ны й ц икл Visual Basic - For-Each-Next. А нало г ичны е структуры в друг их язы ках про г рамм иро вания встречаю тся о чень редко . Структура For-Еach-Next предназначена для вы по лнения о дно й и то й ж е группы дей ствий над каж ды м о бъекто м семей ства или структуры массива. Н иж е приведен примерэто й структуры : Sub Proc39_ForEachNext ( ) Dim CountryArray (5) As String Dim Country As Variant CountryArray (1) = “India” CountryArray (2) = “Peru” CountryArray (3) = “Greeke” CountryArray (4) = “Canada” CountryArray (5) = “Kenya” For Each Country In CountryArray MsgBox Country Next End Sub В Proc39 элементы массива CountryArray запо лняю тся названием стран, ко то ры е затем по о череди вы во дятся наэкран вструктуреFor-EachNext ввидеследую щ ег о со о бщ ения: Microsoft Excel
India
58
Рассмо трим ко мпо ненты о перато ра For-Each-Next, испо льзуем ы е в примере 39. For Each К лю чевы есло ва, о тмечаю щ ие начало структуры For-EachNext. С ountry П еременная, ко то ро й присваиваю тся значения элементо в г руппы – массиваили семей ствао бъекта. В перво м случае переменная до лж на о тно ситься к типуVariant, Object или приписать ей ко нкретны й о бъектны й тип, со о тветствую щ ий о бъектам семей ства. In К лю чево есло во , о тделяю щ ее переменную о тг руппы . CountryArray - г руппа, то есть массив или семей ство о бъекто в. К о личество по вто рений ц икла со впадаетс число м элементо в в г руппе. П еременно й ц икла при перво м вы по лнении присваивается значение перво го элемента г руппы , затем –всех по следую щ их элементо в. MsgBox Country Д ей ствие, ко то ро е вы по лняется над элементо м группы . Next К лю чево е сло во , о тмечаю щ ее ко нец структуры . Д о стигнув его, про г рамма во звращ ается к началуц икла – структуры For Each. Е сли значение переменно й ц икла со впадает с по следним элементо м группы , вы по лнится по следо вательно сть о перато ро в, написанная сразупо сле Next.
9.8. О ператор Exit В неко то ры х случаях нео бхо димо прервать вы по лнение ц икладо его заверш ения. Э то мо ж но сделать с по мо щ ью ко манды безусло вно г о перехо даExit. К о манда Exit заверш аетвы по лнение ц икла и передаетуправление следую щ ей за ц икло м ко нструкц ии. Синтаксис это г о о перат о ра внутри ц икла For вы г лядиттак: Exit For. В нутри ц икла Do синтаксис о перато ра Exit Do. For с чет чик=начЗ начение To ко нЗ начение [Step ш аг] [ко нс т рукции] [Exit For] [ко нс т рукции] Next [с чет чик[, с чет чик] [… ]] Do [{While / Until} ус л о вие] ко нс т рукции [Exit Do] ко нс т рукции Loop Н апример:
59
For nCounter=100 To 1 Step – 10 nDecades(nCounter) = nCounter * 2 If nDecades(nCounter) > 20 Then Exit For Next О перато р Exit служ иттакж е для вы хо да из про ц едур Sub и Function. Синтаксис о перато ро в в это м случае со о тветственно Exit Sub и Exit Function. Э ти о перато ры мо г утнахо диться в лю бо м месте тела про ц едуры . О ни испо льзую тся в то м случае, ко г да про ц едура вы по лнила нуж ны е дей ствия и из нее нео бхо димо вы й ти.
10. Разработка прог рамм сиспол ьзованием ф орм пол ьзовател я Рассмо трим неско лько про грамм ∗ по о брабо тке о дно мерны х и двумерны х массиво в с испо льзо ванием фо рм для вво да исхо дны х и вы во да прео бразо ванны х массиво в. З адача 1. Д ан двумерны й массив число вы х значений A(N,M). Сфо рмиро вать о дно мерны й массив, элементами ко то ро г о являю тся сум мы элементо в каж до й стро ки исхо дно г о массива. Сфо рмиро ванны й массив вы вести на экран в стро ку. Д ля вво даэлементо висхо дно г о массива и вы во да сфо рмиро ванно г о массиваиспо льзо вать фо рм у, приведенную нарис.1. Н иж е приведена про г рамма на язы ке Visual Basic для реш ения это й задачи. Option Explicit ' В вести элементы двумерно го массива, по считать сумм уэлементо вкаж до й стро ки, со ставить о дно мерны й массивиз этих сум м и вы вести его на экран. Option Base 1 Dim a() As Integer Dim SUM() As Integer Dim M, N, i, j As Integer Dim sTemplate As String Dim zzz As Variant 'П ро счет Private Sub Command2_Click() ReDim SUM(M * 2) ' Результирую щ ий массив For i = 1 To M SUM(i) = 0 For j = 1 To N ∗
П ро г раммы написаны студентами Кретинины м К ., К о ло менским А .
60
SUM(i) = SUM(i) + a(i, j) Next j, i ' В ы во д массиванаэкран For i = 1 To M List1.AddItem SUM(i) Next i End Sub Private Sub Command3_Click() End End Sub ' Задание массива Private Sub Command4_Click() If Text1.Text = "" Or Text2.Text = "" Then GoTo 10 If CInt(Text1.Text) <> CInt(Text2.Text) Then zzz = MsgBox("М ассивдо лж ен бы ть квадратны м", vbOKOnly, "О ш ибка") ReDim a(M, N) 10 End Sub ' Д о бавляем элементы Private Sub Command5_Click() For i = 1 To M For j = 1 To N a(i, j) = InputBox("введите элемент" & i & " стро ки " & j & " сто лбц а", "В во д элемента", "0") Next j Next i End Sub Private Sub Command6_Click() List1.Clear End Sub Private Sub Text1_Change() M = CInt(Text1.Text) End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) sTemplate = "qwertyuiop[]asdfghjkl;'zxcvbnm,/QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?=\_+|`~!@#$%^&*()й ц укенгш щ зхъфы вапро лдж эячсмитьбю Й Ц У К Е Н ГШ Щ ЗХ Ъ Ф Ы В А П РО Л Д Ж Э Я Ч СМ И Т ЬБЮ ,№ * " If InStr(1, sTemplate, Chr(KeyAscii)) > 0 Then KeyAscii = 0 End Sub
61
Private Sub Text2_Change() N = CInt(Text2.Text) End Sub Private Sub Text2_KeyPress(KeyAscii As Integer) sTemplate = "qwertyuiop[]asdfghjkl;',.zxcvbnm,/QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>? =\_+|`~!@#$%^&*()й ц укенгш щ зхъфы вапро лдж эячсмитьбю Й Ц У К Е Н ГШ Щ ЗХ Ъ Ф Ы В А П РО Л Д Ж Э Я Ч СМ И Т ЬБЮ ,№ * " If InStr(1, sTemplate, Chr(KeyAscii)) > 0 Then KeyAscii = 0 End Sub
Рис.1. Ф о рмадля вво даэлементо вдвумерно го массива и вы во дарезультата З адача 2. Д ан о дно мерны й массив A(M). Со ставить про г раммупро верки на наличие хо тя бы о дно г о по вто ряю щ ег о ся элемента. П о сле про верки вы дать в фо рме со о тветствую щ ее со о бщ ение. Д ля вво да элементо в исхо дно го массива и вы во да со о тветствую щ ег о со о бщ ения в фо рме испо льзо вать фо рму, приведенную нарис.2. Н иж е приведена про г рамма на язы ке Visual Basic для реш ения это й задачи. Option Explicit ' Задать о дно мерны й массиви про верить все лиэлементы о динако вы е Option Base 1 Dim a() As Integer Dim M, i, j, flag As Integer Dim sTemplate As String
62
'П ро счет Private Sub Command2_Click() For i = 1 To M - 1 For j = i + 1 To M If a(i) = a(j) Then flag = 1: GoTo 30 Next j Next i 30 If flag = 0 Then Label1.Caption = "В се элементы разны е" Else Label1.Caption = "Е сть о динако вы е элементы " End Sub Private Sub Command3_Click() End End Sub ' Задание массива Private Sub Command4_Click() If Text1.Text = "" Then GoTo 10 ReDim a(M) 10 End Sub ' Д о бавляем элементы Private Sub Command5_Click() For i = 1 To M a(i) = InputBox("введите " & i & " элемент", "В во д элемента", "0") Next i End Sub Private Sub Form_Load() flag = 0 End Sub Private Sub Text1_Change() M = CInt(Text1.Text) End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) sTemplate = "qwertyuiop[]asdfghjkl;'zxcvbnm,/QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?=\_+|`~!@#$%^&*()й ц укенгш щ зхъфы вапро лдж эячсмитьбю Й Ц У К Е Н ГШ Щ ЗХ Ъ Ф Ы В А П РО Л Д Ж Э Я Ч СМ И Т ЬБЮ ,№ * " If InStr(1, sTemplate, Chr(KeyAscii)) > 0 Then KeyAscii = 0 End Sub
63
Рис. 2. Ф о рмадля вво даэлементо вмассиваи вы во дасо о бщ ения З адача 3. Д ан о дно мерны й массив A(M). Со ставить про г раммузамены каж до г о члена по следо вательно сти А , кро ме перво г о и по следнег о , на сумм у о кай мляю щ их. П рео бразо ванную по следо вательно сть вы дать в фо рме. Д ля вво да элементо висхо дно г о массива и вы во дапрео бразо ванно го массивавфо рмуиспо льзо вать фо рму, приведенную нарис.3. Н иж е приведена про г рамма на язы ке Visual Basic для реш ения это й задачи. Option Explicit ' Задать о дно мерны й массиви заменить элементы насумм уо кай м ляю щ их Option Base 1 Dim a() As Integer Dim SUM() As Integer Dim M, i, s, r As Integer Dim sTemplate As String Dim zzz As Variant 'П ро счет Private Sub Command2_Click() s = a(1) For i = 2 To M - 1 r = a(i) a(i) = s + a(i + 1) s=r Next i ' В ы во д массиванаэкран For i = 1 To M List1.AddItem a(i) Next i End Sub
64
Private Sub Command3_Click() End End Sub ' Задание массива Private Sub Command4_Click() If Text1.Text = "" Then GoTo 10 ReDim a(M) 10 End Sub ' Д о бавляем элементы Private Sub Command5_Click() For i = 1 To M a(i) = InputBox("введите " & i & " элемент", "В во д элемента", "0") Next i End Sub Private Sub Command6_Click() List1.Clear End Sub Private Sub Text1_Change() M = CInt(Text1.Text) End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) sTemplate = "qwertyuiop[]asdfghjkl;'zxcvbnm,/QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?=\_+|`~!@#$%^&*()й ц укенгш щ зхъфы вапро лдж эячсмитьбю Й Ц У К Е Н ГШ Щ ЗХ Ъ Ф Ы В А П РО Л Д Ж Э Я Ч СМ И Т ЬБЮ ,№ * " If InStr(1, sTemplate, Chr(KeyAscii)) > 0 Then KeyAscii = 0 End Sub
Рис. 3. Ф о рмадля вво даэлементо вмассиваи вы во дасо о бщ ения
65
З адача 4. Д ан о дно мерны й массив A. Со ставить про г раммуизменения нао братны й по рядо к следо вания элементо в вмассиве с по следую щ им умно ж ением каж до г о элемента по следо вательно сти на среднее арифметическо е элементо в по следо вательно сти А . Д ля вво да элементо в исхо дно го массива и вы во дапрео бразо ванно г о массива вфо рм уиспо льзо вать фо рму, приведенную нарис.4. Н иж е приведена про г рамма на язы ке Visual Basic для реш ения это й задачи. Option Base 1 ' В вести массив, по менять по рядо к следо вания элементо внао братны й и умно ж ить каж ды й элементнасреднееарифметическо е Dim a() As Long Dim i, c, sr As Integer Dim razm1 As Integer Dim sTemplate As String Private Sub Command1_Click() List1.Clear End Sub Private Sub Command2_Click() For i = 1 To razm1 List1.AddItem a(i) Next i End Sub Private Sub Command4_Click() For i = 1 To ((razm1 / 2)) c = a(i): a(i) = a(razm1 - i + 1): a(razm1 - i + 1) = c Next i For i = 1 To razm1 sr = sr + a(i) Next i sr = sr / razm1 For i = 1 To razm1 a(i) = a(i) * sr Next i End Sub Private Sub Command5_Click() End End Sub Private Sub Command7_Click() If Text1.Text = "" Then GoTo 10
66
' Заданиеслучай но го массивазаданно й величины razm1 = CInt(Text1.Text) ReDim a(razm1) As Long For i = 1 To razm1 a(i) = Round(Rnd() * 10) Next i For i = 1 To razm1 List1.AddItem a(i) Next i 10 End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) sTemplate = "qwertyuiop[]asdfghjkl;'zxcvbnm,/QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?=\_+|`~!@#$%^&*()й ц укенгш щ зхъфы вапро лдж эячсмитьбю Й Ц У К Е Н ГШ Щ ЗХ Ъ Ф Ы В А П РО Л Д Ж Э Я Ч СМ И Т ЬБЮ ,№ * " If InStr(1, sTemplate, Chr(KeyAscii)) > 0 Then KeyAscii = 0 End Sub
Рис. 4. Ф о рмадля вво даэлементо вмассиваи вы во дапрео бразо ванно г о массива З адача 5. Д ан о дно мерны й массив. Со ставить про грамму по иска двух максимальны х элементо в по следо вательно сти A с по следую щ им удалением элементо в, распо ло ж енны х меж ду двумя максимальны м и. Д ля вво да элементо в исхо дно го массива и вы во дапрео бразо ванно го массива в фо рмуиспо льзо вать фо рму, приведенную нарис.5.
67
Н иж е приведена про г рамма на язы ке Visual Basic для реш ения это й задачи. Option Explicit Option Base 1 ' В вести элементы массива, най ти2 максимальны х элемента и удалить элементы меж дуними Dim a() As Long Dim i, c, j As Integer Dim M, max, l, k, kol As Integer Dim sTemplate As String Private Sub Command1_Click() List1.Clear End Sub Private Sub Command2_Click() For i = 1 To M List1.AddItem a(i) Next i End Sub Private Sub Command4_Click() max = a(1) + a(2): k = 1: l = 1 For i = 1 To M - 1 For j = i + 1 To M If a(i) + a(j) > max Then max = a(i) + a(j): k = i: l = j Next j Next i If k > l Then c = k: k = l: l = c kol = l - k - 1 If kol = 0 Then GoTo 20 For i = k + 1 To M - kol a(i) = a(i + kol) Next i M = M - kol 20 End Sub Private Sub Command5_Click() End End Sub Private Sub Command7_Click() If Text1.Text = "" Then GoTo 10 ReDim a(M)
68
For i = 1 To M a(i) = InputBox("введите " & i & " элемент", "В во д элемента", "0") Next i 10 End Sub Private Sub Text1_Change() M = CInt(Text1.Text) End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) sTemplate = "qwertyuiop[]asdfghjkl;'zxcvbnm,/QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?=\_+|`~!@#$%^&*()й ц укенгш щ зхъфы вапро лдж эячсмитьбю Й Ц У К Е Н ГШ Щ ЗХ Ъ Ф Ы В А П РО Л Д Ж Э Я Ч СМ И Т ЬБЮ ,№ * " If InStr(1, sTemplate, Chr(KeyAscii)) > 0 Then KeyAscii = 0 End Sub
Рис. 5. Ф о рмадля вво даэлементо вмассиваи вы во дапрео бразо ванно г о массива З адача 6. Д аны два массива X и Y. Со ставитпро г раммупрео бразо вания массива Y путем умно ж ения каж до го элемента на среднее арифметическо е элементо вэто г о массива. Затем вклю чить в ко нец массиваY элементы массива X, распо ло ж енны е меж думаксимальны м и м инимальны м элементам и массива X.. Д ля вво да элементо в массиво в X и Y и вы во да прео бразо ванно г о массива Y испо льзо вать фо рму, приведенную нарис. 6. Н иж е приведена про г рамма на язы ке Visual Basic для реш ения это й задачи. Option Explicit
69
' даны двамассива Х и У вУ , най тиSR и ум но ж ить нанего каж ды й элемент, вХ най ти макс и мин и вклю чить вко нец У элементы меж дуним и. Option Base 1 Dim x() As Integer Dim y() As Integer Dim M, N, i As Integer Dim max, min, k, l, sr, c, kol As Integer Private Sub Command1_Click() For i = 1 To M x(i) = InputBox("введите " & i & " элемент", "В во д элемента", "0") Next i End Sub Private Sub Command2_Click() For i = 1 To N y(i) = InputBox("введите " & i & " элемент", "В во д элемента", "0") Next i End Sub Private Sub Command3_Click() sr = 0 For i = 1 To N sr = sr + y(i) Next i sr = sr / N ' searching for max and min in X array max = x(M): k = M min = x(1): l = 1 For i = 1 To M If x(i) > max Then max = x(i) And k = i Next i For i = 1 To M If x(i) < min Then min = x(i) And l = i Next i If k < l Then c = k: k = l: l = c kol = l - k - 1 For i = 1 To M y(i) = y(i) * sr Next i ' inserting For i = N + 1 To N + kol y(i) = x(k + 1) Next i End Sub
70
Private Sub Command4_Click() For i = 1 To M List1.AddItem x(i) Next i For i = 1 To N List2.AddItem y(i) Next i End Sub Private Sub Command5_Click() If Text1.Text = "" Then GoTo 10 If Text2.Text = "" Then GoTo 10 ReDim x(M) ReDim y(N + (M - 2)) 10 End Sub Private Sub Command6_Click() End End Sub Private Sub Text1_Change() M = CInt(Text1.Text) End Sub Private Sub Text2_Change() N = CInt(Text2.Text) End Sub
Рис. 6. Ф о рмадля вво даэлементо вмассиво вX и Y и вы во дапрео бразо ванно г о массиваY
71
11. Заданиядл я вы пол нения л абораторны х работ П ример: вы числить средню ю величинувво дим ы х чисел. А лг о ритм задачи следую щ ий : 1. П о местить на экранную фо рмуо бъекты управления – метку, тексто во е о кно ико мандную кно пку. 2. И зменить имя тексто во г о по ля наtxtAverage. 3. И зменить сво й ство Caption метки наAverage. 4. И зменить сво й ство ко мандно й кно пки наEnterNumbers 5. П о местить в по ле со бы тие Click ко мандно й стро ки ко д листинг а, ко то ры й будет испо льзо вать со зданную панель вво дадля приемачисело тпо льзо вателя. П ро г рамма испо льзо вания переменны х для по дсчета среднег о значения введенны х чисел: Avgval = 0 Numval = 0 'иниц иализац ия переменны х avgval, numval, inptval. Inptval = 0 Do While Not inptval = 1 'начало ц икла. Ц иклбудетрабо тать до тех по р, по ка значение переменно й inptval не станет= 1. Inptmsg = “ Input a positive integer or 1 to calculate the varerage” 'задает значение переменно й inptmsg, со держ ащ ей приглаш ение панели вво да. Inptval = InptBox (inptmsg, “ Input Values”) 'испо льзуется для вы зо ва функц ии Input Box (панель вво да) и присваивание по лученно г о значения функц ии переменно й Inptval. If Val(Inptval) > 0 then 'про верка, что введено число > 0. Avgval = avgval + Inptval Numval = numval + 1 'если усло вие истинно , то сумм ируется значение и ко личество введенны х чисел. End If Loop 'ко нец ц икла TxtAverage.Text = avgval / numval 'среднее значение вы во дится в тексто во м о кне. Э то значение присваивается сво й ствуText тексто во г о о кна.
72
Л итерату ра А наньев А .И . Само учитель Visual Basic 6.0. / А .И . А наньев, А .Ф . Ф едо ро в. –СП б.: Б Х В –Санкт-П ерербург , 2000. –624 с. Браун К . В ведение в Visual Basic для про г раммиста/ К . Браун. – М .: М ир, 1993. –415 с. В ай ланд Б. Visual Basic 6 / Б. В ай ланд. – М .: “ И нтерэксперт”, 2002. – 238 с. К узьменко В .Г. Visual Basic 6. Само учитель / В .Г. К узьменко . –2 – е изд. –М .:О О О “ Б ино м - П ресс”, 2003. –432 с. Microsoft Visual Basic 6.0 для про фессио нало в. Ш агзаш агом : П ракт. по со бие/ П ер. с анг . –М .: И зд-во Э К О М , 2002. –720 с. Э лектро нны й катало гнаучно й библио теки В о ро неж ско г о г о сударственно г о университета. –(http // www.bib. vsu.Ru/). Со ц иальны е и гуманитарны е науки. Э ко но мика: Библио графическая базаданны х. 1986-2001 г г . / И Н И О Н РА Н . –М ., 2002. –(СD. ROM).
С О Д ЕРЖ А Н И Е П редисло вие… … … … … … … … … … … … … … … … … … … … … … … … 1. Visual Basic как системао бъектно -о риентиро ванно го про г рамм иро вания… … … … … … … … … … … … … … … … … … … … … … … … … … … … . 1.1. В ведение вVisual Basic… … … … … … … … … … … … … … … … … … 1.2. О сно вны е по нятия о бъектно -о риентиро ванно г о про граммиро вания… … … … … … … … … … … … … … … … … … … … … … … … … … … 1.2.1. О бъекты … … … … … … … … … … … … … … … … … … … … … … 1.2.2. Со бы тия, мето ды и сво й ства… … … … … … … … … … … … … .. 1.2.3. К лассы … … … … … … … … … … … … … … … … … … … … … … ... 2. И нтег риро ванная средаразрабо тки… … … … … … … … … … … … … … … .. 2.1. Главно е меню … … … … … … … … … … … … … … … … … … … … … … .. 2.2. П анели инструменто в… … … … … … … … … … … … … … … … … … … . 2.3. П алитрао бъекто в… … … … … … … … … … … … … … … … … … … … … 2.4. О кно про во дникапро екта… … … … … … … … … … … … … … … … … .. 2.5. О кно сво й ств… … … … … … … … … … … … … … … … … … … … … … ... 2.6. Страниц ы сво й ств… … … … … … … … … … … … … … … … … … … … ... 2.7. О кно про смо трао бъекто в… … … … … … … … … … … … … … … … … .. 2.8. О кно ко нструкто рафо рм… … … … … … … … … … … … … … … .… … .. 2.9. О кно редактиро вания ко да… … … … … … … … … … … … … … … … … 2.10. О кно макетафо рмы … … … … … … … … … … … … … … … … … … … .. 2.11. Н астро й касреды разрабо тки… … … … … … … … … … … … … … … ... 3. О бъекты иуправление о бъектам и Visual Basic… … … … … … … … … … ... 3.1. О бъекты , испо льзуем ы е присо здании прило ж ения… … … … … … ... 3.2. О сно вы рабо ты с о бъектами… … … … … … … … … … … … … … … … .
3 3 3 4 4 5 6 7 7 8 8 8 8 9 9 9 10 10 11 11 11 12
73
3.2.1. У стано вкаи по лучение значения сво й ства… … … … .… … … … ... 3.2.2. И спо льзо вание мето до ввко депро ц едур… … … … … … … … … ... 3.2.3. Со здание про г рамм но г о ко дадля о брабо тки со бы тия о бъекта... 4. Стандартны е элементы управления Visual Basic… … … … … … .… … … … 4.1. О бщ ие сво й ства, мето ды и со бы тия элементо вуправления… … … . 4.2. Э лементуправления ко мандная кно пка… … … … … … … … .… … … .. 4.3. Э лементуправления тексто во е по ле… … … … … … … … … … … … … . 4.4. Э лементуправления метка… … … … … … … … … … … … … … … … … 4.5. Э лементуправления рамка… … … … … … … … … … … … … … … … … 4.6. Э лементуправления флаж о к… … … … … … … … … … … … … … … … . 4.7. Э лементуправления переклю чатель… … … … … … … … … … … … … 4.8. Э лементуправления списо к… … … … … … … … … … … … … … … … .. 4.9. Э лементуправления по лесо списко м… … … … … … … … … … … … .. 4.10. Э лементуправления счетчик… … … … … … … … … … … ..… … … … . 4.11. Э лементуправления по ло сы про крутки… … … … … … … … … … … . 4.12. Э лементуправления линия… … … … … … … … .… … … … … … … … . 4.13. Э лементуправления набо р вкладо к TabStrip… … … … … … … … … . 5. Со здание про сто г о прило ж ения… … … … … … … … … … … … … … … … … 5.1. Со здание про екта… … … … … … … … … … … … … … … … … … … … … 5.1.1. Со здание но во г о про екта… … … … … … … … … … … … .… … … .. 5.1.2. Со хранение про екта… … … … … … … … … … … … … … … … … ... 5.1.3. О ткры тие про екта… … … … … … … … … … … … … … … … … … ... 5.1.4. В ы по лнение прило ж ения… … … … … … … … … … … … .… … … .. 5.2. Со здание фо рмы … … … … … … … … … … … … … … … … … … … .… … 5.2.1. П о рядо к со здания фо рмы … … … … … … … … … … … … … … … .. 5.2.2. Сво й ствао бъекто вфо рмы … … … … … … … … … … … … … … … . 5.2.3. Д ей ствия, вы по лняем ы е с о бъектам ифо рмы … … … … … … … .. 5.2.4. Н астро й капараметро вфо рм ы … … … … … … … … … … … … … ... 5.2.5. Со бы тия и мето ды фо рмы … … … … … … … … … … … … ...… … .. 5.3. П о рядо к со здания прило ж ения… … … … … … … … … … … … … … … . 6. У правление про екто м… … … … … … … … … … … … … … … … … … … … … . 6.1. Структурапро екта… … … … … … … … … … … … … … … … … … … … .. 6.2. П ро во дник про екта… … … … … … … … … … … … … … … … … … … … . 6.3. П ро смо трструктуры про екта… … … … … … … … … … … … … … … … 6.4. Сво й ствапро екта… … … … … … … … … … … … … … … … … … … … … 6.5. О тладкапро екта… … … … … … … … … … … … … … … … … … … … … .. 6.6. О брабо ткао ш ибо к… … … … … … … … … … … … … … … … … … … … .. 6.7. Со здание испо лняемо г о фай лапро екта… … … … … … … … … … … … 7. Разрабо ткапо льзо вательско г о интерфей са… … … … … … … … … … … .… . 7.1. Д иало говы е о кна… … … … … … … … … … … … … … … … … … … … … . 7.1.1. О кно со о бщ ения… … … … … … … … … … … … … … … … … … … . 7.1.2. О кно вво даинфо рмац ии… … … … … … … … … … … … … … … … 7.2. Ф о рмы как по льзо вательские о кнадиало га… … … … … … … … … … . 7.2.1. Со здание по льзо вательско г о о кнадиало га… … … … … … … … .. 7.2.2. О ткры тие по льзо вательско го о кнадиало г а… … … … … … … … .
12 13 13 14 14 15 15 16 16 16 17 17 17 19 19 19 19 20 20 20 21 21 21 21 21 22 23 23 24 24 26 26 28 28 29 29 30 31 32 32 32 33 34 34 35
74
8. К о мпо ненты язы ка Visual Basic… … … … … … … … … … … … … … … … … . 8.1. П еременны е… … … … … … … … … … … … … … … … … … … … … … … . 8.1.1. Т ипы переменны х… … … … … … … … … … … … … … … .… … … .. 8.1.2. И мя переменно й … … … … … … … … … … … … … … … … … … … .. 8.1.3. Т ипы данны х для переменны х VB… … … … … … … … … … … … 8.1.4. О бъявление переменны х впро г рамме… … … … … … … … … … . 8.1.5. П рисво ение значения переменно й … … … … … … … … … … … … 8.2. К о нстанты … … … … … … … … … … … … … … … … … … … … … … ... 8.3. М ассивы … … … … … … … … … … … … … … … … … … … … … … … .. 8.3.1. О бъявление массива… … … … … … … … … … … … … … … … .. 8.3.2. О бъявление массивафиксиро ванно г о размера… … … … … .. 8.3.3. О бъявление динамическо г о массива… … … … … … … … … ... 8.4. О фо рмление про г раммны х ко до в… … … … … … … … … … … … .... 8.5. П ро г раммны е мо дули… … … … … … … … … … … … … … … … … … 8.6. Редактиро вание исхо дны х ко до в… … … … … … … … … … … … … . 8.7. П ро ц едуры … … … … … … … … … … … … … … … … … … … … … … .. 8.7.1. П ро ц едуры Sub… … … … … … … … … … … … … … … … … … .. 8.7.2. П ро ц едуры Function… … … … … … … … … … … … … … … … .. 8.7.3. В ы зо впро ц едуры … … … … … … … … … … … … … … … … … . 9. У правляю щ ие структуры … … … … … … … … … … … … … … … … … … … ... 9.1. Структурапринятия реш ения If-Then-Else… … .… … … … … … … 9.2. Д о по лнительно е усло вие ElseIf… … … … … … … … … … … … … … 9.3. У правляю щ ая структураFor-Next… … … … … … … … … … … … ... 9.4. У правляю щ ая структураWhile-Wend… … … … … … … … … .… … 9.5. У правляю щ ая структураDo-Loop… … … … … … … … … … … … ... 9.6. У правляю щ ая структураSelect Case… … … … … … … … … … … … 9.7. У правляю щ ая структураFor-Each-Next… … … … … … … … ..… … 9.8. О перато рExit… … … … … … … … … … … … … … … … … … … … … . 10. Разрабо ткапро грамм с испо льзо ванием фо рм по льзо вателя… ..… … … . 11. Задания для вы по лнения лабо рато рны х рабо т… … … … … … … … … … .. Л итература… … … … … … … … … … … … … … … … … … … … … … … … … … .. Со держ ание… … … … … … … … … … … … … … … … … … … … … … … … … … .
36 36 36 37 37 39 41 41 42 43 43 43 44 44 45 46 46 47 47 47 48 49 51 54 54 56 57 58 59 71 72 72
75
Со ставители: к.э.н., до ц . Н агинаЕ ленаК о нстантино вна, к.э.н., до ц . И щ енко В алентинаА лександро вна
Редакто р БунинаТ .Д .
Заказ №
Т ираж 200 экз.
О тпечатано намно ж ительно й технике эко но мическо го факультетаВ ГУ 394068 В о ро неж , ул. Х о льзуно ва, 40