Добавление иконки в 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
Вопрос № 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
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:
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.
Синтаксис функции 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
vbHidevbHide
0 0
Окно скрыто, фокус переходит к скрытому окну. Window is hidden and focus is passed to the hidden window. Константа vbHide не действует в macOS. The vbHide constant is not applicable on Macintosh platforms.
vbNormalFocusvbNormalFocus
1 1
Окно получает фокус и восстанавливает свое исходное положение и размер. Window has focus and is restored to its original size and position.
vbMinimizedFocusvbMinimizedFocus
2 2
Окно отображается в виде значка и получает фокус. Window is displayed as an icon with focus.
vbMaximizedFocusvbMaximizedFocus
3 3
Окно разворачивается во весь экран и получает фокус. Window is maximized with focus.
vbNormalNoFocusvbNormalNoFocus
4 4
Восстанавливается последнее положение и размер окна. Window is restored to its most recent size and position. Активное окно остается активным. The currently active window remains active.
vbMinimizedNoFocusvbMinimizedNoFocus
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). Выполните следующие действия.
Выберите вкладку Файл (File) для перехода в окно представления Backstage.
В находящейся слева навигационной панели щелкните на кнопке Параметры (Options). На экране появится диалоговое окно Параметры Excel (Excel Options).
В находящемся справа списке отображается перечень основных вкладок 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).
Содержит значение, введённое пользователем в текстовом поле или элемент, выбранный в комбинированном окне.
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 ‘удалить из списка
Задания
Добавьте в проект список оценок (2, 3, 4, 5) – List4.
Измените проект таким образом, чтобы можно было добавлять в результаты фамилию и оценку ученика.
Создайте кнопку “Очистить результаты”.
Примерный вид формы показан на рисунке.
Практическая работа 2. Проект “Переводчик”
Задание: создать проект для проверки знания иностранных слов (англо-русский и русско-английский переводчик).
Элементы интерфейса проекта:
Комбинированные списки Combo1 и Combo2 – для хранения русских и английских слов. Индексы русских слов в списке должны соответствовать индексам соответствующих им английских слов.
Текстовое поле Text1 — для вывода случайного слова из списка, которое необходимо перевести.
Текстовое поле Text2 — для вывода комментария “Верно” или “Неверно”.
Текстовые поля Text3, Text4 — для вывода количества вопросов и верных ответов.
Таймер Timer1 – для временной задержки при выводе очередного вопроса.
Image1 – для вывода рисунка, соответствующего слову.
Элемент 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 совпадает с индексом слова-перевода, выбранного пользователем, то ответ верный.
Подберите 2 звуковых файла для подтверждения верного и неверного ответа, подключите эти файлы к проекту.
Создайте заставку к проекту.
Самостоятельная работа
Создать проект “Выбор шрифта”, позволяющий выбрать с помощью списков тип шрифта, размер, начертание (свойства): жирный, подчёркнутый, курсив. Выбранные параметры должны применяться к метке Образец.
Свойства шрифта в метке задаются следующими командами:
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 (н/а).
Литература
Глушаков С.В. , Мельников В.В., Сурядный А.С. Программирование в среде Windows. Visual Basic 6.0. М.: ООО “Издательство АСТ”, 2001
Браун С. 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можно несколькими способами:
Нажать Пуск – Все программы – Microsoft Visual Basic 6.0.
Дважды щелкнуть по ярлыку VB6 на Рабочем столе.
После запуска открывается окно с тремя вкладками: Новое, Существующее, Прошлое.
Для создания нового проекта нужно на вкладке Новое выбрать Стандартный EXE и нажать Открыть.
Для открытия существующего проекта на вкладке Существующее нужно выбрать Открыть нужную папку, выбрать Выбрать нужный проект и нажать Открыть.
Если нужно открыть объект, который ранее уже открывался на данном компьютере, можно на вкладке Прошлое выбрать вариант Выбрать нужный проект и нажать Открыть.
Задай вопрос специалистам и получи ответ уже через 15 минут!
Сохранение проекта
Проект приложения сохраняется в отдельной папке, т.к. каждый элемент проекта сохраняется в отдельном файле. При первом сохранении указываются имена файлов для всех элементов проекта. Принято имя файла, сохраняющего форму, начинать с буквы F (FИмяФайла.frm), имя файла, сохраняющего проект – с буквы P (PИмяФайла.vbp).
Для сохранения проекта, который содержит одну форму, нужно в меню Файл выполнить команду Сохранить Проект как.
Окна среды программирования Visual Basic
Элементами среды программирования являются небольшие окна, которые выводят различную информацию и позволяют управлять составными частями проекта.
Все окна среды программирования выводятся на экран с помощью пункта меню Вид и их можно перетягивать за строку заголовка к любому краю экрана.
Рисунок 1. Окно среды программирования Visual Basic. Автор24 — интернет-биржа студенческих работ
Проводник проекта
В окне Проводник проекта отображаются группы объектов (например, Формы, Модули), которые используются в данном проекте. В группах размещаются сами объекты: формы, модули.
С помощью окна Проводник проекта можно вывести на экран окно формы двойным нажатием по значку или имени формы. С помощью пункта меню Проект можно добавить новые объекты: Форму, MDI Форму, Модуль, Модуль Класса, Управление Пользователя, Страницу Свойств и др.
Для открытия окна программного кода объекта нужно в контекстном меню объекта выбрать пункт Показать код или нажать кнопку Показать код в окне проводника проекта.
Для удаления объекта из проекта нужно в контекстном меню объекта выбрать команду Удалить или выделить объект и нажать клавишу Delete.
Окно свойств
В окне свойств отображаются свойства текущего объекта (формы или элементов управления: кнопок, полей для ввода или вывода текстов, надписей). Выделенный объект является текущим. Например, если выделена форма, то Окно свойств примет вид:
Рисунок 2. Окно свойств. Автор24 — интернет-биржа студенческих работ
Имя объекта, свойства которого отображаются.
Вкладки Алфавит и Категории, с помощью которых можно отобразить свойства в алфавитном порядке или по категориям соответственно.
Название свойства.
Значение свойства.
Комментарий к выбранному свойству.
Форма
Форма является эскизом окна создаваемого приложения.
Форма также является объектом, который имеет свойства, методы и события. На форме можно размещать другие объекты: кнопки, списки, текстовые поля и т.п.
В среде Visual Basic можно создать следующие виды форм:
Форма – обычная форма, которая используется для создания несложных программ.
MDI Форма – форма, которая может содержать дочерние (вложенные) формы. Приложение может содержать не больше одной такой формы.
Дочерняя форма содержится только внутри основной формы. Приложение может содержать несколько дочерних форма.
Форма диалога появляется на экране на короткое время, служит для ввода или вывода информации, не может изменяться в размерах и выводится поверх других окон.
Элементы управления
Элементами управления называются объекты, служащие для организации пользовательского интерфейса. К элементам управления относятся кнопки, списки, переключатели.
Для добавления элементов управления на форму нужно:
В меню Вид выбрать пункт Панель Инструментов (если она еще не выведена на экран).
Выбрать элемент, щелкнув по нему мышью.
Перевести указатель мыши на форму и, нажав левую кнопку мыши, переместить ее по диагонали вниз и направо на форме.
Метка Label предназначена для добавления текста на форму, который не может быть изменен пользователем, но может быть изменен программно.
Текстовое поле TextBox служит для введения текста или отображения результата во время работы программы.
Командная кнопка Command Button.
Рамка для рисунка PictureBox предназначена для содержания рисунка.
Рамка Frame используется для оформления, а также для группировки переключателей.
Флажок Check Box используется для введения значения Да (флажок установлен) или Нет (флажок снят).
Переключатель Option Button позволяет пользователю выбрать один вариант из нескольких.
Поле со списком ComboBox используется для введения текста как и в TextBox, кроме того можно использовать выбор из списка.
Список ListBox cодержит список строк, из которого пользователь может выбрать одну или несколько.