Vb

Document Sample
Vb Powered By Docstoc
					     Смирнов                                          стр. 1                  Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                            Дата печати
6/9/2011 11:35:00 PM


                                       Вижуал Бейсик 6.0. (VB).

                                                1. Расширения:

                       Проект:
                                      VBP – информация о строении проекта;
                                      VBW – файл рабочего пространства VB.

                       Форма:
                            FRM – описание формы;
                            FRX - двоичный файл формы.
                            добавление Формы из другого модуля: контекстное меню на формах –
                             «Добавить файл» - выбрать форму, и она появится в списке форм.
                            События:
                             Activate – обработка всех показов на форме и обновление списков
                             при возврате на неѐ.
                             Load – первая загрузка формы.

                 LOG – журнал регистрации ошибок загрузки.

                  Окно формы должно быть текущим.

                Вид проекта – Standard.exe.
                Новый проект:
                         - меню «Файл» – пункт «Новый проект» («NewProject»);
                         - из 1-го меню кнопка «New», Standard.exe и кнопка «Открыть».
                После создания проекта ему нужно присвоить понятное имя и, желательно, сразу
                сохранить:
                     - меню «Файл» – пункт «Сохранить программу как». Обращайте внимание на каталог
                сохранения проекта.

                   Печать формы – команда PrintForm.

                                2. Объявление и форматы переменных:
                                            2.1. Объявление переменных:

                                              Явное объявление переменных:

               Переменные необходимо явно объявлять !!! Иначе могут быть ошибки при несовпадении
          имени переменной в последовательных вычислениях.

                             Для обеспечения явного объявления переменной есть два пути:

         Глобально (автоматически при создании новых форм и поэтому более предпочтительный)) : меню Tools
          (Инструменты), пункт Options (Опции) – установить значение Require Variable ( «галочка»).
       В новые модули будет добавляться фраза Option Implicit и автоматически станет требовать объявление переменной.
       А в предыдущие формы нужно вставлять фразу из предыдущего пункта вручную, а также при некоторых исправлениях
        фраза Option Implicit может исчезать;
       Ввести фразу Option Implicit в начало Формы (модуля) вручную. При наличии множества ранее использованных, но не
        объявленных переменных, этот метод не дает результата.
     Смирнов                                        стр. 2                   Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                           Дата печати
6/9/2011 11:35:00 PM

Фраза Option Implicit расположена вначале программного кода. В списке Object (слева) опция «Общее» (General). В списке
процедур (Proc) выделена опция Declarations.

                                     2.2. Область видимости переменных:

          Область видимости переменных позволяет использовать переменную не только в конкретной
    процедуре, но и во всем Приложении, а также во всем модуле (форме).

          Объявление переменной в секции Declarations стандартного модуля делает ее доступной всему
    модулю.

Объявление переменной с параметром Public делает ее доступной всему Приложению. Но для этого нужно создать модуль и
там еѐ объявить. Для строковой переменной типа Public размерность не указывается. Пример: Public Naim_kr as string.


                                           2.3. Форматы переменных:

   String – строковые (Dim Name As String * 50);
        Byte – целое без знака (0-255) (1 байт);
        Integer – целое со знаком (от –32768 до 32767) (по умолчанию - %);
        Long – целое со знаком (от –2.147.483.648 до –2.147.483.647 ) (по умолчанию - %)(4байта);
        Single – вещественное число с одинарной точностью (6 цифр) (4 байта) (по умолчанию - !);
        Double - вещественное число с двойной точностью (14 цифр) (8 байт) (по умолчанию - #);
        Currency – денежная единица (4 цифры) (8 байт) (по умолчанию - @);
        Boolean – выбор «Да» – «Нет» ( «True» - истина, «False» - ложь);
        Date – дата.

      Переменные без описания формата данных, приобретают в VB тип Variant.
      Но необходимо учитывать, что строго типизированные данные обрабатываются намного
    быстрее, особенно, когда необходимо выполнять над данными повторяющиеся действия !

          Имя переменной не должно содержать точек, пробелов, а также символов : !, @, #, &, %, $.
          Внимание: А также оно не должно совпадать с именами Меню, подменю и Форм.

                                           3. Работа с формами.

             Имена форм лучше оставлять, как Форма1 и т.д., а Имя файла формы (в скобках) при
        первом сохранении назвать в соответствии с ролью формы в модуле;
             Имя файла формы давать не более 8 символов ! Иначе оно не будет обнаружено при
        переписи в другой каталог или на другую ПК.
           Внимание: А также оно не должно совпадать с именами Меню, подменю и Форм.

             Форма в ВБ понимается, как Модуль !
             В режиме контекстного меню «Сохранить как» обращать внимание на каталог перезаписи
        формы (по умолчанию пишется в каталог VB). Иначе потом при переносе в другое место
        винчестера или другой ПК модуль не работает !!!

                                       3.1. Свойства реквизитов форм:

             Name – имя формы (всегда на первом месте);
             Align – разрешение на перемещение формы = 0 (иначе форму в отладке перемещать нельзя);
             Caption – надпись;
             Backcolor – цвет фона (цвет выбирается нажатием кнопки «Palette» - цвета
             TabIndex – последовательность перемещения по форме (с 0 до N) – не редактируемые
        элементы не учитываются.
     Смирнов                                         стр. 3             Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                      Дата печати
6/9/2011 11:35:00 PM
             Locked – запрет ввода (True).
             Visible – показ на форме при запуске программы (True).

                                4. Кнопочные элементы управления:

             Помещаются на форму двойным щелчком мыши.

                   4.1. Элемент управления – CommandButton – кнопка управления:

                Имя             – имя комманды (номер)
                Caption         – заглавие (к примеру, <Ввод>).

                       4.2. Элемент управления – TextBox – можно редактировать:

                Внимание: Имя текстового поля не должно совпадать с именем глобальной
                         переменной!!!

                Alignment       - расположение текста в поле:
                                       -      2 – центровка;

                Text            - надпись на поле;

                Multiline       - True – если текстовое поле должно занимать несколько строк;

                Locked - True (Да) – запрет на редактирование. Можно только прокручивать и копировать
                текст.
                Выделение текста при переходе на поле - txtFields(7).SelLength = Len(txtFields(0)) + 1
                Установка на текст в определѐнную позицию - txtFields(7).SelStart = Len(txtFields(0)) + 1

                              5. Управляющие элементы управления:

                       5.1. Элемент управления – ScroolBar – полоса прокрутки:

                                -    Min и Max – нижнее и верхнее значение;
                                -    Value – значение в положении «ползунка».
                                -    Событие Change - положение «ползунка».
                                -    Событие Scrool – движение «ползунка» - непрерывный процесс.

                             5.2. Элемент управления – Option button – выбор:

           Обрабатываются в программном коде с помощью логических операторов If (см. раздел
      по коду программы).

                                     5.3. Элемент управления – Check box.

             Пометка «галочкой» в программном коде командой:
             Имя Check Box.Checked – True

             Представление Check Box в виде Командной кнопки:
                      Style – Grafical (исчезает поле для «галочки»)
                      Picture – выбрать иконку.
     Смирнов                                      стр. 4               Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                     Дата печати
6/9/2011 11:35:00 PM



                             6. Элементы обработки Даты и Времени:

                                                6.1. Календарь:

             Компонент: Microsoft Windows Common Controls-2 6.0
             MonthView – простой календарь.
             DateTimePicker (DTPicker) – Календарь, связанный с полем-датой:
                                -    DataSource – Adodc
                                -    DataField - поле-дата из БД. Но не работает !!! Поэтому:

             Нужно обьявить текстовое поле, связанное с тем же полем из БД.
             В Процедуре Form_load() занести из него значение в поле DTPicker (без расширений):
             DTPicker1 = txtFields(1).Text

           А в Процедуре DTPicker1_Close_Up() занести в текстовое поле значение из DTPicker (после
      выбора даты из Календаря):
           txtFields(1).Text = DTPicker1

            При указании в свойстве Format пункта 2 – DtpTime – DTPicker обрабатывает поле выбора
      Времени. Стрелка вверх – с часа (1); стрелка вниз – с 23 часов.
            В Процедуре DTPicker1_Click() занести в текстовое поле значение из DTPicker (после
      выбора времени). Пример:
            TIme1.Text = TimeValue(DTPicker2), где
            TimeValue() – функция преобразования текстового вида «Времени» и проверка правильности
      ввода.
                                                   6.2. Timer:

           Отслеживает время, но не высвечивается на форме в виде часов.
           Для показа в поле Label изменения Времени в Timer указать в свойстве Interval = 100, а в
      команде Timer-а дать команду Label13 = Time().

                                7. Списковые элементы управления:
                               7.1. DataCombo – комбинированный список
                       (с возможностью ввода в 1-е поле (на примере Подстанций):

      Имя                       – Datapodst
      BoundColumn               - Podstanc
      BoundText                 – значение поля из BoundColumn
      CausesValidation          - да
      DataBindings              - связь с полем в основной БД, в которое будет занесен результат выбора
                                из DataBound
      DataField                 - PODSTANC
      DataSource                – Adodc1
      IntegralHeight              - изменение размеров элемента управления, чтобы отобразить точное число
                                  полных строк
      MatchEntry                  - расширенный поиск для помещения элементов в список, генерирумый
                                  элементом управления DataCombo
      ListField                  - Podstanc
      RowSource                  - Adodc1
      SelectedItem               - возвращает закладку для строки выбранного элемента
      Text                     - Подстанция
      Visible                    - число видимых элементов в списке.
     Смирнов                                       стр. 5                 Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                        Дата печати
6/9/2011 11:35:00 PM

               Сначала необходимо оформить все свойства в соответствующем Adodc, чтобы иметь
      возможность их выбрать в свойствах DataCombo (BoundColumn, DataField, ListField), которые
      осуществляют оформление скроллинга.
               Значение выбранного поля хранится в DataCombo1.BoundText

                                      7.2. DataList – развернутый список
                                               (обычно одно поле):

                1+2) Связанные две таблицы с DataCombo и DataList:

                                  RowSource             - источник данных (откуда)
                                  DataSource            - источник данных (куда)
                                  ListField     - поле показа (наименование).



                                7.3. DataCombo – комбинированный список.
                                            (обычно одно поле):
                  При развернутом списке и побуквенном вводе в поле происходит переход на
             соответствующее поле.
                  Style – вид списка:
                                0 – раскрывающийся (с возможностью редактирования поля)
                                1 – развернутый (список открыт).

                                          7.4. DataGrid – скроллинг БД.
                                     ( с возможностью редактирования полей):

      DataSource = Adodc1
      TabAction = 2 – dbgGridNavigator – перемещение клавишей <Tab> по полям таблицы Grid
      grdDataGrid.Caption = "Сортировка по Названию, Месяцу и Дню" (заголовок)


             В контекстном меню Grid – Edit – редактирование.
             Перестановка поля: Сначала Cut, потом в новом месте Paste.

                                       Строки         - Row
                                       Столбцы        - Col
                                (подсчет идет с нуля – 0).

                                            Возврат значений из Grid :

            DataGrid1.Row = 0         ' Строка – счет с ноля – 1-я строка
            DataGrid1.Col = 2          ' Столбец – счет с ноля – 3-й столбец
            Naim_tip.Text = DataGrid1.Text (запись в текстовое поле из поля Grid).

            Указание формата реквизита – «Личные страницы» – пункт «Формат». Выбрать поле из
      списка. Указать «Format type» – «Custom» (обычный). В нем указать свой формат. Например, для
      числа с «плавающей» точкой - ###.## (123.45).

                                      Работа со столбцами в Программном коде:

                                                ' Удаление лишних столбцов
             Dim i As Integer
     Смирнов                                       стр. 6                 Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                        Дата печати
6/9/2011 11:35:00 PM
             For i = 1 To grdDataGrid.Columns.Count - 1
               grdDataGrid.Columns.Remove 1
             Next i
                         ! Всегда удаляется 1-й столбец – иначе ошибка!

                                     ' Добавление столбца (справа от последнего):
             Dim c As Column

             Set c = grdDataGrid.Columns.Add(grdDataGrid.Columns.Count)
             With c
               .Visible = True
               .Width = 4500
               .Caption = "Название"
               .DataField = datPrimaryRS.Recordset.Fields("Название").Name
               .Alignment = dbgLeft
             End With


                                 4+2) Связанные две таблицы с DataGrid и DataList:

                                    На примере стандартной БД «Nwind.mdb». Где:

                                -    таблица Suppliers – компании-поставщики;
                                -    таблица Products – продукция.

            SupplierId (идентификационный номер компании) одинаковый в обеих БД.
            По нему из после выбора компании в DataList можно показать все продукты, поставляемые
      этой компанией.
                                                      В DataList :
        -    RowSource – AdoSuppliers (ADODC) – свойство определяет: какой источник данных
             поставляет данные для свойства ListField
        -    ListField – CompanyName – имя поля в таблице
        -    BoundColumn – SupplierId. После щелчка на поле в DataList свойство BoundText возвращает
             значение поля SupplierId, связанного с компанией. Оно будет использовано в запросе к
             таблице Products
        -    DataSource – Adodc
                 Программный код:
        Private Sub Datalist1_Click()

      Dim strQuery As String
      StrQuery = “Select * from Products Where SupplierId = “ & Datalist1.BoundText
      With Adoproducts
              .RecordSource = strQuery
              .Refresh
      End With
      With DataGrid1
              .Clears fields
              .ReBind
      End With
      End Sub
                                    7.5. MshFlexGrid – скроллинг БД
                                 ( без возможности редактирования полей):

                 - TabAction – перемещение в списке при нажатии кнопки <Tab>:
     Смирнов                                           стр. 7                 Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                            Дата печати
6/9/2011 11:35:00 PM
                                        Control – по элементам управления;
                                        Column – по столбцам;
                                        Grid    - по таблице.

                - Split         - разбиение таблицы на части;

                                Ширина столбца регулируется только программно:
                Имя MshFlexGrid.ColWidth(N) = K, где
                      N – номер столбца
                      K – ширина столбца (1000 – по умолчанию; 2000 – в два раза шире).
                          Столбец 0 – первое серое поле слева.

                                Центрирование полей вызывается командой:
                Имя MshFlexGrid.ColAlignment(N) = 2
                                             Установка фокуса:
                Имя MshFlexGrid.SetFocus
                                             Подключение к БД:
                При использовании двух таблиц:
                       ADODC объявляется на основную таблицу
                       Показ полей из таблиц производится с помощью кода SQL (см. 15.14.)




                          7.6. ListBox – развернутый список (без подключения к БД)
                                               (обычно одно поле):

                Добавление в ListBox –
                List1.AddItem " N    Дата                Время               Краткое"

                Columns – количество колонок (в них распространяется общий список)

                           8. Связь спискового элемента с Базой данных:
                                                8.1. Элемент AdoData

              AdoData – связь между поставщиком данных (DataProvider), соответствующим
   спецификации OleDB, и связанных (DataBound) списковых элементов управления, которым присуще
   свойство Data Source. Аналогичен элементу Data из ВБ версии 5.
             AdoData   – это графический объект с кнопками Back и Forward.
             Функции:
                     связь с локальными или удаленными БД;
                     открытие таблиц БД или набора записей на основе запроса SQL;
                     передача значений полей данных;
                     ввод новых записей;
                     корректировка записей.

                                           Свойства:

                                           Имя – Adodc1

                                        Connection (обязательно) – связь с Базой данных:
                                -         Кнопка <Build>;
     Смирнов                                          стр. 8                Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                          Дата печати
6/9/2011 11:35:00 PM
                                   -     Выбирать из списка Jet 3.51;
                                   -     выбрать базу;
                                   -     кнопка <Применить>;

        RеcordSource (обязательно) – запрос SQL для выбора полей из баз данных. Нажатием
   поля «…» открывается экран для ввода запроса SQL. После окончания ввода нажать кнопку
   “Применить”. Необходимо быть внимательным с названиями баз данных и их полей. При
   ошибках оператор правильно не отработает !!!

                                                          Примеры:

         - Select * from CES (выбор всех записей из базы данных)
         - Select * from CES where res = Naim_res (выбор всех записей из базы данных), которые
       соответствуют условию, указанному в фразе Where
       - при перечислении полей поименно (вместо символа «*») названные по-русски поля необходимо
   брать в квадратные скобки: «[]».
         - фраза Order by с именем поля после фразы Where указывает на режим сортировки.

             Внимание: При обьявлении Баз данных и полей в Access лучше давать по-английски.
                         Русские буквы «Ч» и «Ц» (и неизвестно какие ещѐ!) при обработке в
                         Adodc не проходят ! Или имена указывать в квадратных скобках!

                                         8.2. Понятие – Набор записей:

        Под набором записей (recordset) понимается конструкция данных, которая представляет
   некоторое подмножество записей, выбираемых из базы данных.

                                                8.3. Закладки Bookmarks
                                                               и
                                                      Набор SelBookmarks:


             Закладки Bookmarks используются для запоминания положения курсора на записи.
           Пример получения номера закладки:
                   varBookmark = datPrimaryRS.Recordset.Bookmark (при редактировании)
           Пример возврата положения курсора на записи:
                                datPrimaryRS.Recordset.Bookmark = varBookmark
           Набор SelBookmarks используется, когда Пользователю необходимо выбрать несколько
      несмежных записей (щелчки мышью при нажатой клавише <Ctrl>).

                                                   Программный код:

      Dim i as Integer
      Dim intCount as Integer
      IntCount = DataGrid1.SelBookmarks.Count-1
      Redim arrSelBK(intcount) „ массив для хранения закладок
      For i = 0 to intCount
        ArrSelBK(i) = DataGrid1.SelBookmarks(i) „ могут быть еще операции
            Next i
                                     Запись в Bookmarks программно:
                        Например, для покупателя, который потратил > $100.

             Dim rs As RecordSet
     Смирнов                                        стр. 9               Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                       Дата печати
6/9/2011 11:35:00 PM
             Set rs = Adodc1.Recordset
             While not rs.Eof
                If rs!SupplierId = 12 Then
                         DataGrid1.SelBookmarks.Addrs.Bookmarks
                End if

             Rs.MoveNext
             While end

                                    8.4. Split – разбиение таблиц на части:
                                             (для DataGrid и MshFlexGrid).

             Пункт меню «Edit” – контекстное меню – Split (разделить).
             Удалить Split – там же - Remove.
             Редактирование разбиения : Properties – Property pages.
             Кнопка разбиения находится в левом нижнем углу элемента управления таблицей.
             Разбиение программным путем:
                       - DataGrid1.Splits.Add1
                       - Count (счет набора Splits). Более 2-х разбиений использовать неудобно.

             Редактирование:
                      - 1-я (левая сторона) – переносим двойную разделительную черту на грань
                          разделения;
                      - 2-я (правая сторона) – поля перемещаем горизонтальным «ползунком».

           Layout (план, компоновка, размещение) - поля в Split-ах 1 и 2. Указать первое поле в
      разбиении, отметить кнопку «Locked» и указать команду «Применить». Так сделать на каждом
      разбиении.

             Вычисляемые поля (calculate field), которые      могут отсутствовать в таблице:

             В Record source указать:
                Select Products Name, UnitPrice, (UnitPrice*0,2) As Tax From Products

                                       9. Диалоговые элементы:

                           9.1. Msgbox – выдача предупреждающего сообщения:

            Это модальное окно – выход только после нажатия соответствующей кнопки для выдачи
      предупреждающих сообщений.
         При контроле правильности ввода данных в поля, а также результатов их выбора из списка, или
   при наличии прочих ошибок пользователя, очень удобно пользоваться оператором выдачи сообщений –
   Msg().
        MSG(текст сообщения).
        Оператор MSG появляется на экране и высвечивается до тех пор, пока не будет нажата
      кнопка <OK> на его окне.

                            Стандартные константы для аргументов Flags ф-и MsgBox:

              Константа                    Значение                          Описание

             VbOKCancel                         1             Выводит кнопки ОК и Cancel
             VbAbortRetryIgnore                 2             Выводит кнопки Abort, Retry и Ignore
             VbYesNoCancel                      3             Выводит кнопки Yes, No, Cancel
     Смирнов                                        стр. 10              Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                      Дата печати
6/9/2011 11:35:00 PM
             VbYesNo                            4             Выводит кнопки Yes, No
             VbRetryCancel                      5             Выводит кнопки Retry, Cancel
             VbCritical                         16            Выводит пиктограмму Critical Message
             VbQuestion                         32            Выводит пиктограмму Warning Query
             VbExclanation                      48            Выводит пиктогр. Warning Message
             VbInformation                      64            Выводит пиктогр. Informat Message
             VbDefaultButton2                   256           Вторая кнопка – по умолчанию
             VbDefaultButton3                   512           Третья кнопка – по умолчанию

                        Предопределенные константы результирующих значений ф-и MsgBox:

             Константа             Значение                   Выбранная кнопка

             VbOk                               1                           ОК
             VbCancel                           2                           Cancel
             VbAbort                            3                           Abort
             VbRetry                            4                           Retry
             VbIgnore                           5                           Ignore
             VbYes                              6                           Yes
             VbNo                               7                           No

                                         Пример обработки кнопки <Удаление>:

               Dim Message As String        ' Сообщение
               Dim ButtonasIcons As Integer „ стандартная ф-я
               Dim title As String                „ титульная строка ссобщения
                Dim Response As String            „ оператор MsgBox

               Message = "Вы уверены, что хотите Удалить запись?"
               ButtonasIcons = vbYesNo + vbQuestion
               title = "Обработка кнопки <Удаление>"
               Response = MsgBox(Message, ButtonasIcons, title)
               If Response = vbYes Then
                  … ' команды Удаления по "Y"

             End If
                                            10. Common dialog:
             Общие элементы OCX, которые позволяют выбирать цвет и т.д.

                             11. Clipboard – работа с буфером обмена:

                              12. Графические элементы управления
                                (отображение картинок и графики):

                                        12.1. Picture – графическое окно:

                         -   обеспечивает контейнер для других элементов управления;
                         -   обеспечивает метод печати или графический метод.

             Свойство Picture (Картинка) определяет отображаемую картинку.
             Можно программно заменить картинку с помощью команды LoadPicture:

                Имя эл-та Picture.Picture = LoadPicture(“путь\имя картинки”). Пример:
     Смирнов                                        стр. 11                Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                        Дата печати
6/9/2011 11:35:00 PM
           aaa = "C:\PROGRAMM\ACCESS\" & Obraz.Text                     aaa - поле, содержащее название
      файла картинки
           Image1.Picture = LoadPicture(aaa)

       Свойство Autosize – если True – автоматически изменяет размеры окна вывода картинки. Но оно
   может перекрывать другие элементы, поэтому все картинки нужно протестировать.
       В окно элемента Picture можно помещать другие элементы (например, Image), как в контейнер
   для создания панели инструментов или строки состояния.
       Align (Выровнять)= Top и т.д. – определяет место «прикрепления» графического окна к
   соответствующему краю формы.
       Встроенные элементы управления перемещаются вместе с графическим окном.
       Print (Печать) – вывод текста в графическое окно.
       Метод Cls – удаление текста.
       Методы Circle (окружность), Line, Point (точка) и Pset (набор точек) можно использовать для
   вычерчивания графических элементов.
       Свойства DrawWidth, FillColor и FillStyle позволяют изменять внешний вид графических
   элементов.
       Анимацию (мультипликацию) можно делать с помощью PaintPicture.

                                     12.2. Image – отображение картинок:

        Аналогичен Picture, но используется только для изображения картинок.
Не может выступать в качестве контейнера для других элементов.
Можно программно подставлять картинку с помощью свойства Picture и Load Picture:
Имя эл-та Image.Picture = LoadPicture(“путь\имя картинки”)
       Image не имеет свойства AutoSize.
       Зато есть свойство Stretch (растягивание). По умолчанию, равно <False> - размеры элемента
   изменяются в соответствии с размерами картинки.
       Image распознает событие Click. Поэтому его можно использовать при создании кнопок с
   картинками для панели инструментов.
       В поставке Вижуал Бейсика есть Icon Library – библиотека «иконок».
       Свойство BorderStyle = 1 – появляется бордюр вокруг кнопки.
                                                12.3. Shape – контур:

       Не поддерживает никаких событий – декоративные цели.
       Свойство Shape – вид контура : прямоугольник, квадрат, овал, окружность, а также фигуры с
   округленными углами.

                                                 12.4. Line – линия:

             Тоже не поддерживает никаких событий.

                                         Создание Баз данных – VisData:
             ….

                                 13. Создание MDI интерфейса
                          – многодокументное меню (типа Word, Excel):

                                        13.1. Создание «простого» меню:

        Меню «Инструменты» ( «Tools» ) – пункт «Редактор меню».
        Заполнить поля : Caption (заглавие меню и пункта меню) & Name (его логическое имя).
        Новое меню или его подпункт – Next.
        Выделить подпункт – «  ». Перед его именем появляются «…».
     Смирнов                                         стр. 12             Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                      Дата печати
6/9/2011 11:35:00 PM
        Снова ввести меню – «  ». Наименование сдвинется влево.
        Вставка между введенными пунктами – кнопка « Insert ».
        Щелчок мыши на имени меню или пункта в их перечне – выход в его программный код.
        Показ разделительной черты (Separator) : в Caption ввести «-». Имя указать любое.

        Внимание: Имена Меню и подменю не должны совпадать между собой, а также с именами
                  Форм и переменных.

                              14. Создание и вызов файла Помощь (Help):

           «Проект» -- пункт «Свойства» в поле «Имя файла помощи» ввести путь и имя help-файла.
      Расширение файла – Hlp.
           В форме на элементе управления в реквизите HelpContexId ввести оригинальный номер
      (длинное целое) для связи с Help-файлом.

                              15. Программирование (программный код):

             Вижуал Бейсик ориентирован на обработку событий!.
           Двойной щелчок мыши на любом элементе управления – вход в процедуру обработки этого
      события.
           1-я процедура в модуле – Form resize(). Два щелчка мыши на пустом месте поля формы.
           Запуск формы – Форма2.show (Форма2 – имя формы).
           Вызов другой процедуры – Call имя-процедуры
           Выход из процедуры – Unload(имя процедуры).
           Выход из Проекта (1-я форма) – End.
           Beep – звуковой сигнал.

                                          15.1. Процедуры и функции:

      Создание новой процедуры: меню Tools – подменю Add. Ввести имя и выбрать тип процедуры.

                                                15.1.1. Подпрограммы (Sub):

            Подпрограммы (Sub) не возвращает значения. Это блок кода, который выполняется в ответ
      на событие.

             [Private|Public] [Static] Sub procname (arguments)
                 statements
             End Sub

       По умолчанию устанавливается атрибут Public, т.е. подпрограмму можно вызывать из любого
   места Приложения.
       Аrguments – параметры – обьявление значений, которые передаются в (из) вызывающей процедуры.

                                                Есть два вида подпрограмм:

      - общие процедуры (general procedures), указывающие приложению, как выполнять конкретную
   задачу. Специально вызываются приложением;
      - процедуры обработки событий – прикреплены к формам и элементам управления, т.к.
   активизируются, когда на них происходит событие (например, щелчок мыши на элементе управления):
               - имя процедуры обработки событий состоит из:
                      - имени элемента управления (свойство name);
                      - символа «_»;
                      - имени события (например, Click).
     Смирнов                                       стр. 13              Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                     Дата печати
6/9/2011 11:35:00 PM
      Эти параметры можно выбирать из списка Object (Обьект) и Procedure (Процедура) в строке
      выбора на кодом (слева и справа).

                                       15.1.2. Процедуры-функции (Function):

        В Вижуал Бейсике используются встроенные функции (Build in). Например, Sqr (вычисление
   квадратного корня), Cos (косинуса) и т.д. Они аналогичны функциям ДОСовской версии Q_Basic.
        Можно писать и свои новые функции.

              [Private|Public] Function procname (arguments) As type
                  statements
              End Sub

         В отличие от подпрограммы функция возвращает значения в вызывающую процедуру.

                                    15.2. Автоматизация написания кода:

       а) при вводе имени процедуры, команды и т.д. появляется список со свойствами: AutoList mem-
   bers (члены автоматического списка). Клавиша <Tab> завершение набора. Подключение такой
   возможности <Ctrl> + <J>.

        б) AutoQuick Info (Быстрая автоматическая информация) - формат оператора.
        в) написание оператора на нескольких строках с помощью « _» в конце не последней строки.
        г) через «:» можно разместить несколько операторов на одной строке, аналогично Q_basic.
        д) комментарии начинаются с символа «‟».

                                                  15.3. Отладка:

         - ввести оператор Stop;
         - далее после запуска кнопкой <F5> на каждой следующей строке нажимать клавишу <F8>.

         Можно увидеть значения реквизитов при наличии на них левой кнопки мыши.

                              15.4. Функции Recordset, применяемой с Adodc :

         - Update – операция записи изменений;
         - AddNew – добавляет новую запись, после ввода данных необходимо применить Update
         (Adodc1.Recordset.AddNew);
         - Requery – повторяет акт-запрос и обновляет отображаемые данные (с Adodc выдает ошибку);
         - Refresh – обновляет данные в скроллинге после их редактирования;
         - MoveNext – читает следующую запись;
         - MoveLast – становится на последнюю запись в наборе;
         - MoveFirst - становится на первую запись в наборе.
         - Find       - поиск записи в наборе (FindFirst, FindLast и т.д., которые не работают?).
          Пример: datPrimaryRS.Recordset.Find "[КраткоеНаименование] = '" & Naim_kr & "'"
                      - использование FindFirst при ручном кодировании:
                          rs.FindFirst "[Имя] = '" & KolAng(Index) & "'"
                              If rs.NoMatch Then – проверка на наличие выбранной записи.

                                            15.5. Работа с Наборами :

         1)      Оператор For Each … Next работает быстрее, чем For … Next
         2)      Лучше избегать фраз Before и After при добавлении записей в набор
         3)      Желательно использовать наборы с ключами, а не массивы
         4)      Использование фразы With делает программный код быстрее и более выразительным.
     Смирнов                                      стр. 14                Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                      Дата печати
6/9/2011 11:35:00 PM

                                         15.6. Занесение из поля в поле:

                                Naim2.Text = Форма2.naim1.Text (поле из другой формы).

           Если в Select идет сравнение с числовым полем, то текстовое поле перед сравнением
      необходимо записать в числовое поле того же формата, что и сравниваемое поле в Select.
      Аналогично необходимо поступать и при вычислениях.

                                        15.7. Печать двойных кавычек:

        Так как строки, присвоенные переменным и свойствам, заключаются в двойные кавычки (“ ”),
   следует ввести дополнительные двойные кавычки для каждой их пары, которая должна быть отражена в
   строке.
        Вижуал Бейсик интерпретирует два идущих подряд символа двойных кавычек, как один.
        Можно также использовать ASCII-код (34): Chr(34) для отображения кавычек.
        Пример:
                      df = Chr(34) & Scr_Ceh.Naim.Text & Chr(34)

Вышесказанное чаще всего используется при обработке в программном коде запроса SQL.
        Желательно текстовое поле или переменную до использования в запросе занести в
   промежуточное поле с использованием кавычек и затем слить с остальной частью запроса. Его
   также легко увидеть в режиме отладки и убедиться в правильности занесения значения переменной!

                                         15.8. Работа с полем типа Date:

           При сравнении поля типа Date с текстовым полем, содержащим Дату, это текстовое поле
      должно быть заключено с двух сторон в решетки – « # »!!!
           «День», «Месяц» и «Год» должны быть разделены символом « / » (при том, что и Access и
      Вижуал Бейсик записывают разделителем этих реквизитов символ « . » ???

                                Пример программного кода с выбора даты из диапазона дат:

             sd = "Select * from KartPers where DataRojd > #" & DataRojd1.Text & "# _
                   And DataRojd < #" & DataRojd2.Text & "#"
              datPrimaryRS.RecordSource = sd
              datPrimaryRS.Refresh

                             Пример программного кода расшивки даты на дни, месяцы и года
                                 с последующим ее слитием в дату с разделителем « / »:

             DataRojd2.Text = Day(Now) & "/" & Month(Now) & "/" & Year(Now) , где

                Now – функция определения текущих Даты и Времени (в которой разделитель также
   символ « . » ???
                Day(), Month() и Year() – функции определения дня, месяца и года, содержащихся в Дате.

                   Основные функции работы с полем типа Date (кроме указанных выше):

         IsDate(имя поля) – проверка правильности ввода Даты.
         Если Дата не указана – она устанавливается на 30.12.1899.
         Если не указано Время – оно устанавливается на полночь.
         DateSerial(Дата, Месяц, День) – создает значение Даты. Поля все числовые.
         DateValue(имя поля) – передает значение Даты из текстового поля, преобразовывая его в поле
         типа Дата (т.к. в нем содержится и время).
     Смирнов                                      стр. 15                 Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                       Дата печати
6/9/2011 11:35:00 PM
         DateDiff("kod", Data1, Data2) – функция вычисления разницы между датами в днях, месяцах и
      т.д., где:
                           Yyyy      - разница в годах;
                           q        - Квартал.
                           m        - Месяц.
                           y        - День года.
                           d        - День месяца.
                           w        - День недели.
                           ww       - Неделя.
                           h        - Часы.
                           n        - Минуты.
                           s        - Секунды.

                Пример применения данной функции для вычисления возраста на текущую дату по Дате
                                               рождения:

             Vozrast.Text = DateDiff("yyyy", DataRojd.Text, Now)

             DatePart(“параметр, поле типа Дата”) – показ дня недели, месяца, года;
                                                          Квартала, года.
Пример:

                               Soob.text = "День недели: " & DatePart("w", Форма4.Data_Prot)

             Format(поле типа Дата, "параметры")
Пример:

                 Soob.text = Format(Форма4.Data_Prot, "dddd, d mmmm yyyy") ' Возвращает "День
                                    недели, число, полный месяц и год"
                                  Text1.Text = Format(Now, "dddd, d MMMM yyyy")
             - возвращает текущую дату в том же формате
                                           Если mmm - месяц из трех букв (янв).

                                   Основные функции работы с полем типа Time:

            TimeValue(имя поля) – передает значение Времени из поля типа Дата (т.к. в нем содержится
      и время).

                                     15.9. Обработка события Click
                           (щелчок мыши, нажатие клавиш <Tab> или <BackSpace>):

             Имя процедуры имеет расширение Click.
             Для программной проверки наличия нажатия кнопки мыши (и т.д.) используется фраза:
                       Имя события.value = Vb.Checked – да (есть нажатие)
                              |
                 имя процедуры без Click Vb.Unchecked – нет (нет нажатия)

                            Обработка событий Click при нажатии кнопок “Мыши”:

             MouseDown – нажатие любой кнопки мыши.
             MouseUp – при отпускании клавиши мыши.
             MouseMove – при перемещении мыши.

                         Обработка событий Click при нажатии кнопок Клавиатуры:
     Смирнов                                          стр. 16                 Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                           Дата печати
6/9/2011 11:35:00 PM
        KeyDown – любая клавиша нажата
        KeyUp – клавиша отпущена
        KeyPress – клавиша, соответствующая соответствующему символу ASCII (буквы, цифры, знаки
   препинания, <Tab>, <Enter>, <BackSpace>) нажата.
        ANSI – American National Standarts Institute – 256 символов.
        ASCII – American Standards Code for Information Interchange) – 127 символов – подмножество AN-
   SI.
                                       15.10. Потеря и установка фокуса.

                                         Пример для группы полей по индексу:

             Private Sub txtFields_LostFocus(Index As Integer)
                If Index = 0 Then
                        txtFields(7).SetFocus
                End If
             End Sub
                                15.11. Проверка наличия заполнения поля:

         IsEmpty(имя переменной).
         Если переменная пустая, выдается значение <True>, если имеет содержимое, то <False>.

                                          15.11. Условные конструкции:

                                          15.11.1.      Логический оператор (If):

                                                    If Условие-1 Then
                                                      ElseIf Условие-2 Then

                                                    ElseIf Условие-3 Then
                                                    ……
                                                    Else
                                                    ….
                                                    End If

                                                 15.11.2. Оператор Case –
                                       ( обработка вариантов значений поля):

                                  Select Case анализируемое выражение (переменная)
                                  Case Результат-1
                                  …             - операции
                              Case Результат-2 (и т.д.)
                                  …                - операции
                                                Case Else
                                                …                 (иначе)
                                                End Select

                                        15.11.3.     Оператор цикла – For … Next :

                                                Аналогичен оператору Q_basic.

                                                For I = N to K
                                                …                 операции
                                                Next I
     Смирнов                                         стр. 17                Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                         Дата печати
6/9/2011 11:35:00 PM
                                15.11.4.     Оператор обработки по условию – Do while :

                                            Do while условие
                                            … операции
                                            Loop

            Пока условие истинно выполняются операции, находящиеся в «теле» цикла.

                                15.11.5.     Оператор обработки по условию – Do until :

                                        Do until условие
                                        …                      операции
                                        Loop

            Цикл не выполняется вообще или выполняется много раз.
            Прекращение цикла - Exit Do.

                                           15.12. Работа с БД без ADODC.

             Чтобы определение БД через переменную работало нужно объявить библиотеку:
             ' References: Microsoft DAO 3.51
             ' Подключение: "Проект" (Project) - "Информация" (References) -
             ' установить флажок перед библиотекой MS DAO 3.51 Object Library + ' <OK>
                 Ещѐ имеются в наличии библиотеки:
                              VB for Application
                              VB runtime objects and procedures
                              VB objects and procedures
                              Ole automation
             Остальные библиотеки автоматически добавляются в процессе подключения классов.
                    ' описание БД и таблицы через переменые
                            Dim db As Database
                            Const DBPath = "C:\Program Files\Расписание\"
                            Set db = OpenDatabase(DBPath & "RASPISanie.MDB")
                            Dim rs As Recordset
                            Set rs = db.OpenRecordset("Select * from [Задачи]")

        „ Цикл последовательного чтения RS с показом полей в ListBox (для показа БД используется простой ListBox,
а не DataList).

   Do Until rs.EOF
      List1.AddItem rs.Fields("[ДатаОповещения]") & " " & rs.Fields("[КраткоеНаименование]")
      nom1 = nom1 + 1
      Text3.Text = Day(rs![ДатаОповещения]) & "/" & Month(rs![ДатаОповещения]) & "/" &
Year(rs![ДатаОповещения])
       If Text3.Text < Текст1.Text Then ' < #Текст1.Text # - решетки не нужны!
         nom2 = nom2 + 1
       End If
     rs.MoveNext
  Loop
  rs.Close
  Set rs = Nothing
                                                15.13. Оператор Format
                                             (форматированный вывод поля)

                              Format(поле, "параметры")
                              Пример:
     Смирнов                                            стр. 18            Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                        Дата печати
6/9/2011 11:35:00 PM
                               Format(Month(rs![ДатаОповещения]), "00") –
                               В данном примере в поле «Месяц» явно выводятся нули.

                                                   15.14. SQL-запросы.

                                          Запросы, объединяющие две таблицы

         'Left Join - все задачи и соответствующие им подзадачи
         sd = "SELECT [Задачи] . [КраткоеНаименование], [Задачи]. [ДатаОкончания], [ПодЗадачи].
   [КраткоеНаименованиеПодЗадачи], [ПодЗадачи]. [ДатаОкончания] FROM [Задачи] Left Join [ПодЗадачи]
   on [Задачи].[Счетчик] = [ПодЗадачи].[КодЗадачи]"
         'Right Join - обратное от левого обьединения
         'sd      =      "SELECT      [Задачи].    [КраткоеНаименование],   [Задачи].   [ДатаОкончания],
   [ПодЗадачи].[КраткоеНаименованиеПодЗадачи], [ПодЗадачи].[ДатаОкончания] FROM [Задачи] Right join
   [ПодЗадачи] on [Задачи].[Счетчик] = [ПодЗадачи].[КодЗадачи]" 'Group by Ceh.Naim"
         ' inner join - возвращает только Задачи с Подзадачами
         'sd = "SELECT [Задачи].[КраткоеНаименование], [Задачи]. [ДатаОкончания], [ПодЗадачи].
   [КраткоеНаименованиеПодЗадачи], [ПодЗадачи].[ДатаОкончания] FROM [Задачи] inner join [ПодЗадачи] on
   [Задачи].[Счетчик] = [ПодЗадачи].[КодЗадачи]"

            Примечание: В коде пробелы между именем таблицы и полем отсутствуют!

                                          15.15. Обработка Даты и Времени.

            Дата из Таблицы при чтении RecordSet через переменную описывается полем в формате даты (As
   Date).
         Поля для выбора диапазона заносятся в текстовые поля на экране с форматированием через «/» и
   ручным форматом поля «00/00/0000».
         DataRoj.Text = Format(Day(rs![Дата рождения]), "00") & "/" & Format(Month(rs![Дата рождения]), "00")
   & "/" & Format(Year(Now), "0000")
         Причем, день, месяц и год тоже нужно форматировать с полным количеством символов, иначе отбор
   работает не правильно!

                          15.16. Основные функции (кроме обработки строки дат).

            Оператор Mod - Возвращает остаток при целом делении двух чисел (значение по модулю). Синтаксис:
                                     результат = число1 Mod число2
            Пример: Расчет юбилеев (кратность 10)
                 ostat = vozrast Mod 10
                 If ostat = 0 Then
                         Ura = "         Ура!!! " (юбилей)

                                15.17. Занесение данных в ADODC (RecordSet).

                         datPrimaryRS.Recordset("КраткоеНаименование") = "Проба"

                                     15.18. ОператорPrint –вывод информации.

                                     Debug.Print tab(30) aaa tab(50) bbb

                                     Tab(N) – позиция вывода информации.

                                              16. Дизайнер формы:
     Смирнов                                                 стр. 19                          Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                                           Дата печати
6/9/2011 11:35:00 PM
             Позволяет выбрать БД и по ней создать форму с использованием:

             … И кнопок : ввод, редактирование и т.д.

                                   17. Создание исполняемого модуля:

                                                                Есть два пути:

                          -    меню « Файл » - пункт « Make Exe» ;
                          -    меню «Запуск» – режим «Запуск с компиляцией».

                                                18. Обработка Цвета:

                                                         Константы цвета:

                   Константа Значение Описание переменной

                   'vbBlack         0x0                           Черный
                   'vbRed           0xFF                          Красный
             '     vbGreen          0xFF00                        Зеленый
             '     vbYellow         0xFFFF                        Желтый
             '     vbBlue           0xFF0000                      Синий
             '     vbMagenta        0xFF00FF                       Розовый
             '     vbCyan           0xFFFF00                       Голубой
             '     vbWhite          0xFFFFFF                       Белый

                    Показ цвета с помощью функции QBColor (Цвет):

                 Обязательный аргумент цвет задается целым числом в диапазоне от 0 до 15.

                                Ниже перечислены допустимые значения аргумента цвет:

                          Номер Цвет                      | Номер                  Цвет
                          --------------------------------|---------------------------------------
                             0 Черный                                 8       Светло-серый
                             1 Темно-синий                            9       Синий
                             2 Темно-зеленый                         10       Зеленый
                             3 Бирюзовый                             11       Голубой
                             4 Малиновый                            12      Красный
                            5 Сиреневый                              13      Розовый
                             6 Оливковый                             14      Желтый
                             7 Темно-серый                           15      Белый

                                             19. Символы кодировки:
                                                      Chr (13) – возврат каретки
                                                      Chr (9) – табуляция.
                                                      Chr (10) – перевод строки.
                                                      Chr(34) - двойные кавычки

                                           20. Приоритет операторов:
                                         - возведение в степень (^)                     1
                                         - умножение (*), деление (/)                   2
     Смирнов                                         стр. 20                      Дата создания 22.11.2000 11:15:00
     2efac3fa-e0e1-4a8b-8c73-676ff5ee8eff.doc                                                               Дата печати
6/9/2011 11:35:00 PM
                                     - деление нацело (\)                    3
                                     - деление по модулю (Mod)               4
                                     - сложение (+), вычитание (-)           5
                                     - конкатенация строк (&)                6

                                21. Функции обработки строк в VB:
             - сравнивает две строки                                         - StrComp
             - преобразует строку в верхний или нижний регистр               - Lcase, UCase
             - создает стро      ку из повторяющегося символа                          - Space, String
             - определяет длину строки                                       - Len
             - форматирует строку                                            - Format
             - выравнивает строку                                            - Lset, RSet
             - находит одну строку в другой                                  - InStr, InstrRev
             - извлекает часть строки                                        - ф-и Mid, Left, Right
             - вставляет одну строку в другую                                - оператор Mid(строка,start,length),
               где start – позиция начала выделения подстроки.
             - заменяет части строк                                          - Replace
             - обрезает пробелы в начале и/или конце строки                  - Ltrim, Rtrim, Trim – отсечение
               пробелов с двух сторон.
             - устанавливает способ сравнения строк                          - Option Compare
             - работает со значениями ASCII и ANSI                           - Asc, Chr
             - конвертирует строки                                           - StrConv
             - обрабатывает массивы строк                                    - Filter, Jojn, Split.

                                        22. Линейки прокрутки:
                                    22.1. Вертикальная линейка (VScrool):
                             Код обработки при задании в текстовом поле значений от 0 до 100:

                                          Private Sub VScroll1_Change()
                                          Text6.Text = Str(VScroll1.Value)
                                          End Sub

                                          Private Sub VScroll1_Scroll()
                                          VScroll1_Change
                                          End Sub

                                                         Свойства:

                        -   Min (100) и Max (0) - перепутаны местами;
                        -   SmallChange и LargeChange – диапазоны изменений.
                        -

				
DOCUMENT INFO
Shared By:
Categories:
Stats:
views:71
posted:6/10/2011
language:Bulgarian
pages:20