Добавление иконки в systemtray средствами visual basic


Содержание

Добавление иконки в systemtray средствами visual basic

Создание программ на языке Basic.

[администратор рассылки: Андреенков Владимир (Академик)]

Лучшие эксперты в этом разделе

zdwork
Статус: 6-й класс
Рейтинг: 789
solowey
Статус: Бакалавр
Рейтинг: 234
mklokov
Статус: 7-й класс
Рейтинг: 80
Перейти к консультации №:

Уважаемые Знатоки(Эксперты)! Поясните пож-та, возможно ли средствами VB 6.0 при старте свернуть проект в панель быстрого запуска, для задачи пакетной обработки и с помощью наведения курсора, на пиктограмму получить всплывающее окно со статистикой вычисляемой в этом же проекте. Рекомендуемое для этого свойство формы ShowInTaskBar=false в режиме Run Time — не работает, а использование его в режиме разработки сворачивает проект только в панель задач. Если нет, то к какой функции API- можно обратиться? Благодарю!

Состояние: Консультация закрыта

Эта область называется не «панель быстрого запуска» а «Область уведомления» (Tray).

http://www.nestor.minsk.by/kg/2003/19/kg31904.html — вот тут грамотный, хорошо расписанный пример.
http://forum.sources.ru/index.php?act=Attach&type=post& >

Консультировал: Благодарев Евгений Сергеевич
Дата отправки: 02.03.2010, 22:13

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Добавление иконки в systemtray средствами visual basic

Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

Чемпионы рейтинга экспертов в этой рассылке

Гаряка Асмик
Статус: Бакалавр
Рейтинг: 2639
• повысить рейтинг »
Vasiliy83
Статус: Бакалавр
Рейтинг: 1371
• повысить рейтинг »
Megaloman
Статус: Бакалавр
Рейтинг: 1067
• повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Basic/VBA

Номер выпуска: 992
Дата выхода: 07.03.2010, 22:00
Администратор рассылки: Калашников О.А. , Руководитель
Подписчиков / экспертов: 343 / 99
Вопросов / ответов: 1 / 2

Вопрос № 177015: Уважаемые Знатоки(Эксперты)! Поясните пож-та, возможно ли средствами VB 6.0 при старте свернуть проект в панель быстрого запуска, для задачи пакетной обработки и с помощью наведения курсора, на пиктограмму получить всплывающее окно со статистикой выч. Вопрос № 177015:

Уважаемые Знатоки(Эксперты)! Поясните пож-та, возможно ли средствами VB 6.0 при старте свернуть проект в панель быстрого запуска, для задачи пакетной обработки и с помощью наведения курсора, на пиктограмму получить всплывающее окно со статистикой вычисляемой в этом же проекте. Рекомендуемое для этого свойство формы ShowInTaskBar=false в режиме Run Time — не работает, а использование его в режиме разработки сворачивает проект только в панель задач. Если нет, то к какой функции API- можно обратиться? Благодарю!

Отправлен: 02.03.2010, 21:31
Вопрос задал: Pencho R.O. , Посетитель
Всего ответов: 2
Страница вопроса » Отвечает Благодарев Евгений Сергеевич , 1-й класс :
Эта область называется не «панель быстрого запуска» а «Область уведомления» (Tray).

http://www.nestor.minsk.by/kg/2003/19/kg31904.html — вот тут грамотный, хорошо расписанный пример.
http://forum.sources.ru/index.php?act=Attach&type=post& > Ответ отправил: Благодарев Евгений Сергеевич , 1-й класс
Ответ отправлен: 02.03.2010, 22:13
Номер ответа: 259848

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту «спасибо»?
Отправить SMS#thank 259848 на номер 1151 (Россия) | Еще номера »

Отвечает Vasiliy83 , Бакалавр :
Здравствуйте, Pencho R.O..
Вот рабочий код именно для VB 6.0

Ответ отправил: Vasiliy83 , Бакалавр
Ответ отправлен: 02.03.2010, 23:24
Номер ответа: 259854

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту «спасибо»?
Отправить SMS#thank 259854 на номер 1151 (Россия) | Еще номера »

Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!

Задать вопрос экспертам этой рассылки »

Скажите «спасибо» эксперту, который помог Вам!

* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. ( полный список тарифов )
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.

Create and manipulate a system tray icon using VBA

Is it possible to use VBA to create, modify and eventually delete an icon in the system tray? I have found several examples on how to do it in VB, but none for VBA. For example:
http://support.microsoft.com/kb/162613
http://support.microsoft.com/kb/176085

Any way to do the same in VBA?


Premium Content
Premium Content
  • Facebook
  • Twitter
  • LinkedIn
  • https://www.experts-exchange.com/questions/25281095/Create-and-manipulate-a-system-tray-icon-using-VBA.html copy

it is possible, you will need to put the api stuff into a seperate module

you will need an icon named «c:\s1.ico» for this to work.
i created a module and added the following code:

‘user defined type required by Shell_NotifyIcon API call
Public Type NOTIFYICONDATA
cbSize As Long
hwnd As Long
uId As Long
uFlags As Long
uCallBackMessage As Long
hIcon As Long
szTip As String * 64
End Type

