На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
Страницы: (11) « Первая ... 8 9 [10] 11  все  ( Перейти к последнему сообщению )  
> VBStyleCode , Проблемы со стилем Windows XP было полностью решено. Цветная палитра теперь показывается ...
    Пришлось сделать Add-in заново, несколько годов назад потерял проект (из-за винта ...).

    Add-in поддерживает предыдущие возможности:
    • Авто-форматирование строк кода в зависимости от операторов;
    • Авто-вставка недостающих конечных конструкторов.
    • Скроллинг с помощью мышиного колеса в окне кода.

    Исправлены предыдущие баги, недостатки:
    • Поддержка режима SDI;
    • Смягчен влияние на историю изменений.
    • Скроллинг с помощью мышиного колеса тепер работает и в других окнах тоже.

    Добавлены новые возможности:
    • Установка Add-in'а в среду VBA;
    • Авто-вставка Then для конструкции If-ElseIf в случаи его отсутствия (теперь без сообщений об ошибках);
    • Авто-вставка знака комментария;
    • Авто-вставка шаблона текста при добавлении функции/процедуры;
    • Авто-текст;
    • Авто-замена инкрементные (++) и декрементные (--) операции;
    • Авто-замена составное присваивание (+=, -=, *=, /=, \=, &=);
    • Авто-замена инициализации переменных с объявлением;
    • Нумерация строк кода;
    • Объявление функций, типов и констант (через #include);
    • Настройка обработчиков ошибок;
    • Подсветка синтаксиса;
    • Выбор стиля интерфейса;
    • Выбор языка интерфейса;
    • MDI-вкладки;
    • Быстрый переход к функциям и процедурам;
    • Архивация проекта;

    Управления клавишами:
    • Ctrl + Alt + Tab - Форматировать выделенный фрагмент кода;
    • Ctrl + S - Сохранение модулей в режиме отладки;
    • Ctrl + B - Возврат отменённых изменений по коду;
    • Ctrl + ' - Добавить знак комментария;
    • Ctrl + Shift + ' - Удалить знак комментария;
    • F6 - Установка / удаление закладки;
    • Shift + F6 - Переход между закладками;
    • F11 - Вызов окна перехода к функциям и процедурам;

    Прикреплённый файлПрикреплённый файлVBStyleCode.rar (289,68 Кбайт, скачиваний: 2466)

    Для установки языков интерфейса нужно распаковать архив в путь, который находится установочный файл.
    Прикреплённый файлПрикреплённый файлLanguages.rar (471,75 Кбайт, скачиваний: 1607)

    Примерные варианты include файлов:
    Прикреплённый файлПрикреплённый файлInclude.rar (129,59 Кбайт, скачиваний: 1456)
    Сообщение отредактировано: coder -
      Цитата coder @
      Обновил архив, теперь попробуйте (я нашел процедуру но ещё не мог найти номер строки

      ошибка на 20 строке, потом на 30, 40, 80,90, 100, 110, 120, 140, 150, 160, 170, опять 170, 180, 190, 200-280, 300, 310, 320, 320, 330, 340, 400 ,440, 580, 610-700
      Цитата coder @
      И ещё, к настройкам подсветки тоже временно поставил сдвиг X и Y


      при х=5 у=0 подсветка нормально работает
        Все строки с default значением True:
        ExpandedWrap disabled
          20 AutoIndent = CBool(GetString(HKEY_CURRENT_USER, RegPath, "AutoIndent", True))


        Где можеть появится ошибка?
        Больше экспериментов не хочу, можеть быть с объявлениями Variant, можеть быть и на другом.
        Скрытый текст
        ExpandedWrap disabled
          Public Const REG_SZ = 1 ' Unicode nul terminated string
          Public Const REG_BINARY = 3 ' Free form binary
          Public Const REG_DWORD = 4 ' Free form binary
          Public Enum hiveKey
            HKEY_CLASSES_ROOT = &H80000000      '(Windows 95,98,ME,NT,2000,XP)
            HKEY_CURRENT_USER = &H80000001      '(Windows 95,98,ME,NT,2000,XP)
            HKEY_LOCAL_MACHINE = &H80000002     '(Windows 95,98,ME,NT,2000,XP)
            HKEY_USERS = &H80000003             '(Windows 95,98,ME,NT,2000,XP)
            HKEY_PERFORMANCE_DATA = &H80000004  '(Windows 95,98,ME,NT,2000)
            HKEY_CURRENT_CONFIG = &H80000005    '(Windows 95,98,ME,NT,2000,XP)
            HKEY_DYN_DATA = &H80000006          '(Windows 95,98,ME,NT,2000)
          End Enum
           
          Const REG_OPTION_BACKUP_RESTORE = 4     ' open for backup or restore
          Const REG_OPTION_VOLATILE = 1           ' Key is not preserved when system is rebooted
          Const REG_OPTION_NON_VOLATILE = 0       ' Key is preserved when system is rebooted
          Const STANDARD_RIGHTS_ALL = &H1F0000
          Const SYNCHRONIZE = &H100000
          Const READ_CONTROL = &H20000
          Const STANDARD_RIGHTS_READ = (READ_CONTROL)
          Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)
          Const KEY_CREATE_LINK = &H20
          Const KEY_CREATE_SUB_KEY = &H4
          Const KEY_ENUMERATE_SUB_KEYS = &H8
          Const KEY_NOTIFY = &H10
          Const KEY_QUERY_VALUE = &H1
          Const KEY_SET_VALUE = &H2
          Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
          Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
          Const KEY_EXECUTE = (KEY_READ)
          Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
           
          Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
          Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
          Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
          Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
          Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
          Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
          Public Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
          Public Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As Any, phkResult As Long, lpdwDisposition As Long) As Long
          Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long
           
          Public Function RegQueryStringValue(ByVal hKey As Long, ByVal strValueName As String, Optional Default) As String
            Dim lResult As Long, lValueType As Long, strBuf As String, lDataBufSize As Long
            'retrieve information about the key
            lResult = RegQueryValueEx(hKey, strValueName, 0, lValueType, ByVal 0, lDataBufSize)
            If lResult = 0 Then
              If lValueType = REG_SZ Then
                'Create a buffer
                strBuf = String(lDataBufSize, Chr$(0))
                'retrieve the key's content
                lResult = RegQueryValueEx(hKey, strValueName, 0, 0, ByVal strBuf, lDataBufSize)
                If lResult = 0 Then
                  'Remove the unnecessary chr$(0)'s
                  If lDataBufSize = 0 Then
                    RegQueryStringValue = ""
                  Else
                    RegQueryStringValue = Left$(strBuf, InStr(1, strBuf, Chr$(0)) - 1)
                  End If
                End If
              ElseIf lValueType = REG_DWORD Then
                Dim lngData As Long
                'retrieve the key's value
                lResult = RegQueryValueEx(hKey, strValueName, 0, 0, lngData, lDataBufSize)
                If lResult = 0 Then
                  RegQueryStringValue = lngData
                End If
              ElseIf lValueType = REG_BINARY Then
                Dim strData As Integer
                'retrieve the key's value
                lResult = RegQueryValueEx(hKey, strValueName, 0, 0, strData, lDataBufSize)
                If lResult = 0 Then
                  RegQueryStringValue = strData
                End If
              End If
            ElseIf Not IsMissing(Default) Then
              RegQueryStringValue = Default
            End If
          End Function
           
          Public Function GetString(hKey As Long, strPath As String, strValue As String, Optional Default)
            Dim Ret
            'Open the key
            RegOpenKey hKey, strPath, Ret
            'Get the key's content
            GetString = RegQueryStringValue(Ret, strValue)
            If GetString = "" Then GetString = Default
            'Close the key
            RegCloseKey Ret
          End Function
           
          Public Sub SaveString(hKey As Long, strPath As String, strValue As String, strData As String)
            Dim Ret
            'Create a new key
            RegCreateKey hKey, strPath, Ret
            'Save a string to the key
            RegSetValueEx Ret, strValue, 0, REG_SZ, ByVal strData, Len(strData)
            'close the key
            RegCloseKey Ret
          End Sub
           
          Public Sub SaveStringLong(hKey As Long, strPath As String, strValue As String, strData As String)
            Dim Ret
            'Create a new key
            RegCreateKey hKey, strPath, Ret
            'Set the key's value
            RegSetValueEx Ret, strValue, 0, REG_BINARY, CByte(strData), 4
            'close the key
            RegCloseKey Ret
          End Sub
           
          Public Sub DelSetting(hKey As Long, strPath As String, strValue As String)
            Dim Ret
            'Create a new key
            RegCreateKey hKey, strPath, Ret
            'Delete the key's value
            RegDeleteValue Ret, strValue
            'close the key
            RegCloseKey Ret
          End Sub
           
          Public Sub DelKey(hKey As Long, strPath As String, strSubKey As String)
            Dim Ret As Long
            'Create a new key
            'RegOpenKeyEx hKey, strPath & "\" & strSubKey, 0, KEY_ALL_ACCESS, Ret
            RegOpenKey hKey, strPath, Ret
            'Delete the key
            RegDeleteKey Ret, strSubKey
            'close the key
            RegCloseKey Ret
          End Sub

          Цитата Бяка @
          при х=5 у=0 подсветка нормально работает

          Например у меня на Spy++ по координатам Client rect, левый отступ является 4:
          Прикреплённая картинка
          Прикреплённая картинка
            Привет coder!
            Вот изображение панели Add-In Toolbar
            user posted image
            Вместо стандартной иконки - хочется свою.

            При написании собственной процедуры получаются следующие глюки:
            user posted image пишем процедуру, ставим знак переноса процедуры на следующую строку, нажимаем Enter... Опа
            user posted image текст процедуры подсвечен красным, но ошибки нет. Курсор в начале строки, а должен быть на два отступа. Делаем два отступа
            user posted image подсветка снова в порядке. Закрываем скобку, нажимаем Enter...
            user posted image происходит дублирование.

            О справочном файле
            Пропиши свойства WhatsThisHelpID для элементов управления. Справка по ссылке обновилась.

            С уважением...
              Цитата Diamock @
              Вместо стандартной иконки - хочется свою.

              Ещё не мог найти решение.

              Остальные были учтены на новом версии (2.0.467).
                Привет coder!
                Цитата coder @
                Цитата Diamock @
                Вместо стандартной иконки - хочется свою.

                Ещё не мог найти решение.

                Остальные были учтены на новом версии (2.0.467).

                Вариант кода назначения своей иконки. Код не мой, где-то, когда-то нарыл в сети...
                Создайте вспомогательную форму, расположите на ней нужное число элементов управления Image. В каждый элемент поместите иконку в виде растрового изображения 16х16. Кстати, сами иконки можно создавать с помощью того же встроенного редактора окна Customize например пакета Word, копируя их через буфер обмена.

                Далее, требуется написать следующий код в метод AddToAddInCommandBar класса Connect:
                ExpandedWrap disabled
                  Dim cbMenuCommandBar As Office.CommandBarButton
                   
                  Dim cbMenuCommandBar As Office.CommandBarButton
                  Dim cbMenu As Object
                   
                  Set cbMenu = VBInstance.CommandBars("Add-Ins")
                   
                  If Not cbMenu Is Nothing Then ' меню существует
                      ' добавляем его к панели инструментов
                      Set cbMenuCommandBar = cbMenu.Controls.Add(1)
                      cbMenuCommandBar.Caption = "Наш Add-In"
                      ' копируем изображение через буфер обмена
                      Clipboard.Clear
                      Clipboard.SetData = frmAddIns.ImgMenuPic.Picture
                      bMenuCommandBar.PasteFace
                      Set AddToAddInCommandBar = cbMenuCommandBar
                  End If

                К сожалению :( , этот метод для VBA не работает, поскольку объект Clipboard имеется только в VB.

                С уважением...
                Сообщение отредактировано: Diamock -
                  Цитата Diamock @
                  Вариант кода назначения своей иконки. Код не мой, где-то, когда-то нарыл в сети...

                  Я именно так и делаю, для всех своих кнопок, это не проблема.

                  Проблема в том, что этих кнопок я сам не буду добавить, оно добавляется сторонним аддином. Вовремя коннекта он ещё не будет добавлен (Commandbar тоже не будет добавляется).

                  Я могу проследить его добавление, но этот Add-in откуда берет иконки, я этого незнаю. Например для API Viewer он сам вставит иконку, я сейчас ищу пути, который заставить VB 6 Add-in Toolbar добавить мою иконку своей функционалом.
                    user posted image
                    Когда ставиш закрывающуюся скобку и нажимаешь Enter, выскакивает MsgBox. Так и должно быть? Не очень удобно.
                    Очень большое спасибо за навигацию по процедурам. Есть одно пожелание: у меня есть "дурацкая" привычка описывать функцию в Tools=>Procedure Attributes... Хочется при выделении функции в ListBox видеть её атрибуты и список сделать пошире. Примерно так:
                    user posted image
                    И что бы окно было не модальным и было всегда поверх всех окон проекта. А если бы его можно было сделать ещё и Docing (как опцию) - вообще шикарно!
                    Сообщение отредактировано: Diamock -
                      Цитата Diamock @
                      Когда ставиш закрывающуюся скобку и нажимаешь Enter, выскакивает MsgBox. Так и должно быть? Не очень удобно.

                      Я при проверке поставлю msgbox'ы, почему то там остался, сейчас уберу.
                        Цитата Diamock @
                        А если бы его можно было сделать ещё и Docing (как опцию) - вообще шикарно!

                        Я думаю что, для Docking'a его нужно сделать ещё деревовидным, как на CodeSmart'е. Так эти две формы можно разделять на две функции.

                        Обновил архив.
                        Сообщение отредактировано: coder -
                          версия 2.0.57
                          excel2010, пустая книга

                          при попытке сортировки/фильтрации данных, либо при попытке вставить формулу получаем однократные сообщения: Tipe mismatch с последующим
                          Object variable or With block variable not set в строке 490
                            Цитата Old Bat @
                            Tipe mismatch

                            Да, при подключении Надстройку VBStyleCodeForVBA.Connect программа не мог конвертировать Application (Microsoft Excel) на VBInstance (VBE), поэтому вылазили эти ошибки (Object variable or With block variable not set - при этом моя переменная VBInstance остался не инициализированным).

                            Исправил, спасибо за пост.
                              Версия: 2.0.502
                              - Тепер в среде VBA тоже можно выбрать стиль интерфейса.
                                Coder, прошу вас удалять предыдущие варианты ссылок на ваш адд-ин.

                                Пример. Я на эту тему не заходил давно. У меня в текстовом док-те лежит ссылка (и она работает):
                                http://forum.sources.ru/index.php?act=Atta...attach_id=14927

                                Однако, это не последняя версия плагина; и я ошибочно качаю не то, что нужно. В теме-то на текущий момент указана такая ссылка:
                                http://forum.sources.ru/index.php?act=Atta...attach_id=16231
                                  Цитата Сергей85 @
                                  Coder, прошу вас удалять предыдущие варианты ссылок на ваш адд-ин.

                                  Их могут удалить только модераторы
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:
                                  Страницы: (11) « Первая ... 8 9 [10] 11  все


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0601 ]   [ 26 queries used ]   [ Generated: 25.04.24, 09:32 GMT ]