Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Суммовые поля в форме




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

Относительно ошибки в итоговых полях, получаемых встроенной функцией =Sum(), м ожно посмотреть пример:

 

  • Создаем форму MYFORM

 

 

  • Создаем на ней элемент управления MYLISTBOX - типа LISTBOX

 

 

  • Источником данных для этого поля конструируем запрос, вычисляющий суммы по группам

 

 

  • Создаем кнопку, по нажатию на которую выполняется тестовый код

 

 

  • Делаем событие "Click" для кнопки и пишем следующий код, который обновляет набор записей.

 

 

Public Sub MYBUTTON_Click()

 

Me.MYLISTBOX.RowSource = Me.MYLISTBOX.RowSource

 

End Sub

 

Выглядит это так:

 


Пример можно скачать здесь

Относительно ошибки в итоговых полях, получаемых встроенной функцией =Sum()

 

Элемент TreeView в Visual Basic

Итак, начнем с того, что такое TreeView?

Откройте Explorer (если у вас, конечно, Windows:)) — слева, как вы догадались, TreeView, а справа — ListView. Элемент TreeView обеспечивает средства хранения иерархически структурированных данных. Для хранения рисунков (таких, как папка, флаг Виндов для неопределенного типа файлов и т.п.) используется элемент ImageList — работа с ним довольно проста, и касаться этой темы пока не будем… Откроем новую форму и создадим элемент TreeView, который находится в контроле MS Windows Common Controls. Создадим также CommandButton, в событии Click которого мы и будем всё описывать.

Для начала теория. В этом элементе реализована структура данных, известная как «дерево», а каждый элемент дерева называется узлом (node). Верхний узел дерева называют корневым узлом (root node), а узлы ниже — дочерними узлами (child nodes). Рассмотрим это на структуре Интернета: домен ru — корневой узел, а домен narod для ru — дочерний узел. Домен narod для домена soobcha-vb является родительским. С этим, я думаю, всё понятно.

Теперь посмотрим свойства элемента TreeView: чтобы он выглядел как проводник, надо поставить значение Style равное 7, а LineStyle — 0. Там ещё много свойств, и я думаю, все их описывать не нужно — многие из них стандартные.

Теперь перейдем в окно кода и наберем TreeView1.Nodes, а дальше поставим точку. Увидели: в семейство Nodes входят 5 компонентов, с которыминам и предстоит работать. Начнем с основного и наиболее сложного: Add.

Создадим корневой узел:

TreeView1.Nodes.Add,, "internet", "Internet"

Запустим программу и нажмем на кнопку — увидели? — да, появился узел Интернет. Но пока ничего не понятно — зачем столько запятых и два «Интернета». Давайте продолжим создавать узлы, и всё станет понятно! Введем:

TreeView1.Nodes.Add "Internet", tvwChild, "ru", "ru"

Ввели, а теперь нажимаем на старт и на кнопку, и если вы всё аккуратно ввели, или скопировали отсюда, то появилась ошибка. Начинаем разбиратся: что же мы хотели сделать? Создать дочерний узел ru к корневому Internet — на это указывает значение tvwChild — я думаю, оно понятно. Но откуда ошибка? После этого мы всё ввели правильно, ведь первая строка работала. Осталось одно значение — Internet. Ну, догадались? Именно, в первой строке, если вы внимательно следили за работой программы, в TreeView появилось Internet (с большой буквы), а internet (с маленькой) — это всего лишь ключ. И во второй строке мы указываем не прямое имя, а ключ этого имени, т.е. internet. Исправим, запустим, щелкнем двойным кликом на Internet — и вот он, дочерний узел ru. Создадим, соответственно, ещё пару доменов 1 уровня:

TreeView1.Nodes.Add "internet", tvwChild, "com", "com"
TreeView1.Nodes.Add "internet", tvwChild, "net", "net"
TreeView1.Nodes.Add "internet", tvwChild, "edu", "edu"

Вам не надоело всё время щелкать по Internet, да? — ну, введем:

TreeView1.Nodes.Item("internet").Expanded = True