‘constants required by Shell_NotifyIcon API call:
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201 ‘Button down
Public Const WM_LBUTTONUP = &H202 ‘Button up
Public Const WM_LBUTTONDBLCLK = &H203 ‘Double-click
Public Const WM_RBUTTONDOWN = &H204 ‘Button down
Public Const WM_RBUTTONUP = &H205 ‘Button up
Public Const WM_RBUTTONDBLCLK = &H206 ‘Double-click

Public Declare Function SetForegroundWindow Lib «user32» _
(ByVal hwnd As Long) As Long
Public Declare Function Shell_NotifyIcon Lib «shell32» _
Alias «Shell_NotifyIconA» _
(ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean

Public nid As NOTIFYICONDATA

then i made a new form and added the following code to that :

Private Sub Command2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Result As Long
Dim msg As Long
‘the value of X will vary depending upon the scalemode setting
If Me.ScaleMode = vbPixels Then
msg = X
Else
msg = X / Screen.TwipsPerPixelX
End If
Select Case msg
Case WM_LBUTTONUP ‘514 restore form window
Me.WindowState = vbNormal
Result = SetForegroundWindow(Me.hwn d)
Me.Show
Case WM_LBUTTONDBLCLK ‘515 restore form window
Me.WindowState = vbNormal
Result = SetForegroundWindow(Me.hwn d)
Me.Show
Case WM_RBUTTONUP ‘517 display popup menu
Result = SetForegroundWindow(Me.hwn d)
Me.PopupMenu Me.mPopupSys
End Select

Private Sub Form_Load()
‘Me.Show
Me.Refresh
With nid
.cbSize = Len(nid)
.hwnd = Me.hwnd
.u > .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
.uCallBackMessage = WM_MOUSEMOVE
.hIcon = LoadPicture(«c:\s1.ico»)
.szTip = «Your ToolTip» & vbNullChar
End With
Shell_NotifyIcon NIM_ADD, nid
End Sub

Private Sub Form_Unload(Cancel As Integer)
‘this removes the icon from the system tray
Shell_NotifyIcon NIM_DELETE, nid

Добавление иконки в systemtray средствами visual basic

This is a newbie question: I needed to replace the double-click event with a single-click event. It does work when single-clicking the systray icon, but right-clicking on the icon also triggers the single-click event before triggering the context menu («Display Form» + «Exit»). Why is that and how to avoid this?

I simply did this in AppContext.vb:

Thank you.

Sign In· View Thread
Re: Added single-click event: Right-click triggers single-click + context menu

fredtheman 17-Dec-13 5:21

Also, how to prevent VS to display «Memory (1-4)», «Watch 1», and «Locals» windows that I don’t need?

I searched around the menus but didn’t find how to change this.

Thank you.

Sign In· View Thread
Re: Added single-click event: Right-click triggers single-click + context menu

Gregory Gadow 17-Dec-13 5:54
Visual Studio actually two sets of window configuration, one for coding mode and one for debug mode, and changing what windows are shown or not in one mode will not change the other. To hide any window, simply click the X in the upper right hand corner, just make sure you do this in each mode, when code and when you have a debug instance running.
Sign In· View Thread
Re: Added single-click event: Right-click triggers single-click + context menu fredtheman 17-Dec-13 6:04

Thanks for the tip.

In Visual Studio Express, I found an option for this:

Tools > Options > Debugging > General: Uncheck «Enable address-level debugging».

Sign In· View Thread
Re: Added single-click event: Right-click triggers single-click + context menu


Gregory Gadow 17-Dec-13 5:51

The issue is how Windows handles the events. Click is always raised when the mouse is clicked on visual object (the notification icon, in this case.) If a second click occurs within a given timeframe, Windows intercepts that event and raises DoubleClick; if too much time has passed, then a second Click is raised. I am not aware of any way to change this behavior.

I don’t think you need to worry, though: it sounds like all you need to do is move ShowDialog() from Click to DoubleClick and delete the unneeded method.

Sign In· View Thread
Re: Added single-click event: Right-click triggers single-click + context menu

fredtheman 17-Dec-13 6:03

Thanks for the info.

The problem is that I want to support both the single-click with the left button (to launch a task), and the single-click with the right button (to display the About/Exit menu options).

Sign In· View Thread
Re: Added single-click event: Right-click triggers single-click + context menu

Gregory Gadow 17-Dec-13 6:18
That’s easy enough. Instead of using Click, use MouseDown. The second parameter of the event is a MouseEventArgs object: use its Button property to tell which button was pressed. You can now perform different actions for the left and right mouse buttons.
Sign In· View Thread
Re: Added single-click event: Right-click triggers single-click + context menu fredtheman 17-Dec-13 6:29
Thanks for the solution.
Sign In· View Thread
Re: Added single-click event: Right-click triggers single-click + context menu fredtheman 17-Dec-13 6:36

Just a slight issue: Sometimes, the dialog that pops up after left-clicking on the icon doesn’t have the focus (its title bar is grey instead of blue), so the user must click on the dialog to put the focus back on it.

Anybody knows why?

fredtheman 17-Dec-13 6:15

I thought about doing this, but System.EventArgs doesn’t support the LeftClick event:

fredtheman 17-Dec-13 6:28

In case someone else needs the same thing, here’s the answer:

Surazal Taken 8-Nov-13 4:42
This was a really useful illustration and very well explained.

I wondered if you had any thoughts on a simple way to make the Notify Icon application a single instance one? This is normally a tick the checkbox exercise, but now it looks like specific code needs to be included.

Any comments, thoughts or suggestions will be much appreciated.

Sign In· View Thread
Re: Single Instance Application

Gregory Gadow 8-Nov-13 4:53

From the way you put it, it sounds like you need something for a class project. So please take this suggestion as the helpful advice it is intended to be.

Read an article about how to build single instance applications — there are a lot of articles out there on this topic — then use that information to modify my code.

Please respect your future co-workers and learn how to build new tools out of the tools you already have. That is why you are in school, after all.

Sign In· View Thread
Re: Single Instance Application

Surazal Taken 8-Nov-13 5:35

Thanks for responding so quickly — and, of course, being so right

I had done some research, but what I had found seemed more complex than I felt it needed to be. Here is the solution I found from Single Instance Application A Simple Way.

Shared in case someone else needs the answer

Sign In· View Thread
Nice Work

$yKer 24-Apr-13 18:13
Nice work sir. It was really helpful. Using this I am making my own remainder for future use .Big Big Thanks
Sign In· View Thread
Show a balloon tip stepef 12-Feb-13 0:41
First of all, thank you! I was looking for this for about an hour!
But, how do you show a balloon tip? I know you need to use but I need to use data from a form and is not accessible from there, only from the class itself. Anybody a solution?
Thanks!
Gregory Gadow 12-Feb-13 4:53

That is an interesting and useful question.

I would create a public NotifyIcon in the OtherMethods module (or some other convenient place), which will make the component available globally in your project.

In the AppContext class, rewrite the New method to take a ByRef NotifyIcon parameter (call it, say, NI .) Drop the line creating a new Tray instance, and replace it with Tray = NI. Now, AppContext will use the global version.

Lastly, you need to instantiate your global icon. Change the Sub Main method to look like this:
From here, you can reference GlobalTray anywhere in your project. Let me know how it works.

Sign In· View Thread
Re: Show a balloon tip

stepef 12-Feb-13 5:06
Thanks guy! This helped me alot!
Sign In· View Thread
Last Visit: 12-Nov-19 5:54 Last Update: 12-Nov-19 5:54 Refresh 1 23 Next »

General News Suggestion Question Bug Answer Joke Praise Rant Admin

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Вопрос по visual basic 6.0. Как сделать, чтобы при нажатии на кнопку программа сворачивалась в трэй.

‘в облости обьявления формы добавить API функцию
‘и структуру и некоторые константы

‘ф-ция добовляет/удоляет в system tray иконку
Private Declare Function Shell_NotifyIcon Lib «shell32» _
(ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

‘флаги- что будет применимо к иконки в трее
Const NIF_ICON = &H2 ‘отоброжать иконку
Const NIF_MESSAGE = &H1 ‘отпровлять сообщения окну-обработчику сообщений
Const NIF_TIP = &H4 ‘отоброжать всплывающую подсказку

Const NIM_ADD = &H0 ‘добавить иконку в tray

Private Type NOTIFYICONDATA
cbSize As Long ‘
hwnd As Long ‘
uID As Long ‘
uFlags As Long
uCallbackMessage As Long ‘
hIcon As Long ‘
szTip As String * 64 ‘
End Type

‘поместить на форму кнопку с именем Command1

Private Sub Command1_Click()
Dim notifyICO As NOTIFYICONDATA
Dim SetTrayIcon As Long

Отобразить новый значок почты в панели задач Windows с помощью VBScript

У меня было самое сложное время, чтобы настроить внешний вид, чтобы показывать значок нового сообщения электронной почты только тогда, когда я этого хотел. У меня есть несколько правил/фильтров, которые я не хотел показывать, но они всегда это делали. Я все испробовал, но это не мой вопрос. То, что я нашел в качестве хорошего решения, — создать vbs script, который называется bash script, который я использую, чтобы уведомить меня. Я называю этот код в своем правиле catch-all и все остальные правила выходят раньше. Это работает очень хорошо. Однако мне бы хотелось, чтобы на панели задач отображался новый значок почты (конверт). Я действительно не осведомлен о vb, vba, vbs. Но если кто-то может отправить код, который мне нужен в файле, я бы с удовольствием дал ему шанс. СПАСИБО!

Насколько я мог сказать, нет прямого способа отобразить значок New Mail с помощью VBA. Тем не менее, вы можете добавить значок a по-другому. Я уверен, что есть способ получить похожий вид, который появится с помощью LoadIcon или аналогичной функции Win32, но я не смог понять, как это сделать.

Обратите внимание, что это работает только в 32-разрядном Office (я не смог заставить его работать в 64-битном режиме, поэтому вам не повезло в этом отношении — даже в форумы Microsoft, эта проблема не решена. И снова я считаю, что более высокий уровень, чем Microsoft Форумы).

  • перейдите в Инструменты- > Макросы- > Редактор Visual Basic, нажмите Просмотреть- > Проводник проекта.
  • В левом окне «Проект» щелкните правой кнопкой мыши «Project1» и выберите «Вставить- > Модуль».
  • Дважды щелкните новый созданный модуль,

и вставьте следующий код:

Теперь, чтобы иметь возможность использовать их в правиле Outlook, вам нужно дважды щелкнуть ThisOutlookSession и вставить следующий код:

Теперь вы можете сохранить и закрыть окно Visual Basic.

Чтобы использовать эти функции в правиле, вы можете создать новое правило: Инструменты- > Правила и предупреждения- > Новое правило, выберите критерии на первых двух экранах, затем на экране «Выбрать действие», выберите «запустить a script». Когда вы добавите это в свое правило и нажмите подчеркнутый «запустить a script», вы должны увидеть 2 функции «ShowIconInTray» и «HideIconInTray».

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

Вам может потребоваться проверить безопасность Outlook (Tools- > Macros- > Security). Я думаю, что Outlook 2007 предварительно сконфигурирован с высокой степенью безопасности. Чтобы макросы всегда запускались, вы можете выбрать «Нет проверки безопасности для макросов» или «Предупреждения для макросов». Подписание VBA легко, но выходит за рамки этого ответа.

Это не мой любимый код, и он несколько взломан; но Shell_NotifyIcon не был предназначен для использования в VBA, и вы не можете использовать функции Win32 в VBScript. Лучший альтернативный ответ, вероятно, будет включать в себя надстройку VSTO, но вы не можете «вставить» надстройку в ответ, плюс для этого потребуется Visual Studio.

Функция Shell Shell function

Запускает исполняемую программу и возвращает значение Variant (Double), представляющее идентификатор задачи программы в случае успешного выполнения и ноль в противном случае. Runs an executable program and returns a Variant (Double) representing the program’s task ID if successful; otherwise, it returns zero.

Синтаксис Syntax


Shell(путь, [ тип_окна ]) Shell(pathname, [ windowstyle ])

Синтаксис функции Shell использует следующие именованные аргументы: The Shell function syntax has these named arguments:

Part Part Описание Description
путь pathname Обязательный элемент; Variant (String). Required; Variant (String). Имя программы, которую требуется выполнить, и все требуемые аргументы или параметры командной строки; может включать в себя каталог или папку и диск. Name of the program to execute and any required arguments or command-line switches; may include directory or folder and drive. В macOS можно использовать функцию MacID для указания подписи приложения вместо его имени. On the Macintosh, you can use the MacID function to specify an application’s signature instead of its name. В следующем примере используется подпись для Microsoft Word: Shell MacID(«MSWD») The following example uses the signature for Microsoft Word: Shell MacID(«MSWD»)
тип_окна windowstyle Необязательный элемент. Optional. Значение типа Variant (Integer), определяющее тип окна, в котором будет запущена программа. Variant (Integer) corresponding to the style of the window in which the program is to be run. Если аргумент тип_окна опущен, программа запускается в свернутом окне с фокусом на нем. If windowstyle is omitted, the program is started minimized with focus. В Mac OS 7.0 и более поздних версиях аргумент тип_окна определяет лишь то, получит ли запускаемое приложение фокус. On the Macintosh (System 7.0 or later), windowstyle only determines whether or not the application gets the focus when it is run.

Аргумент тип_окна может принимать следующие значения: The windowstyle named argument has these values:

Константа Constant Значение Value Описание Description
vbHide vbHide 0 0 Окно скрыто, фокус переходит к скрытому окну. Window is hidden and focus is passed to the hidden window. Константа vbHide не действует в macOS. The vbHide constant is not applicable on Macintosh platforms.
vbNormalFocus vbNormalFocus 1 1 Окно получает фокус и восстанавливает свое исходное положение и размер. Window has focus and is restored to its original size and position.
vbMinimizedFocus vbMinimizedFocus 2 2 Окно отображается в виде значка и получает фокус. Window is displayed as an icon with focus.
vbMaximizedFocus vbMaximizedFocus 3 3 Окно разворачивается во весь экран и получает фокус. Window is maximized with focus.
vbNormalNoFocus vbNormalNoFocus 4 4 Восстанавливается последнее положение и размер окна. Window is restored to its most recent size and position. Активное окно остается активным. The currently active window remains active.
vbMinimizedNoFocus vbMinimizedNoFocus 6 6 Окно отображается в виде значка. Window is displayed as an icon. Активное окно остается активным. The currently active window remains active.

Примечания Remarks

Если функция Shell успешно запускает указанный файл, возвращается код задачи запущенной программы. If the Shell function successfully executes the named file, it returns the task ID of the started program. Код задачи — это уникальный номер, идентифицирующий запускаемую программу. The task ID is a unique number that identifies the running program. Если функция Shell не может запустить указанную программу, возникает ошибка. If the Shell function can’t start the named program, an error occurs.

В macOS при указании параметра vbNormalFocus, vbMinimizedFocus или vbMaximizedFocus приложение становится активным. При указании параметров vbHide, vbNoFocus или vbMinimizeFocus приложение запускается в фоновом режиме. On the Macintosh, vbNormalFocus, vbMinimizedFocus, and vbMaximizedFocus all place the application in the foreground; vbHide, vbNoFocus, and vbMinimizeFocus all place the application in the background.

По умолчанию функция **Shell **запускает другие программы асинхронно. By default, the Shell function runs other programs asynchronously. Это значит, что программа, запущенная с помощью команды Shell, может не завершиться до того, как будут выполнены операторы, следующие за функцией Shell. This means that a program started with Shell might not finish executing before the statements following the Shell function are executed.

Пример Example

В этом примере функция Shell используется для запуска указанного пользователем приложения. This example uses the Shell function to run an application specified by the user. В macOS диск по умолчанию обозначается «HD», а части аргумента «путь» отделяются друг от друга двоеточиями вместо обратной косой черты. On the Macintosh, the default drive name is «HD» and portions of the pathname are separated by colons instead of backslashes. Аналогичным образом, следует указывать папки macOS вместо \WINDOWS . Similarly, you would specify Macintosh folders instead of \WINDOWS .

См. также See also

Поддержка и обратная связь Support and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Сводные таблицы Excel

В Excel 5 впервые была реализована поддержка нового макроязыка Visual Basic for Applications (VBA). Каждая копия Excel, начиная с 1993 года, содержит копию языка VBA, в явном виде не представленную на рабочих листах. VBA позволяет выполнять действия, которые обычно реализуются в Excel, но делает это намного быстрее и безукоризненно.

Если вам доводилось прежде сталкиваться с VBA-программами, то вы знаете, что очень часто они позволяют с помощью всего одного щелчка получать результаты, на которые в случае применения обычных средств Excel уходит несколько часов, а то и дней. Не стоит пугаться сложностей VBA, это ничуть не сложнее чем эмулятор psp. В 90% случаев программный код генерируется благодаря функции записи макросов, и только самые эффективные VBA-приложения пишутся вручную. В примерах раздела «Использование VBA для создания сводных таблиц» вы познакомитесь с нелегкой работой настоящего VBA-программиста.

По умолчанию VBA в Excel 2010 отключен. Прежде чем начать его использовать, нужно активизировать его в диалоговом окне Центр управления безопасностью (Trust Center). Выполните следующие действия.

  1. Выберите вкладку Файл (File) для перехода в окно представления Backstage.
  2. В находящейся слева навигационной панели щелкните на кнопке Параметры (Options). На экране появится диалоговое окно Параметры Excel (Excel Options).
  3. В диалоговом окне Параметры Excel выберите категорию Настройка ленты (Customize Ribbon).
  4. В находящемся справа списке отображается перечень основных вкладок Excel. По умолчанию флажок для вкладки Разработчик (Developer) не установлен. Установите его, после чего вкладка Разработчик отобразится на ленте. Щелкните на кнопке ОК для закрытия окна Параметры Excel.

5. Выберите вкладку ленты Разработчик. Нам понадобится группа команд Код (Code), в состав которой входят кнопки Visual Basic Editor, Макросы (Macros), Запись макроса (Macro Recorder) и Безопасность макросов (Macro Security) (рис. 12.1).

Рис. 12.1. Доступ к инструментам VBA реализуется через вкладку Разработчик

Работа со списками в Visual Basic

Приведённые практические работы по программированию могут быть использованы при изучении элементов выбора Visual Basic. Списки целесообразно изучать после знакомства с переключателями (OptionButton) и флажками (CheckBox).

При объяснении нового материала удобно использовать распечатки с изложением теоретического материала и примерами программ, которые выдаются каждому студенту (ученику), либо методические пособия (мы используем авторское пособие “Практикум по решению задач в среде Visual Basic”, часть 1, 2).

Приведённые практические работы рассчитаны на 3 занятия по 2 часа. Задания самостоятельной работы можно использовать в качестве домашних заданий.

В Visual Basic существует 2 вида списков:

  • комбинированный список ComboBox;
  • список ListBox.

1. Комбинированный список ComboBox

Комбинированный список представляет комбинацию раскрывающегося списка и текстового поля. Пользователь имеет возможность выбрать определенное значение какого-либо параметра в раскрывающемся списке или ввести необходимое значение в текстовое поле. Если элементы не помещаются в границах стандартного окна, то автоматически появляются полосы прокрутки, с помощью которых можно выбирать требуемый элемент в списке.

Свойство Style задаёт внешний вид комбинированного списка (по умолчанию оно равно 0 — элемент ComboBox отображается в виде текстового поля со стрелкой справа, позволяющей развернуть весь список и выбрать требуемое значение). Если Style = 1, то постоянно отображается весь список (или список с полосой прокрутки).

Основные свойства ComboBox

Название

Описание


List

Содержит в виде массива список имеющихся элементов, нумерация которых начинается с 0.

ListIndex

Возвращает порядковый номер выбранного значения из списка (если значение было введено пользователем в текстовом поле, то в этом случае ListIndex = -1)

ListCount

Определяет количество элементов в ComboBox..

NewIndex

Содержит индекс последнего добавленного в список значения (используется при установке Sorted = True).

Sorted

Представляет собой логическое значение, определяющее, отсортирован ли список (True, False).

Style

Определяет внешний вид комбинированного списка:

0 — Dropdown Combo (раскрывающийся комбинированный список);

1 — Simple Combo (простой комбинированный список);

2 — Dropdown List (раскрывающийся список).

Text

Содержит значение, введённое пользователем в текстовом поле или элемент, выбранный в комбинированном окне.

AddItem

Добавляет указанный элемент в определенное место списка.

Clear

Удаляет все имеющиеся значения списка.

RemoveItem

Удаляет элемент с указанным порядковым номером.

Для добавления нового элемента в список используется метод AddItem.

Пример: Combo1.AddItem “Пение” — добавить в список Combo1 слово Пение.

Добавляемые в список элементы имеют тип String; [index] — порядковый номер в списке, под которым будет находиться новый элемент (необязательный параметр).

Добавить элементы в комбинированный список можно также на этапе разработки с помощью свойства List. Для добавления очередного элемента в список нужно ввести этот элемент в свойстве List и нажать комбинацию клавиш Ctrl + Enter.

2. Список ListBox

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

В отличие от ComboBox список ListBox можно создать многоколончатым и осуществлять выбор нескольких элементов одновременно.

Свойство MultiSelect позволяет задать режим множественного выбора элементов в списке. В режиме MultiSelect = 1 добавление элемента в выделенную группу или исключение из нее осуществляется с помощью щелчка мыши или нажатия пробела. Если MultiSelect = 2, то в этом случае выделение элементов выполняется по аналогии с программой Проводник:

  • щелчок мыши при нажатой клавише Shift позволяет выделить несколько подряд расположенных элементов;
  • щелчок мыши при нажатой клавише Ctrl даёт возможность выделять группу несмежных элементов списка.

Основные свойства элемента ListBox

Название

Описание

Columns

Задаёт количество колонок в списке:

0 — одноколончатый список с вертикальной прокруткой;

1 — одноколончатый список с горизонтальной прокруткой;

>1 — многоколончатый список с горизонтальной прокруткой

Selected

Возвращает массив логических значений для обрабатываемого списка, содержащий состояние его элементов (выбран/не выбран) — как правило, используется в случае множественного выбора (свойство MultiSelect)

MultiSelect

Предоставляет возможность выбора нескольких элементов в списке:


0 — None (обычный список);

1 -Simple (простой множественный выбор — щелчок мыши или нажатие Пробел выделяет очередной элемент или снимает выделение);

2 — Extended (расширенный множественный выбор) — выделение с использованием вспомогательных клавиш.

Свойства List, ListIndex, ListCount, NewIndex, Sorted, Text аналогичны свойствам элемента ComboBox;

см. табл. 2.53

Методы ListBox аналогичны методам ComboBox.

Практическая работа 1. Проект “Результаты сессии”

Задание: создать проект, содержащий 3 списка: список студентов группы; список студентов, получивших зачёт и список неаттестованных. Двойным щелчком мыши в списке студентов (List1) выбирается фамилия и добавляется в список “Зачёт” (List2). Двойным щелчком в списке “Зачёт” фамилия возвращается назад. Кнопкой “Добавить в список” фамилия, введённая в текстовое поле Text1, заносится в список List1. Кнопка “н/а” заносит выбранную фамилию из списка студентов в список List3 ( н/а).

Private Sub Form_Load() ‘загрузка формы

List1.AddItem «Чесноков»: List1.AddItem «Симонов»

List1.AddItem «Трушков»: List1.AddItem «Морозова»

Private Sub List1_DblClick() ‘перенести из списка в зачёт

List1.RemoveItem List1.ListIndex ‘удалить из списка

Private Sub List2_DblClick() ‘перенести назад в Список из Зачёт

Private Sub List3_DblClick() ‘перенести назад в список из н/а

Private Sub Command1_Click() ‘добавить в список из текст. поля

Private Sub Command3_Click() ‘добавить в н/а

List1.RemoveItem List1.ListIndex ‘удалить из списка

Задания

  1. Добавьте в проект список оценок (2, 3, 4, 5) – List4.
  2. Измените проект таким образом, чтобы можно было добавлять в результаты фамилию и оценку ученика.
  3. Создайте кнопку “Очистить результаты”.

Примерный вид формы показан на рисунке.

Практическая работа 2. Проект “Переводчик”

Задание: создать проект для проверки знания иностранных слов (англо-русский и русско-английский переводчик).

Элементы интерфейса проекта:

  1. Комбинированные списки Combo1 и Combo2 – для хранения русских и английских слов. Индексы русских слов в списке должны соответствовать индексам соответствующих им английских слов.
  2. Текстовое поле Text1 — для вывода случайного слова из списка, которое необходимо перевести.
  3. Текстовое поле Text2 — для вывода комментария “Верно” или “Неверно”.
  4. Текстовые поля Text3, Text4 — для вывода количества вопросов и верных ответов.
  5. Таймер Timer1 – для временной задержки при выводе очередного вопроса.
  6. Image1 – для вывода рисунка, соответствующего слову.
  7. Элемент MMControl1 — для воспроизведения звука.

Элемент MMControl является дополнительным компонентом VB (Activ X). Для его установки необходимо:

  • Открыть в меню Проект – Компоненты вкладку Управление (Control);
  • Установить флажок MicrosoftMultimedia Control 6.0;
  • На панели элементов управления появится новый значок MMControl.

Рисунки к проекту сохраните в папке с проектом в порядке следования слов в списке Combo1:

Ris0.jpg – рисунок к первому слову списка;

Ris1.jpg – рисунок ко второму слову списка и т.д.

Для определения имени файла рисунка в проекте используем переменную Path:

Path = «Ris» & Mid(Str(n), 2, 1) & «.jpg»

Функция Mid используется для того, чтобы убрать пробел перед числом в имени файла, т.к. функция Str(n) для положительного числа формирует строку с пробелом перед числом. Таким образом, получаем неверное имя файла Ris 0.jpg, вместо Ris0.jpg.


Рассмотрим основные процедуры проекта.

1) В процедуре загрузки формы нужно заполнить списки русских и английских слов.

Dim n, k, z, p As Integer, Path As String

‘n – индекс слова в списке; k – количество верных ответов; z – кол. вопросов; p – признак направления перевода; Path – путь к файлу с рисунком на диске

Private Sub Form_Load()

Combo1.AddItem «собака»: Combo1.AddItem «дельфин»

Combo1.AddItem «осёл»: Combo1.AddItem «красный»

Combo1.AddItem «зеленый»: Combo2.AddItem «Dog»

Combo2.AddItem «Dolphin»: Combo2.AddItem «Donkey»

Combo2.AddItem «Red»: Combo2.AddItem «Green»

k = 0 ’количество верных ответов

z = 0 ‘количество вопросов

2) При выборе кнопки “Перевод рус/англ” должно появляться русское слово. Для данного слова нужно найти перевод в списке английских слов. Список русских слов при этом должен скрываться.

Private Sub Command5_Click() ‘Перевод рус/англ

p = 1 ‘признак перевода – рус/англ

Combo1.Visible = False ‘скрыть список русских слов

Combo2.Visible = True ‘показать список англ. слов

Label1.Caption = «Русское слово»

Timer1.Enabled = True ‘включить таймер

3) В процедуре таймера случайным образом определяем индекс слова в списке слов. Если p=1, то было выбрано направление перевода рус/англ., поэтому слово выбирается из списка русских слов Combo1.

Private Sub Timer1_Timer()

z = z + 1 ‘подсчёт кол. вопросов

n = Int(Rnd * 4) ‘случайный выбор индекса слова в списке слов

If p = 1 Then Text1.Text = Combo1.List(n)

4) Для выбора перевода заданного русского слова пользователь делает щелчок по списку английских слов. Если индекс исходного русского слова n совпадает с индексом слова-перевода, выбранного пользователем, то ответ верный.

Private Sub Combo2_Click() ‘список англ. слов

If n = Combo2.ListIndex Then ‘если ответ верный

Image1.Visible = True ‘показать рисунок

MMControl1.FileName = «da.wav» ‘загрузить звуковой файл

Path = «Ris» & Mid(Str(n), 2, 1) & «.jpg»

Image1.Picture = LoadPicture(Path) ‘загрузить файл с соответствующим рисунком


