Visual Basic программирование

1 УПРАВЛЕНИЕ СОБЫТИЯМИ В КОМБОБОКСЕ

Две проблемы могут приключиться, когда смущенный юзер ползает по комбобоксу при помощи мышки вверх и вниз, а затем нажатием на Enter делает свой юзерский выбор. Во-первых, нажатие на серую стрелочку вызывает два события: Change и Click. Во-вторых, нажатие на Enter перемещает фокус к следующему элементу формы, тогда как нажатие на кнопку мыши не вызывает подобного эффекта (т.е. фокус остается на комбобоксе). Поэтому, если Ваш код помещен в секцию события Change, то на стрелочки вверх/вниз (клавиатурой) вызовет это событие, чего Вы, естественно, не хотите. Напротив, если Вы помещаете свой код только в секцию события Lost Focus и юзер щелкает мышью на своем выборе, то фокус не уйдет из комбобокса, а юзер будет созерцать текст, который он выбрал своей мышью, и думать, почему это ничего не происходит. Нижеприведенное решение "фильтрует базар" событий Click, генерирующихся нажатиями на стрелочки клавиатуры, и вынуждает контрол потерять фокус.В секции Declarations формы введите следующее

' В VB3 надо поменять тип флага на integer 
Dim bNoise as Boolean 
' True означает, что происходит "шум", на который не следует реагировать

А этот код введите в секции события Form_Load:

bNoise = False

        Этот код введите в событии KeyDown комбобокса:

Private Sub cbTest_KeyDown(KeyCode As _ 
        Integer, Shift As Integer) 
        ' если юзер использует стрелки для езды по списку комбобокса 
        ' игнорировать события Click 
        If KeyCode = vbKeyDown Or KeyCode _ 
                = vbKeyUp Then bNoise = True 
End Sub

Этот код вводится в событии Click комбобокса:

Private Sub cbTest_Click() 
        If bNoise Then 
                ' Ignore Noise events 
                ' (up or down arrow) 
                bNoise = False 
        Else 
                ' Увести фокус с контрола 
                SendKeys "{TAB}", True 
        End If 
End Sub

Теперь Вам остается написать код, содержащий реакцию на выбор юзера, и занести его в секцию события LostFocus комбика. 
  

2. КОММЕНТИРОВАНИЕ И РАСКОММЕНТИРОВАНИЕ БЛОКОВ КОДА

VB5 
Level: Beginning 
 

VB 5.0 позволяет Вам разом закомментировать целый блок кода, а затем также быстро раскомментировать его. Это очень полезно при отладке, когда Вам не нужно исполнять целый ряд операторов, и в то же время Вы не можете их удалить вот так вот просто за здорово живешь. Между тем, пара кнопарей Comment/Uncomment присутствует только в тулбаре Edit, который надо специально вызывать :-(. Чтобы быстро вызвать тулбар Edit, кликните правой кнопкой мыши на любом тулбаре в VB, и выберите затем команду Edit. 
  
  
   

3. ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ ДЛЯ НЕОБЯЗАТЕЛЬНЫХ ПАРАМЕТРОВ

VB5 
Level: Beginning

Если Вы когда-либо программили на VB4, то Вы возможно пользовались мощной фишкой под названием Необязательные параметры (Optional parameters). VB5 пошел еще дальше: теперь эти параметры могут быть любого типа (не только Variants), и могут появляться в процедурах Property. Интересно, что Вы можете теперь задавать для них значение по умолчанию.

Property Get Value _ 
        (Optional index As Long = 1) 
End Property

Вы можете теперь делать это без бывшего ранее обязательным (и жутко тормозным) тестом IsMissing:

Property Get Value _ 
        (Optional index As Long) 
If IsMissing(index) Then index = 1 
... 
End Property

4. НЕ СОЗДАВАЙТЕ ALIAS-НЫХ ПЕРЕМЕННЫХ

VB5 
Level: Beginning

Никогда не передавайтe глобальную переменную в качестве аргумента в процедуру, которая также напрямую обращается к этой переменной из себя (зачем??). Если Вы на 100% уверены, что следуете этому правилу в Ваших программах, то зачеркните опцию Assume No Aliasing в диалоговом окне Advanced Optimizations, которое вызывается из пункта Compile диалога Project Properties (уф, надеюсь, понятно). Если компилятор native code знает, что этих самых alias-ных переменных нет, то он спокойно копирует значения переменных в шустрые регистры ЦПУ, и переписывает их значения обратно в RAM только при выходе из процедуры. Это увеличивает скорость исполнения скомпилированных программ. 
  
  
 

5. ЦЕНТРИРОВАНИЕ ФОРМЫ НА ЭКРАНЕ

VB5 
Level: Beginning

Все знают о маленьком кодике, позволяющем Вам центрировать форму на экране вне зависимости от графического разрешения. Теперь Вы можете достичь того же результата, всего лишь присвоив значение vbStartUpScreen (=2) новому свойству StartUpPosition формы (появилось в версии 5). Вы даже можете отцентрировать форму относительно ее родительского окна, присвоив значение vbStartUpOwner (=1). Присвоение можно сделать в окне Property соответствующей формы. Когда Вы центрируете  форму внутри родительского окна, не забудьте добавить второй аргумент в методе Show.

Form2.Show vbModal, Me 
  
 

6. НЕ УВЛЕКАЙТЕСЬ АВТООПТИМИЗИЦИЕЙ FAST CODE

VB5 
Level: Beginning

Если взглянуть на опции native code оптимизации, то сперва так и подмывает щелкнуть на "Optimize for Fast Code". Однако, как ни странно это может прозвучать, данное действие далеко не всегда гарантирует ожидаемый эффект. Аппликухи, оптимизированные на скоростное исполнение, как правило, не оптимизируются (пардон за каламбур), а лишь получают большее количество памяти при загрузке. Это обращается для них более медленной загрузкой, что особенно заметно на машинах с недостаточным количеством RAM, и в итоге создает впечатление, что Ваша аппликуха работает медленнее, нежели оптимизированная под компактный код. По той же самой причине, советуется компилить аппликухи в P-code. В случае объемных, UI- и базоданских аппликух, выигрыш от компиляции в native-code отнюдь не перевесит увеличения размера аппликухи. Вообще, чтобы точно знать, какая компиляция нужна Вам, юзайте VB Application Performance Explorer (APE), который лежит на VB CD. 
 

7. НЕ ВСЕ ШАБЛОНЫ СОЗДАНЫ ОДИНАКОВО

VBA5 
Level: Beginning

В отличие от других продуктов Office 97, шаблоны Word 97 содержат business-application engine, который хранится отдельно от документов, использюущих этот engine. Основанные на шаблонах книги Excel и презентации PowerPoint  хранят в себе шаблоны, на основе которых они созданы. На практике, все документы Word состоят из 2х VBA проектов: первый проект создан на базе основного(оригинального, хранящегося в Word) шаблона (все документы Word основаны на шаблонах), а второй проект принадлежит самому документу Word. С другой стороны, книги Excel и презентации PowerPoint, созданные на шаблонах, содержат только один VBA проект. Каждый файл содержит свою собственную копию проекта оригинального шаблона. Изменения, производимые в этом шаблоне, не затрагивают основной шаблон, хранящийся в приложении. 
 

8. НАСТРОЙКА ТУЛБАРОВ В VB

VB5 
Level: Beginning

Вот несколько предложений по настройке IDE в VB5: 
Добавить закладки в тулбокс можно, кликнув правой кнопкой мыши на кнопке General (что на тулбоксе), и выбрав Add Tab. Вы можете также перемещать и удалять закладки, и перемещать иконы контролов с одной закладки на другую, используя обычный метод drag-and-drop. 
Вытащить кнопку любого пункта меню на тулбар можно, кликнув правой кнопкой на любом тулбаре и выбрав пункт Customize. Перейдите на закладку Commands, выберите нужный пункт меню в правом окошке, и перетащите его на тулбар. Первыми кандидатами на добавление являются пункты Project-References,Project-Properties, и Tools-Add Procedure. 
Как создать совершенно новый тулбар на вкладке Toolbars диалогового окна Customize. После того, как Вы определили содержимое будущего тулбара, для добавления кнопок на этот тулбар используйте описанную абзацем выше процедуру. Когда у Вас на экране активизировано диалоговое окно Customize, кликните правой кнопкой на любой кнопке тулбара и Вы сможете поменять рисунок кнопки, создать разделитель, спрятать/показать текст и т.д. 
 

9. КАК СПРЯТАТЬ ВСЕ ОКОШКИ ПРОЕКТА

VB5 
Level: Beginning

Когда Вы работаете с несколькими пректами сразу, можно запутаться в нагромождении туевой хучи окошек из разных проектов. Однако, Вы можете временно спрятать все окошки, относящиеся к данному проекту, щелкнув по пиктограмме проекта в окошке Project Explorer так, чтобы все ветви, торчащие из него, исчезли. Тогда же свернутся и все окна, относящиеся к данному проекту. Эту возможность можно отменить, щелкнув на сответствующем квадратике на закладке General в меню Tools-Options. 
 

10. STANDALONE БИБЛИОТЕКИ ТИПОВ

 VB4 16/32, VB5 (Enterprise Edition) 
Level: Intermediate

Koгда Вы создаете Ваш out-of-process OLE сервер, то VB встраивает библиотеку типов сервера (companion type library) в EXE-файл, не генерируя при этом .TLB файл. Однако, если у Вас Enterprise Edition VB4 или VB5, то зачеркнув квадратик Remote Server File, Вы заставите VB создавать standalone билиотеку типов. В VB5, эта опция находится на вкладке Component диалогового окна Properties меню Project. 
  
 


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=25752