Сложно — а кто говорил, что просто? Вот мы частично познакомились с компонентом Item. Ну, добавим ещё пару дочерних узлов к ru, тут уже всё понятно — вы и сами можете сделать это.

TreeView1.Nodes.Add "ru", tvwChild, "narod", "narod"
'следуя от дочернего узла к родительскому, вы попадете на сайт Народ.ру
TreeView1.Nodes.Add "narod", tvwChild, "www", "www"
'а следуя отсюда, попадете на сайт, откуда вы это читаете
TreeView1.Nodes.Add "narod", tvwChild, "soobcha-vb", "soobcha-vb"
TreeView1.Nodes.Add "ru", tvwChild, "boom", "boom"
TreeView1.Nodes.Add "ru", tvwChild, "lgg", "lgg"

Теперь сделаем путь к другому сайту бесплатного хостинга — www.boom.ru Все, наверное, введут

TreeView1.Nodes.Add "boom", tvwChild, "www", "www"

И снова ошибка! Просто вы уже привыкли, что ключ совпадает (во всяком случае, по значению — помните историю с регистром?). Но ведь не может быть два одинаковых ключа — как тогда добавлять дочерние узлы? В связи с этим необходимо пользоваться «полным» путем к узлу, т.е. для ru — это было бы internet-ru, для www.narod.ru — internet-ru-narod-www. Тут совпадений быть не может. Достоинства и того, и другого варианта вы поймете со временем: если вы уверены, что будут отсутствовать два узла с одинаковыми именами (хотя такое бывает редко), то имеет смысл оставить первоначальный вариант, а любом другом случае необходимо использовать «полный» путь. Получили вот такой код:

TreeView1.Nodes.Add,, "internet", "Internet"
TreeView1.Nodes.Add "internet", tvwChild, "internet-ru", "ru"
TreeView1.Nodes.Add "internet", tvwChild, "internet-com", "com"
TreeView1.Nodes.Add "internet", tvwChild, "internet-net", "net"
TreeView1.Nodes.Add "internet", tvwChild, "internet-edu", "edu"
TreeView1.Nodes.Item("internet").Expanded = True
TreeView1.Nodes.Add "internet-ru", tvwChild, "internet-ru-narod", "narod"
TreeView1.Nodes.Add "internet-ru-narod", tvwChild, "internet-ru-narod-www", "www"
TreeView1.Nodes.Add "internet-ru-narod", tvwChild, "internet-ru-narod-soobcha-vb" _
, "soobcha-vb"
TreeView1.Nodes.Add "internet-ru", tvwChild, "internet-ru-boom", "boom"
TreeView1.Nodes.Add "internet-ru-boom", tvwChild, "internet-ru-boom-www", "www"
TreeView1.Nodes.Add "internet-ru", tvwChild, "internet-ru-lgg", "lgg"
TreeView1.Nodes.Add "internet-ru-lgg", tvwChild, "internet-ru-lgg-www", "www"

Сложновато, на первый взгляд, но ведь мы получили такую сложную структуру… Теперь поговорим об остальных компонентах Nodes: Count — возвращает число узлов семейства Nodes. Введем:

MsgBox TreeView1.Nodes.Count

У нас появится в окошке количество узлов — в данном случае 12. Вы случайно ни разу не нажимали на вашу кнопку ещё раз? — правильно, появляется ошибка, т.к. ключи уже все созданы, и такие значения уже имеются. Поставьте в начале:

TreeView1.Nodes.Clear

И перед добавлением новых значений TreeView будет полностью очищаться. А если в процессе работы программы надо удалить узел? — правильно, надо воспользоваться командой Remove:

TreeView1.Nodes.Remove ("internet-ru")

Удаляем узел ru, который мы так долго создавали.

А теперь немного о картинках:

TreeView1.Nodes.Add "internet", tvwChild, "internet-org", "org", _
App.Path & "\pic1.bmp", App.Path & "\pic1sel.bmp"

Таким образом показывается картинка, находящаяся в папке, где у вас сохранена эта программа (или вы её ещё не сохранили?), с именем pic1.bmp, и если узел выбран, то с именем pic1sel.bmp. Просто, да? А вот то же самое, только с использованием ImageList (он находится в MS Windows Common Controls-2):