Else ‘если ответ неверный

MMControl1.Command = «sound» ‘воспроизвести звук. файл

Задания:

  1. Создайте процедуру кнопки “Перевод англ/рус”.
  2. Добавьте кнопку Сброс.
  3. Подберите 2 звуковых файла для подтверждения верного и неверного ответа, подключите эти файлы к проекту.
  4. Создайте заставку к проекту.

Самостоятельная работа

  1. Создать проект “Выбор шрифта”, позволяющий выбрать с помощью списков тип шрифта, размер, начертание (свойства): жирный, подчёркнутый, курсив. Выбранные параметры должны применяться к метке Образец.

Свойства шрифта в метке задаются следующими командами:

Label1.Font.Italic = True – установить курсив

Label1.Font.Bold = False – отменить жирный шрифт

Label1.Font.Underline = True – установить подчёркнутый шрифт

Label1.Font = Combo1.Text – применить к метке тип шрифта, выбранный в комбинированном списке 1

Label1.Font.Size = Combo1.Text — применить к метке размер шрифта, выбранный в комбинированном списке 1

  • Создать проект “Заказы CD/DVD дисков по каталогам”. На форме разместить 2 комбинированных списка: “Игры” и “Обучающие программы”; список “Заказано”. Кнопки “Добавить в заказ” добавляют выбранный элемент в список “Заказано”. Кнопка “Удалить из заказа” удаляет выбранный элемент из заказа. Предусмотреть подсчёт количества заказов в списке.
  • Создать проект “Результаты кросса” с использованием 3-х списков. Двойным щелчком мыши в списке студентов (List1) выбирается фамилия и добавляется в список “Зачёт” (List2). Двойным щелчком в списке “Зачёт” фамилия возвращается назад. Кнопкой “Добавить в список” фамилия, введённая в текстовое поле Text1, заносится в список List1. Кнопка “н/а” заносит выбранную фамилию из списка в список List3 (н/а).
  • Литература

    1. Глушаков С.В. , Мельников В.В., Сурядный А.С. Программирование в среде Windows. Visual Basic 6.0. М.: ООО “Издательство АСТ”, 2001
    2. Браун С. Visual Basic. Учебный курс. – Спб.: Питер, 2002

    Знакомство со средой Visual Basic

    Преимущества Visual Basic

    Язык программирования BASIC (Beginner’s Allpurpose Symbolic Instruction Code – универсальный символьный программный код для начинающих) разработали сотрудники Дартмутского колледжа (США) в 1964 г. с целью быстрого обучения студентов основам программирования.

    Visual Basic – это интегрированная среда разработки приложений, включающая следующие компоненты:

    • Конструктор форм предназначен для создания окна-формы с набором необходимых элементов;
    • Текстовый редактор предназначен для написания программ, в котором доступны команды для операций работы с фрагментами текста: копирования, вставки, вырезания;
    • Отладчик используется для устранения ошибок в тексте программы, выделяя их в тексте различными цветами;
    • Компилятор используется для превращения отлаженного программного проекта в Windows-приложение в полноценный исполняемый (.exe) файл, который запускается без участия среды Visual Basic.

    Преимущества Visual Basic:

    • является простым и наглядным в сравнении с другими языками программирования;
    • динамично развивается;
    • интегрирован в программы Word, Excel, Power Point и др., что дает возможность управлять этими программами из других программ.

    Попробуй обратиться за помощью к преподавателям

    Язык Visual Basic является объектно-ориентированным, т.е. работает с разными объектами, каждый из которых имеет определенные свойства: цвет, размеры, положение и др. К некоторыми объектам можно применять определенные действия, которые называют методами (например, нажатие кнопки). Эти действия вызывают определенное событие (например, закрытие приложения). Для описания события должен быть написан соответствующий код в тексте программы.

    Запуск Visual Basic

    Запустить среду Visual Basicможно несколькими способами:

    1. Нажать Пуск – Все программы – Microsoft Visual Basic 6.0.
    2. Дважды щелкнуть по ярлыку VB6 на Рабочем столе.


    После запуска открывается окно с тремя вкладками: Новое, Существующее, Прошлое.

    Для создания нового проекта нужно на вкладке Новое выбрать Стандартный EXE и нажать Открыть.

    Для открытия существующего проекта на вкладке Существующее нужно выбрать Открыть нужную папку, выбрать Выбрать нужный проект и нажать Открыть.

    Если нужно открыть объект, который ранее уже открывался на данном компьютере, можно на вкладке Прошлое выбрать вариант Выбрать нужный проект и нажать Открыть.

    Задай вопрос специалистам и получи
    ответ уже через 15 минут!

    Сохранение проекта

    Проект приложения сохраняется в отдельной папке, т.к. каждый элемент проекта сохраняется в отдельном файле. При первом сохранении указываются имена файлов для всех элементов проекта. Принято имя файла, сохраняющего форму, начинать с буквы F (FИмяФайла.frm), имя файла, сохраняющего проект – с буквы P (PИмяФайла.vbp).

    Для сохранения проекта, который содержит одну форму, нужно в меню Файл выполнить команду Сохранить Проект как.

    Окна среды программирования Visual Basic

    Элементами среды программирования являются небольшие окна, которые выводят различную информацию и позволяют управлять составными частями проекта.

    Все окна среды программирования выводятся на экран с помощью пункта меню Вид и их можно перетягивать за строку заголовка к любому краю экрана.

    Рисунок 1. Окно среды программирования Visual Basic. Автор24 — интернет-биржа студенческих работ

    Проводник проекта

    В окне Проводник проекта отображаются группы объектов (например, Формы, Модули), которые используются в данном проекте. В группах размещаются сами объекты: формы, модули.

    С помощью окна Проводник проекта можно вывести на экран окно формы двойным нажатием по значку или имени формы. С помощью пункта меню Проект можно добавить новые объекты: Форму, MDI Форму, Модуль, Модуль Класса, Управление Пользователя, Страницу Свойств и др.

    Для открытия окна программного кода объекта нужно в контекстном меню объекта выбрать пункт Показать код или нажать кнопку Показать код в окне проводника проекта.

    Для удаления объекта из проекта нужно в контекстном меню объекта выбрать команду Удалить или выделить объект и нажать клавишу Delete.

    Окно свойств

    В окне свойств отображаются свойства текущего объекта (формы или элементов управления: кнопок, полей для ввода или вывода текстов, надписей). Выделенный объект является текущим. Например, если выделена форма, то Окно свойств примет вид:

    Рисунок 2. Окно свойств. Автор24 — интернет-биржа студенческих работ

    1. Имя объекта, свойства которого отображаются.
    2. Вкладки Алфавит и Категории, с помощью которых можно отобразить свойства в алфавитном порядке или по категориям соответственно.
    3. Название свойства.
    4. Значение свойства.
    5. Комментарий к выбранному свойству.

    Форма

    Форма является эскизом окна создаваемого приложения.

    Форма также является объектом, который имеет свойства, методы и события. На форме можно размещать другие объекты: кнопки, списки, текстовые поля и т.п.

    В среде Visual Basic можно создать следующие виды форм:

    • Форма – обычная форма, которая используется для создания несложных программ.
    • MDI Форма – форма, которая может содержать дочерние (вложенные) формы. Приложение может содержать не больше одной такой формы.
    • Дочерняя форма содержится только внутри основной формы. Приложение может содержать несколько дочерних форма.
    • Форма диалога появляется на экране на короткое время, служит для ввода или вывода информации, не может изменяться в размерах и выводится поверх других окон.

    Элементы управления

    Элементами управления называются объекты, служащие для организации пользовательского интерфейса. К элементам управления относятся кнопки, списки, переключатели.

    Для добавления элементов управления на форму нужно:

    1. В меню Вид выбрать пункт Панель Инструментов (если она еще не выведена на экран).
    2. Выбрать элемент, щелкнув по нему мышью.
    3. Перевести указатель мыши на форму и, нажав левую кнопку мыши, переместить ее по диагонали вниз и направо на форме.
    • Метка Label предназначена для добавления текста на форму, который не может быть изменен пользователем, но может быть изменен программно.
    • Текстовое поле TextBox служит для введения текста или отображения результата во время работы программы.
    • Командная кнопка Command Button.
    • Рамка для рисунка PictureBox предназначена для содержания рисунка.
    • Рамка Frame используется для оформления, а также для группировки переключателей.
    • Флажок Check Box используется для введения значения Да (флажок установлен) или Нет (флажок снят).
    • Переключатель Option Button позволяет пользователю выбрать один вариант из нескольких.
    • Поле со списком ComboBox используется для введения текста как и в TextBox, кроме того можно использовать выбор из списка.
    • Список ListBox cодержит список строк, из которого пользователь может выбрать одну или несколько.

    Так и не нашли ответ
    на свой вопрос?

    Просто напиши с чем тебе
    нужна помощь

    Илон Маск рекомендует:  Что такое код func_get_args
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL