Онлайн учебник по дизайну Руководство по раскрутке сайтов Шаблоны Программирование на VB Главная
пожарные правила работа в киеве для студентов Создание сайтов Рязань новости авто.
Программирование на Visual Basic


Две проблемы могут приключиться, когда смущенный юзер ползает по
комбобоксу при помощи мышки вверх и вниз, а затем
нажатием на Enter делает свой юзерский выбор.
Игра Point blank давно захватила территорию России попробуй себя в роли!
Во-первых, нажатие на серую стрелочку вызывает
два события: 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. КОММЕНТИРОВАНИЕ И РАСКОММЕНТИРОВАНИЕ БЛОКОВ КОДА.
VB 5.0 позволяет Вам разом
закомментировать целый блок кода, а затем также
быстро раскомментировать его. Это очень полезно
при отладке, когда Вам не нужно исполнять целый
ряд операторов, и в то же время Вы не можете их
удалить вот так вот просто за здорово живешь.
Между тем, пара кнопарей Comment/Uncomment присутствует
только в тулбаре Edit, который надо специально
вызывать :-(. Чтобы быстро вызвать тулбар Edit,
кликните правой кнопкой мыши на любом тулбаре в
VB, и выберите затем команду Edit.
 


    3. ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ ДЛЯ НЕОБЯЗАТЕЛЬНЫХ ПАРАМЕТРОВ.
Если Вы когда-либо программили
на 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-НЫХ ПЕРЕМЕННЫХ.
Никогда не передавайтe
глобальную переменную в качестве аргумента в
процедуру, которая также напрямую обращается к
этой переменной из себя (зачем??). Если Вы на 100%
уверены, что следуете этому правилу в Ваших
программах, то зачеркните опцию Assume No Aliasing в
диалоговом окне Advanced Optimizations, которое вызывается
из пункта Compile диалога Project Properties (уф, надеюсь,
понятно). Если компилятор native code знает, что этих
самых alias-ных переменных нет, то он спокойно
копирует значения переменных в шустрые регистры
ЦПУ, и переписывает их значения обратно в RAM
только при выходе из процедуры. Это увеличивает
скорость исполнения скомпилированных программ.

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

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

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

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

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

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

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

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

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

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

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

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

    11. ИСПОЛЬЗОВАНИЕ OBJECT BROWSER’a длЯ нахождениЯ недокументированных возможностей.

Если кликнуть правой кнопкой мыши в правом окошке Object Browser’а (там, где нарисованы члены классов), то выскочит
контекстное меню с командой Show Hidden Members. Если щелкнуть на этой команде, то отныне Object Browser будет показывать
все hidden-свойства и методы (а также и классы) любой библиотеки, и Вы можете использовать это для более детального
исследования библиотек объектов. Например, в библиотеке VBA есть hidden класс под названием _HiddenModule, в который
входят многие известные функции VBA плюс три недокументированные: ObjPtr, StrPtr, и VarPtr. ObjPtr возвращает адрес private
area экземпляра объекта, StrPtr возвращает адрес первого символа в строке, VarPtr возвращает адрес переменной или дескриптора
строки (string descriptor), если имеем случай переменной типа string.
    12. АДРЕС ПЕРЕМЕННОЙ.

В VB5 есть встроенная функция VarPtr (см. Совет «ИСПОЛЬЗОВАНИЕ OBJECT BROWSER’a длЯнахождениЯ недокументированных возможностей»),
но этой функции нет в VB4. Runtime library в VB4 включает эту функцию, но перед использованием ее нужно сначала объявить:
#If Win16 Then
Declare Function VarPtr Lib "VB40016.DLL" (variable As Any) As Long
#Else
Declare Function VarPtr Lib "VB40032.DLL" (variable As Any) As Long
#End If
Эта функция полезна при передаче пользовательских типов (Type structure) во внешнюю процедуру API, и в этом типе какое-либо
из полей является адресом другой переменной или записи.

    14. APP.PATH МОЖЕТ ВОЗВРАЩАТЬ UNC-ПУТИ.

В отличие от VB4, App.Path в VB5 может возвращать UNC-путь, типа "\\server\programs\...", в зависимости от обстоятельств, от
того как запущена программа и запущена она из VB IDE или скомпилирована в EXE-файл. Эта особенность может сильно испортить вам
жизнь, если Вы используете App.Path для установки текущего каталога при старте программы.

ChDrive App.Path
ChDir App.Path
Поскольку ChDrive на умеет обрабатывать UNC-пути, этот код может вызвать фатальную ошибку времени выполнения, но можт быть
защищен использованием On Error Resume Next. Однако этот фикс не защитит Вас от всех невзгод, могущих произойти. Наилучшее
решение состоит в том, чтоюы предоставить юзеру самому ввести каталог во время исполнения программы, затем записать полученный
путь в регистр или INI-файл. Для более подробной инфы, см. статью Q167167 в Microsoft Knowledge Base.

    15 ЕЩЕ ОБ УНИВЕРСАЛЬНЫХ ПАРАМЕТРАХ МАССИВОВ

Вы можете написать единую процедуру для любых
типов массива  с любым типом в качестве
аргумента, используя параметр типа Variant. Внутри
процедуры, адресация элементов массива
происходит обычным способом:
' return the number of items
Function ItemCount(anArray As Variant) As Long
ItemCount = UBound(anArray) - LBound(anArray) + 1
' the first element is
' anArray(LBound(anArray))
End Function
Вы можете даже запулить в
процедуру многомерный массив с любым
колическтвом измерений, а чтобы разобраться,
сколько же у этого массива измерений, нужно
производить обращения к функциям UBound и Lbound до
возникновения ошибки:

Function ItemCount(anArray As Variant)As Long
Dim items As Long, i As Integer
On Error Resume Next
items = UBound(anArray) - LBound(anArray) + 1
For i = 2 to 999
        items = items * (UBound(anArray, _
                i) - LBound(anArray, i) + 1)
        If Err Then Exit For
Next
ItemCount = items
End Function


Средства создания и стоимость разработки сайтов на базе Open Source решений

Украинский хостинг сайтов , аренда серверов, регистрация доменных имён.
Хостинг - слово, которое в последнее время стало в ходу даже у людей, далёких от компьютерных премудростей. Слово хостинг ( hosting )
пришло к нам, как и большинство компьютерных терминов из английского языка. Вкратце, хостинг - место, где живут сайты.

 

продолжение >>

 

http://vxzone.com/
чемоданы redmond
Хостинг от uCoz