ImageList1.ListImages.Add,, LoadPicture(App.Path & "\pic1.bmp")
ImageList1.ListImages.Add,, LoadPicture(App.Path & "\pic1sel.bmp")
TreeView1.ImageList = ImageList1
TreeView1.Nodes.Add "internet", tvwChild, "internet-org", "org", 1, 2

Номера присваиваются по порядку, но можно и задавать ключ. Намного длиннее, но если вы хотите сделать рисунки для своих папок, а их 100 штук, то неужели вы каждый раз будете прописывать путь к файлу?

Вот мы везде пишем tvwChild, а неужели нельзя по-другому? Может, я хочу вставить следом или до некоторого узла новый — нет проблем.

TreeView1.Nodes.Add "internet-com", tvwNext, "internet-tv", "tv"

Добавить после домена com домен tv, а если перед? — правильно:

TreeView1.Nodes.Add "internet-com", tvwPrevious, "internet-su", "su"

А хотите первым поставить новый узел:

TreeView1.Nodes.Add "internet-com", tvwFirst, "internet-to", "to"

А последним:

TreeView1.Nodes.Add "internet-com", tvwLast, "internet-med", "med"

Вот и закончились варианты…

Здесь я привел лишь описание TreeView, методы же работы с ним, такие как поиск, сохранение, загрузка, намного сложнее.

Создание всплывающей формы или отчета

 

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

1. Откройте форму или отчет в режиме конструктора

2. Дважды щелкните область выделения формы (Область выделения формы –. квадрат на пересечении линеек в верхнем левом углу окна конструктора форм. Используется для выполнения операций на уровне формы, таких как выделение формы. или область выделения отчета. Область выделения отчета – квадрат на пересечении линеек в верхнем левом углу окна конструктора отчетов. Используется для выполнения операций на уровне отчета, таких как выделение отчета, чтобы открыть окно свойств. Окно свойств – окно, предназначенное для просмотра и изменения свойств таблиц, запросов, полей, форм, отчетов, страниц доступа к данным и элементов управления.).

3. Выберите значение Да для свойства Всплывающее окно (PopUp).

4. Выполните одно из следующих действий.

 

Для немодальной всплывающей формы и отчета

1. Если необходимо изменить размеры формы или отчета, то выберите значение Тонкая для свойства Тип границы (BorderStyle).

2. Создайте макрос или процедуру обработки события для открытия всплывающей формы или отчета.

Примечание. Пример процедуры обработки события, которая отображает немодальную всплывающую форму, находится в форме «Поставщики» учебной базы данных «Борей». Откройте базу данных «Борей», расположенную в подкаталоге Samples каталога Office, а затем откройте форму «Поставщики» в режиме конструктора. Нажмите кнопку Построить , расположенную рядом с ячейкой свойства Нажатие кнопки кнопки «Список товаров».

Для модальной выплывающей формы или отчета

1. В ячейке свойства Модальное окно (Modal) выберите значение Да.

2. В ячейке свойства Тип границы (BorderStyle) выберите значение Окно диалога.

3. Создайте макрос или процедуру обработки события для открытия всплывающей формы или отчета.

5. Свяжите макрос или процедуру обработки события с формой или отчетом, указав имя макроса или процедуры обработки события в ячейке соответствующего свойства события. Например, введите имя макроса или процедуры обработки события в ячейку свойства кнопки Нажатие кнопки (OnClick).

Чтобы разместить всплывающую форму или отчет на экране нужным образом, откройте их в режиме конструктора, разверните окно Microsoft Access, выберите местоположение окна и сохраните форму или отчет. При открытии формы или отчета они появятся в этом месте (предполагается, что свойство Выравнивание по центру (AutoCenter) установлено в значение Нет и положение не задано в отрывающей их процедуре обработке события).

Примечание. Чтобы использовать форму и как обычную форму, и как диалоговое окно, можно воспользоваться режимом окна «Окно диалога» макрокоманды «ОткрытьФорму» (OpenForm) для временного открытия формы в виде диалогового окна, а не применять эту процедуру.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных