На главную Наши проекты:
Журнал   ·   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.
  
> Common Controls
    Есть небольшое предложение, сделать набор классов или UserControls (хотя, более чем уверен, что он уже существует в том или ином виде), которые смогут полностью заменить ActiveX MS Common Control, дабы не возникало тем, вроде этой, а так же в целях избавить себя от перетаскивания почти 1 МБ, чтобы пользовать, к примеру, банальный ProgressBar. Если тема имеет смысл, то могу набросать еще для TabControl по прототипу PropertySheet с возможностью добавлять Frame. В качестве поддержки темы набросал класс ProgressBar'а...

    Реализовано:
    SysListView32 — ListView.ctl — Обновлено 10/12/2007
    msctls_progress32 — Progress.ctl
    SysDateTimePick32 — SysDateTimePick.ctl
    SysTabControl32 — TabStrip.ctl — Обновлено 10/12/2007
    SysTreeView32 — TreeView.ctl
    msctls_statusbar32 — StatusBar.ctl — Обновлено 10/12/2007
    SysIpAddress32 — IpAddress.ctl


    CODEBOX controls
    CodeBox.part01.rar
    CodeBox.part02.rar
    CodeBox.part03.rar
    EOF CODEBOX controls
    Сообщение отредактировано: ALXR -

    Прикреплённый файлПрикреплённый файлcommctrl.zip (171.21 Кбайт, скачиваний: 5509)
      Не можно, а нужно. Вношу лепту. Делал не я, но думаю автор нас простит.

      [Компонент помещен в общий пакет]
      Сообщение отредактировано: SCINER -
        парни, вы про клавишу Tab не забывайте.
          Ну, если очень хочется табулировать, то вот это самый оптимальный способ, как мне кажется, в случае использования классов (не UserControls). Видел где-то еще пример с вызовами OLE-ф-ций, но, по словам автора, он не ахти как работает.
          Сообщение отредактировано: ALXR -
            Полезная тема.
            Как наберется более-менее весь состав общих элементов, накопленное можно будет скинуть в кладовку.
              Цитата
              то вот это самый оптимальный способ

              да, самый простой. я тоже подложки делаю из PictureBox'ов.

              но есть проблемы: не срабатывает событие потери фокуса у "корректного" контрола при переводе фокуса сразу на апи-контрол по мыше, и плюс ко всему порядок перехода по таб становиться не корректным. для продакшена это важно.
                Насчет потери фокуса - согласен. Это минус. А вот насчет порядка перехода - так установи нужный TabIndex на PictureBox и будет корректный порядок. Во всяком случае, я обнаружил только первый недостаток. В остальном все ОК...
                Сообщение отредактировано: ALXR -
                  С потерей фокуса можно бороться.
                  Просто контрол надо размещать в UserControl'е
                  и при UserControl_EnterFocus посылать
                  ExpandedWrap disabled
                    Call SendMessage(WM_SETFOCUS, hControl, 0 , 0)
                    Модули приниматься не будут.
                    Что делть если я например хочу 2 табстрипа добавить на форму =???
                      Все очень просто. Изменил attach для наглядности. Он и сделан под класс, дабы быть ОДНИМ файлом. Единственное отличие от класса - сохранять его hWnd самому и ссылаться на него не по имени класса, а по hWnd, в остальном - полная аналогия.
                        Цитата ALXR @
                        Все очень просто. Изменил attach для наглядности. Он и сделан под класс, дабы быть ОДНИМ файлом. Единственное отличие от класса - сохранять его hWnd самому и ссылаться на него не по имени класса, а по hWnd, в остальном - полная аналогия.

                        а события как реализовать ?
                          Посылать дочерним Frame/PictureBox'ам определенные сообщения и их же обрабатывать. К примеру WM_LBUTTONDOWN с X=-1 и Y=-1, которое не может быть сгенерированно действиями пользователя. ;) Ну или этот вариант.

                          Мне больше интересно, как в модуле класса или UserControl'а организовать subclassing. Или таскать тот же модуль за собой? Это было бы лучше, если бы в VB работали директивы INCLUDE (как в QB 4.5, к примеру), иначе, я считаю, такое решение будет хуже моего, даже с обработкой событий через WM_LBUTTONDOWN.
                          Сообщение отредактировано: ALXR -
                            модуль можно написать один на все контролы.
                            хранить в нем структуру где связаны объект класса и hwnd
                            все параметры процедуры передавать на обработку классам.
                            нормальное решение.
                              у меня есть все коммон контролы... ну они все вместе так завязаны... что выдрать только один проблематично :( а таскать все за собой тоже не выход, ... хотя правда осх таскать уже не надо все в ехе
                                2 ALXR:
                                Цитата
                                А как процедуре обработки узнать, какой инстанции класса отправлять уведомление о том или ином сообщении?

                                ExpandedWrap disabled
                                  Option Explicit
                                   
                                  Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, _
                                  ByVal Length As Long)
                                  Private Declare Function SetProp Lib "user32" Alias "SetPropA" (ByVal hwnd As Long, _
                                  ByVal lpString As String, ByVal hData As Long) As Long
                                  Private Declare Function GetProp Lib "user32" Alias "GetPropA" (ByVal hwnd As Long, _
                                  ByVal lpString As String) As Long
                                   
                                  Private Sub Form_Load()
                                    Dim obj As Object
                                    'Записываем указатель на объект в свойства hWnd
                                    Call SetProp(Me.hwnd, "object", ObjPtr(Me))
                                    'Считываем указатель на объект из свойств hWnd
                                    Call CopyMemory(obj, GetProp(Me.hwnd, "object"), 4)
                                    'Проверка
                                    Call MsgBox(obj.hwnd)
                                    'Освобождаем указатель
                                    Call CopyMemory(obj, 0&, 4)
                                  End Sub
                                  А вообще, вот сабклассинг без модуля. В классе.
                                  Прикреплённый файлПрикреплённый файлSubclassInClass.rar (2.33 Кбайт, скачиваний: 2196)
                                    Класса! Не формы...
                                    ps: А такой изврат с машинным кодом я знаю :) Едва ли он применим. :whistle:
                                      почему нет ?
                                        А что проще? Использовать такой класс или все-таки модуль? В данном случае принцип ведет к тому, что нужно стать полным извращенцем (при том, что цель, вобщем-то, та же). :) В данном случае, я пошел по пути наименьшего сопротивления, но если он (модуль) в мою же тему не подходит - удалю, пожалуй. :) Буду сам пользоваться. :yes:
                                        Сообщение отредактировано: ALXR -
                                          Настаиваю на общем классе.
                                          Можно ведь сделать AddHook(hwnd,Me) из класса.
                                          А в единственном модуле хука вести собственную коллекию, где будут связаны hWnd и Объекты классов/Контролов.
                                            ну не удобно же пользоваться модульскими извращениями. это вообще капец полный.
                                            уж лучше asm или как я говорил одним общим модулем.
                                              Ну, удобнее машинным кодом пользоваться? ;) Какие там извращения в модуле? Класс, не спорю, выглядит приятнее, но если следовать по этому же пути, то, в конечном итоге опять можно прийти к comctl32.ocx... Если есть возможность, почему бы ее не использовать? Впрочем, ладно, о вкусах не спорят. Накатаю класс, а обработку событий попробуй сам вживить. :whistle:
                                                Цитата
                                                Цитата
                                                Если есть возможность, почему бы ее не использовать?

                                                WM_LBUTTONDOWN
                                                это назывется возможность ?
                                                ладно действительно о вкусах не спорят.
                                                  SCINER, не переживай ;) Мне с асмом понравилось. Рульно.
                                                    ListView никто не реализовал, а? :)
                                                      Цитата B.V. @
                                                      ListView никто не реализовал, а? :)

                                                      у меня есть. выложу.
                                                        Решил вот попробывать и на основе кода SCINER'a "SysDateTimePick"
                                                        Сделал "SysMonthCal"

                                                        Вот что получилось <_<

                                                        [Компонент помещен в общий пакет]
                                                        Сообщение отредактировано: SCINER -
                                                          ListView как и обещал:
                                                          [Компонент помещен в общий пакет]
                                                            SCINER, а не мог бы ты оформить это в виде двух UserControl'ов?
                                                              SCINER, в ListView очень не хватает SelectRow и SelelectCol ;)
                                                              Сообщение отредактировано: Toleranto -
                                                                Тут тока контролы выкладывать или можно и классы которые заменяют контролы? Могу выложить набор, который реализует класс вместо контрола Winsock.
                                                                Набор из нескольких классов и модуля (для глобализации запросов). Реализованы все события в одном из классов, еще в одном реализован синхронный запрос (ваша функция будет ждать пока не загрузятся данные, а потом продолжит обработку) по методам GET и POST. Немного правда надо описать как юзать в сложных ситуациях, но в простом варианте все просто как лыжи.
                                                                  Цитата Toleranto @
                                                                  SCINER, в ListView очень не хватает SelectRow и SelelectCol ;)

                                                                  Что-то не припомню в ListView возможности выделить столбец... Строку - еще понятно, а столбец как? :huh:
                                                                    Извените, если не правильно написал, просто хотелось бы знать именно строку... а вот про столбец....( бес попутал :o )

                                                                    ALXR , забыл, в твоем варианте ProgressBar не работает установка ProgressBar.max и ProgressBar.min они всегда 100 и 0 в любом случае, что с ними не делай....
                                                                    Сообщение отредактировано: Toleranto -
                                                                      Цитата XPraptor @
                                                                      Тут тока контролы выкладывать или можно и классы которые заменяют контролы?


                                                                      Можно и классы, только они должны быть автономны.
                                                                        Цитата Toleranto @
                                                                        ALXR , забыл, в твоем варианте ProgressBar не работает установка ProgressBar.max и ProgressBar.min они всегда 100 и 0 в любом случае, что с ними не делай....

                                                                        Исправил и поправил первый пост. Теперь работает. Если лень качать заново, то исправление заключается в следующем:

                                                                        Замени Property Let Max и Property Let Min на следующие:
                                                                        ExpandedWrap disabled
                                                                          Property Let Min(ByVal v As Long)
                                                                          SendMessageA hProgress, PBM_SETRANGE, 0, Me.Max * 65536 + v
                                                                          End Property
                                                                           
                                                                          Property Let Max(ByVal v As Long)
                                                                          SendMessageA hProgress, PBM_SETRANGE, 0, v * 65536 + Me.Min
                                                                          End Property
                                                                          Цитата Toleranto @
                                                                          И я попробoвал по другому...

                                                                          Я, кстати, отказался от использования UserControls по одной простой причине: он создает свой hWnd, на котором нужно создать свой контрол - еще один hWnd, и вместо одного получается 2 (два) окна. Класс в этом плане более оптимален, но менее гибок... Гибкость, правда, придается бОльшим объемом кода, но зато нет необходимости использовать UCTL.
                                                                            Еще 4 класса (включая доработанный clsProgress = 5) с примером.
                                                                            - HotKey
                                                                            - StatusBar
                                                                            - SysAnimate
                                                                            - SysIPAddress

                                                                            Кто хочет, может добавить туда обработку событий и т.п.

                                                                            [Компонент помещен в общий пакет]
                                                                            Сообщение отредактировано: SCINER -
                                                                              Привет, а есть контрол вот такой?, извините если туплю
                                                                              Прикреплённая картинка
                                                                              Прикреплённая картинка
                                                                                И ещё бы TreeView :rolleyes:
                                                                                  К Common Controls Splitter не относится, но есть класс, который можешь попробовать и, если надо, довести до ума.
                                                                                  TreeView/ListView/TabControl - довольно громоздкие контролы и в один класс не влезут... Как придем к соглашению, как с ними поступить - сделаем. :)
                                                                                    Спасибо за внимание ;)

                                                                                    Хоть сказал как называется такая вещь :rolleyes:
                                                                                    Сразу нашел кучу всего, и к тому же пример, сделанный тобой, спасибо большое!
                                                                                    Сообщение отредактировано: Большой вопрос -
                                                                                      А чем такой вариант не устраивает.... Так мне кажется проще...
                                                                                      Прикреплённый файлПрикреплённый файлResizeComponents.zip (1.76 Кбайт, скачиваний: 912)
                                                                                        Цитата Toleranto @
                                                                                        А чем такой вариант не устраивает....


                                                                                        А где в твоем примере универсальность?
                                                                                          А как для создаваемого на АПИ компонента задать шрифт и его размер?
                                                                                            Примерно так:
                                                                                            ExpandedWrap disabled
                                                                                              hFont = CreateFont(...)
                                                                                              SendMessage(hMyControl, WM_SETFONT, hFont, True)

                                                                                            Только не следует забывать вызывать DeleteObject(hFont) после того, как контрол (или данный шрифт) больше не нужен.
                                                                                              Примеров по установке шрифтов в сети много, но не один не работает!
                                                                                              Шрифт становится жирным и всё.

                                                                                              Цитата
                                                                                              реализовано:
                                                                                              - msctls_progress32
                                                                                              - SysDateTimePick32
                                                                                              В SysDateTimePick32 есть один глюк (только на VB): открываем этот пример и добавляем на форму TextBox; переводим фокус на него (просто щёлкаем), а потом щелкаем на стрелочку контрола SysDateTimePick32. Стрелка остаётся нажатой а окошечка выбора даты не появляется.

                                                                                              Вот 4 API-контрола
                                                                                              [Компонент помещен в общий пакет]
                                                                                              Сообщение отредактировано: SCINER -
                                                                                                класс TabStrip
                                                                                                всё в одном файле с примером...
                                                                                                [Компонент помещен в общий пакет]
                                                                                                Сообщение отредактировано: SCINER -
                                                                                                  Собрал все в один архив.
                                                                                                    а на форуме vbstreets.ru от Antonariy есть сборка ucComCtl http://bbs.vbstreets.ru/viewtopic.php?t=34151&start=30
                                                                                                    там чтото похожее, но может оттуда можно почерпнуть чтото для дела?
                                                                                                    А вообще, отличная затея с этим контролом.
                                                                                                    Спасибо ребята :yes:
                                                                                                      не могу понять, в ListView можно выставить чекбоксы?
                                                                                                        Добавь стиль LVS_EX_CHECKBOXES
                                                                                                        Сообщение отредактировано: Arcady_XQST -
                                                                                                          Arcady_XQST
                                                                                                          я не могу понять где его врубить...
                                                                                                          если в этом кусочке кода:
                                                                                                          ExpandedWrap disabled
                                                                                                              'изменение стиля отображения
                                                                                                              With ListView1
                                                                                                                .View = LVS_REPORT
                                                                                                                .GridLines = True
                                                                                                                .FullRowSelect = True
                                                                                                              End With

                                                                                                          то нет такого стиля
                                                                                                            ExpandedWrap disabled
                                                                                                              'Добавить в раздел декларации
                                                                                                              Private Const LVS_EX_CHECKBOXES         As Long = &H4&
                                                                                                               
                                                                                                              'Добавить в раздел кода
                                                                                                              Property Get Style() As ListBoxConstants
                                                                                                                Dim dwStyle As Long
                                                                                                                Style = LView.Style And LVS_EX_CHECKBOXES
                                                                                                              End Property
                                                                                                               
                                                                                                              Property Let Style(ByVal vNewValue As ListBoxConstants)
                                                                                                                Call pSetExtendedStyle(LVS_EX_CHECKBOXES, vNewValue = vbListBoxCheckbox)
                                                                                                              End Property


                                                                                                            Как использовать новое свойство:
                                                                                                            ExpandedWrap disabled
                                                                                                                'изменение стиля отображения
                                                                                                                With lv
                                                                                                                  .View = LVS_REPORT
                                                                                                                  .GridLines = True
                                                                                                                  .FullRowSelect = True
                                                                                                                  .Style = vbListBoxCheckbox
                                                                                                                End With
                                                                                                              Обновил архив

                                                                                                              Цитата
                                                                                                              14:26 03.12.2007
                                                                                                              ListView
                                                                                                              - Добавлены события Click, Check
                                                                                                              - Добавлен стиль CheckBox
                                                                                                              - Теперь получает и отдает фокус на форме, как стандартные VB контролы.
                                                                                                                SCINER
                                                                                                                По поводу ListView
                                                                                                                В Style неплохо было бы добавить ещё LVS_SINGLESEL (&H4) ;)

                                                                                                                ExpandedWrap disabled
                                                                                                                  Public Enum eListViewStyle
                                                                                                                    LVS_ICON = &H0
                                                                                                                    LVS_REPORT = &H1
                                                                                                                    LVS_SMALLICON = &H2
                                                                                                                    LVS_LIST = &H3
                                                                                                                    LVS_SINGLESEL =&H4
                                                                                                                  End Enum
                                                                                                                Сообщение отредактировано: SCINER -
                                                                                                                  Люди!
                                                                                                                  Не бросайте на полпути с этим контролом!!
                                                                                                                  Вкинул в проект и хочу доделать.
                                                                                                                  Помогите, чтобы было:
                                                                                                                  1. При клике на ListView_ItemClick(Index As Long) можно было бы получить Key(который добавляется через ItemAdd.)
                                                                                                                  Сообщение отредактировано: OneWay -
                                                                                                                    ok посмотрю
                                                                                                                      SCINER
                                                                                                                      вот человек один помог дописать, посмотри, может сгодится
                                                                                                                      [прикрепленный файл удален модератором]
                                                                                                                      Сообщение отредактировано: SCINER -
                                                                                                                        ;) Я уже сам сделал. Архив обновил.

                                                                                                                        -Added
                                                                                                                        Цитата OneWay @
                                                                                                                        SCINER
                                                                                                                        вот человек один помог дописать, посмотри, может сгодится
                                                                                                                        [прикрепленный файл удален модератором]

                                                                                                                        Не совсем неоптимально.
                                                                                                                          Была ошибка в свойстве Key(index). Пофиксил.

                                                                                                                          Теперь для контролов TabStrip, TreeView и ListView при загрузке формы необходимов вызывать процедуру Initialize().
                                                                                                                            SCINER
                                                                                                                            о, супер!
                                                                                                                            А скажи, для чего появилось:
                                                                                                                            ExpandedWrap disabled
                                                                                                                              Dim g_hShell32 As Long ' LoadLibrary(shell32)
                                                                                                                              Private Declare Function LoadLibraryA Lib "kernel32" (ByVal lpLibFileName As String) As Long
                                                                                                                              Public Declare Function SetFocusAPI Lib "user32.dll" Alias "SetFocus" (ByVal hWnd As Long) As Long

                                                                                                                            это важные аспекты?

                                                                                                                            И добавь пожалуйста событие:
                                                                                                                            ExpandedWrap disabled
                                                                                                                              Public Event MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)

                                                                                                                            нужно отслеживать, какой кнопкой мышатины кликнули по листвьюхе.
                                                                                                                              SetFocusAPI важен, но эту функцию можно поместить внутрь контрола
                                                                                                                              shell32 не столь важен
                                                                                                                                MouseDown, MouseUp в ListView1 сделал.
                                                                                                                                Добавил свойство StatusBar.Height
                                                                                                                                  SCINER
                                                                                                                                  а что за косяки могут быть с MouseUp?
                                                                                                                                  Чего он выёживается? Я тоже пытаюсь присобачить, но до него чего-то событие вообще не доходит

                                                                                                                                  Добавлено:
                                                                                                                                  Прикрути пожалуйста в Lvw, если не сложно, ForeColor, и Bold к фонту...
                                                                                                                                  Сообщение отредактировано: OneWay -
                                                                                                                                    SCINER
                                                                                                                                    воу, круто, наконец-то нашлись люди, которые думают как и я (насчёт перетаскивания mscomctl32)
                                                                                                                                    а действительно, будет ли возможность подключить это событие MouseUp?
                                                                                                                                    Ну очень нужно.

                                                                                                                                    П.С. могу поделиться изменением шрифта в ColumnHeader (цвет, наклонный, курсив)
                                                                                                                                      посмотрите внимательней сообщение №65.
                                                                                                                                        А как справиться со странным глюком: при закрытии программы, использующей некоторые выложенные здесь контролы (проверял со статусбаром, прогрессбаром и табстрипом), выскакивает сообщение типа "Project1.exe - обнаружена ошибка... и бла-бла-бла". В примере, прилагающемся с контролами этого нет. Может быть я как-то некорректно высвобождаю ресурсы?
                                                                                                                                          Lumen
                                                                                                                                          так выложи на тест проект...
                                                                                                                                          а то мало ли что там может быть

                                                                                                                                          Добавлено
                                                                                                                                          SCINER!
                                                                                                                                          как ты смотришь на то, чтобы добавить к листвьюхе:
                                                                                                                                          1. Background color
                                                                                                                                          2. Item.Font (Bold, Color)
                                                                                                                                          3. SubItem.Icon
                                                                                                                                          8-)
                                                                                                                                            SCINER
                                                                                                                                            ну скинер, будь другом. хотябы первые два пункта.
                                                                                                                                            или один из двух

                                                                                                                                            Добавлено: 01.01.2008
                                                                                                                                            у меня появилось два важных вопроса:
                                                                                                                                            1. Как уничтожить объект листвью? Т.к., если в мди-приложении закрыть форму с листвьюхой, то при следующем открытии и инициализации, возникают серьёзные ошибки (пропадают иконки, и последний чекбокс уходит выше всех фиелдов).
                                                                                                                                            2. Если айтем выбран, и потом ещё раз кликнув на нём, то событие ListView1_ItemClick(Index As Long, ByVal Key As String) не выполняется. Как заставить повторно обработаться событию?
                                                                                                                                            Сообщение отредактировано: OneWay -
                                                                                                                                              Глюк с табстрипом как-то связан с манифестом и стилем XP. Без манифеста всё работает вроде нормально. Проект с демонстрацией глюка прикладываю:
                                                                                                                                              Прикреплённый файлПрикреплённый файлПроект.rar (14.85 Кбайт, скачиваний: 697)
                                                                                                                                                А какой глюк то?
                                                                                                                                                  Некорректно завершается программа. С этим компонентом и манифестом в ресурсах при закрытии вылетает сообщение "Обнаружена ошибка, приложение будет закрыто бла бла бла, отправить отчет/не отправлять"
                                                                                                                                                    В модуле добавь

                                                                                                                                                    ExpandedWrap disabled
                                                                                                                                                      Option Explicit
                                                                                                                                                       
                                                                                                                                                      Private Declare Sub InitCommonControls Lib "comctl32" ()
                                                                                                                                                       
                                                                                                                                                      Public m_hMod As Long
                                                                                                                                                       
                                                                                                                                                      Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" ( _
                                                                                                                                                          ByVal lpLibFileName As String) As Long
                                                                                                                                                      Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
                                                                                                                                                       
                                                                                                                                                      Sub Main()
                                                                                                                                                       m_hMod = LoadLibrary("shell32.dll")
                                                                                                                                                       Call InitCommonControls
                                                                                                                                                       Load "ФОРМА"
                                                                                                                                                      end sub


                                                                                                                                                    В форме:
                                                                                                                                                    ExpandedWrap disabled
                                                                                                                                                      Private Sub Form_Unload(Cancel As Integer)
                                                                                                                                                       FreeLibrary m_hMod
                                                                                                                                                      end sub
                                                                                                                                                    Сообщение отредактировано: Toleranto -
                                                                                                                                                      Причем можно(и даже лучше) без последнего...
                                                                                                                                                        Спасибо, заработало!
                                                                                                                                                        Только не совсем понятно, зачем надо принудительно грузить shell32.dll... Common Control'ы ведь находятся в comctl32.dll. Сорри если глупый вопрос, просто интересно разобраться...
                                                                                                                                                          [Компонент помещен в общий пакет]
                                                                                                                                                          И где этот пакет?
                                                                                                                                                            Не ответили...
                                                                                                                                                            Наверно комуниздили здесь....
                                                                                                                                                            http://www.planet-source-code.com/vb/scripts/BrowseCategoryOrSearchResults.asp?lngWId=1&blnAuthorSearch=TRUE&lngAuthorId=227143051&strAuthorName=Carles%20P.V.&txtMaxNumberOfEntriesPerPage=25
                                                                                                                                                              Читали первое сообщение?
                                                                                                                                                              Цитата ALXR @
                                                                                                                                                              Выделил данный набор в отдельный проект и выделил ему отдельную страничку на сайте — http://mega-set.com/comctl/
                                                                                                                                                              Сообщение отредактировано: SCINER -
                                                                                                                                                                Ссылка внутри на страрый сайт
                                                                                                                                                                  ALXR "Эту ссылку" минимум 10 раз открывал, было "нет страницы для отображения".
                                                                                                                                                                  Насколько помню только там было что-то типа flashmobile, вот и поискал за бугром.
                                                                                                                                                                  Сейчас другая ссылка, а внутри старая http://flashmobile.ru/comctl/commctrl.rar и таже песня,
                                                                                                                                                                  Действие отменено нет страницы для отображения
                                                                                                                                                                    Цитата ANDLL @
                                                                                                                                                                    Ссылка внутри на страрый сайт

                                                                                                                                                                    Окей, исправил. Только пока с хостингом проблема. Почему-то он не отдает бинарные файлы =(
                                                                                                                                                                    Хостер обещает починить.
                                                                                                                                                                      Поправьте TabStrip и ещё сделайте не всё в одном а для каждого контрола свой проэкт и всё в одну папку так лучше и нагляднее будет.

                                                                                                                                                                      -----------
                                                                                                                                                                      Пишу как чурка, тороплюсь...
                                                                                                                                                                        Кто нибудь знает, можно у ListView увеличить высоту строки???
                                                                                                                                                                          Увеличить FontSize
                                                                                                                                                                            Ну не, такой вариант не катит. Менять размер шрифта не выход.
                                                                                                                                                                              ownerdraw + WM_MEASUREITEM + MEASUREITEMSTRUCT
                                                                                                                                                                                Может кому будет интересно:
                                                                                                                                                                                Common Controls Vista

                                                                                                                                                                                >Button
                                                                                                                                                                                >ProgressBar
                                                                                                                                                                                >Frame
                                                                                                                                                                                >CheckBox
                                                                                                                                                                                >UpDown

                                                                                                                                                                                Конечно весь пакет Commoncontrol он не заменит, но для глаз приятно.

                                                                                                                                                                                Вот теперь получилось
                                                                                                                                                                                Сообщение отредактировано: VisualProg -

                                                                                                                                                                                Прикреплённый файлПрикреплённый файлVista.rar (19.88 Кбайт, скачиваний: 745)
                                                                                                                                                                                  Примечательно, что архив находится в "Мусоре"...
                                                                                                                                                                                    Цитата B.V. @
                                                                                                                                                                                    Примечательно, что архив находится в "Мусоре"...

                                                                                                                                                                                    Я как раз об этом думал, просто команда прикрепить работает через раз, вот приходится отдельно выделять место для хранения.
                                                                                                                                                                                      VisualProg
                                                                                                                                                                                      Все, что нашел при беглом просмотре...
                                                                                                                                                                                      1. frame - Caption сразу не меняется... см. тут, нет Enable!
                                                                                                                                                                                      2. кнопки... посмотри API ReleaseCapture & SetCapture и выбрось таймеры... не нажимается 2 раза приDoubleClick
                                                                                                                                                                                      3. checkbox - вроде ок, но caption...
                                                                                                                                                                                      4. ап-даун - все плохо. Не работает! юзай val(text1.text) хотябы...
                                                                                                                                                                                      5. прогресбар - при max<1 работает! И нет выбора цвета!
                                                                                                                                                                                        Цитата Black Star @
                                                                                                                                                                                        1. frame - Caption сразу не меняется... см. тут, нет Enable!

                                                                                                                                                                                        Для меня это слишком сложно, да и вроде не так это важно.

                                                                                                                                                                                        Цитата Black Star @
                                                                                                                                                                                        нет Enable!

                                                                                                                                                                                        Исправил

                                                                                                                                                                                        Цитата Black Star @
                                                                                                                                                                                        2. кнопки... посмотри API ReleaseCapture & SetCapture и выбрось таймеры... не нажимается 2 раза приDoubleClick

                                                                                                                                                                                        Double Click срабатывает работает, а на счет ReleaseCapture и SetCapture по подробнее обьясни, на примере.

                                                                                                                                                                                        Цитата Black Star @
                                                                                                                                                                                        4. ап-даун - все плохо. Не работает! юзай val(text1.text) хотябы...

                                                                                                                                                                                        Как не работает?! Ты ValueChange измени на число > 0 и всё ок.

                                                                                                                                                                                        Цитата Black Star @
                                                                                                                                                                                        5. прогресбар - при max<1 работает! И нет выбора цвета!

                                                                                                                                                                                        Здесь сложность есть не большая, там в качестве Value используется Image растягиваемый по Width, так вот цвет у картинки изменить нельзя (ну традиционными методами)При максе изменил.
                                                                                                                                                                                        Сообщение отредактировано: VisualProg -

                                                                                                                                                                                        Прикреплённый файлПрикреплённый файлVista.rar (20.04 Кбайт, скачиваний: 724)
                                                                                                                                                                                          Цитата ALXR @
                                                                                                                                                                                          Выделил данный набор в отдельный проект и выделил ему отдельную страничку на сайте — http://mega-set.com/comctl/

                                                                                                                                                                                          Так много выделил ;) А страница не грузится...
                                                                                                                                                                                            Нашел в нете такой архивчик, весь выложить не могу, тыт также исходники контролов, но вот почему-то не могу отдельно их использовать, не знаю правильно ли все делаю.... пробовал скомпилировать, неполучилось, посмотрите, может пригодиться кому
                                                                                                                                                                                            Прикреплённый файлПрикреплённый файлvbComCtl.part01.rar (195.31 Кбайт, скачиваний: 780)
                                                                                                                                                                                              Вот вторая часть архива
                                                                                                                                                                                              Прикреплённый файлПрикреплённый файлvbComCtl.part02.rar (87.18 Кбайт, скачиваний: 772)
                                                                                                                                                                                                Что-то в эту тему мало захаживают чтоли?

                                                                                                                                                                                                сам разобрался с двойным кликом ;)

                                                                                                                                                                                                делаю свой вклад, ImageList. мне понравился
                                                                                                                                                                                                Прикреплённый файлПрикреплённый файлImage_List.rar (84.9 Кбайт, скачиваний: 816)
                                                                                                                                                                                                  Поле iImage в структуре LV_ITEM. Получить структуру можно методом отправки сообщения LVM_INSERTITEM.
                                                                                                                                                                                                    Ну что же, я продолжаю мучить тему контролов, которая для меня интерестна, но пока не понятна.

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

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

                                                                                                                                                                                                    кто сможет помочь. пока это единственное свойство, которое мне сейчас в нем дополнительно нужно.
                                                                                                                                                                                                    Прикреплённый файлПрикреплённый файлctlKGRichTextBox.rar (6.34 Кбайт, скачиваний: 749)
                                                                                                                                                                                                      в Windows7 скомпилированный вариант не работает.
                                                                                                                                                                                                      Падает на строке
                                                                                                                                                                                                      ExpandedWrap disabled
                                                                                                                                                                                                        Call SendMessage(hTabStrip, TCM_INSERTITEMA, 10, tsItem)


                                                                                                                                                                                                      Текст ошибки:
                                                                                                                                                                                                      Цитата
                                                                                                                                                                                                      ---------------------------
                                                                                                                                                                                                      CommCtrl
                                                                                                                                                                                                      ---------------------------
                                                                                                                                                                                                      Run-time error '-2147417848 (80010108)':

                                                                                                                                                                                                      Automation error
                                                                                                                                                                                                      The object invoked has disconnected from its clients.
                                                                                                                                                                                                      ---------------------------
                                                                                                                                                                                                      ОК
                                                                                                                                                                                                      ---------------------------
                                                                                                                                                                                                        как вариант, манифест надо делать.
                                                                                                                                                                                                          Цитата nash @
                                                                                                                                                                                                          как вариант, манифест надо делать.

                                                                                                                                                                                                          манифест есть
                                                                                                                                                                                                            SCINER

                                                                                                                                                                                                            Писал, так как понадобилось выделение нужной строки в ListView... Может быть понадобится...

                                                                                                                                                                                                            ExpandedWrap disabled
                                                                                                                                                                                                              Public Property Get SelectedItem() As Long
                                                                                                                                                                                                                  Dim lFlags As Long
                                                                                                                                                                                                               
                                                                                                                                                                                                                  lFlags = LVNI_SELECTED
                                                                                                                                                                                                                  If GetFocus() = hListView Then lFlags = lFlags Or LVNI_FOCUSED
                                                                                                                                                                                                               
                                                                                                                                                                                                                  SelectedItem = SendMessage(hListView, LVM_GETNEXTITEM, &HFFFF, ByVal lFlags)
                                                                                                                                                                                                              End Property
                                                                                                                                                                                                               
                                                                                                                                                                                                              Public Property Let SelectedItem(ByVal lIndex As Long)
                                                                                                                                                                                                              Const LVIS_FOCUSED As Long = &H1
                                                                                                                                                                                                              Const LVIS_SELECTED As Long = &H2
                                                                                                                                                                                                               Call ListView_SetItemState(lIndex, LVIS_FOCUSED Or LVIS_SELECTED, LVIS_FOCUSED Or LVIS_SELECTED)
                                                                                                                                                                                                              End Property
                                                                                                                                                                                                               
                                                                                                                                                                                                              Private Function ListView_SetItemState(i As Long, State As Long, Mask As Long) As Boolean
                                                                                                                                                                                                               
                                                                                                                                                                                                                Dim lvi As LVITEM
                                                                                                                                                                                                                lvi.State = State
                                                                                                                                                                                                                lvi.stateMask = Mask
                                                                                                                                                                                                                ListView_SetItemState = SendMessage(hListView, LVM_SETITEMSTATE, ByVal i, lvi)
                                                                                                                                                                                                              End Function


                                                                                                                                                                                                            Да и ещё, попробуй вариант с работой под Se7en, у меня всё без проблем работает...

                                                                                                                                                                                                            PS Так как коменты под Toleranto оставлять не могу, пришлось завести нового пользователя :yes-sad:
                                                                                                                                                                                                            Сообщение отредактировано: Dirk -

                                                                                                                                                                                                            Прикреплённый файлПрикреплённый файлclsTabStrip.rar (2.8 Кбайт, скачиваний: 819)
                                                                                                                                                                                                              Проверил твой вариант. Не работает. При запуске из студии - работает, а скомпилированный вариант - нет.
                                                                                                                                                                                                              Падает естественно в том-же месте.
                                                                                                                                                                                                                SCINER

                                                                                                                                                                                                                Вот, запускал на виртуальной машине, TabStrip реализован данным классом, работает без проблем... (единственное, что скомпилирована программа в WinXP)

                                                                                                                                                                                                                user posted image
                                                                                                                                                                                                                  Цитата Dirk @
                                                                                                                                                                                                                  скомпилирована программа в WinXP

                                                                                                                                                                                                                  кинь сюда пример скомпилированный в XP. гляну
                                                                                                                                                                                                                    Цитата Dirk @
                                                                                                                                                                                                                    SCINER

                                                                                                                                                                                                                    забирай

                                                                                                                                                                                                                    и эта прога падает в том-же месте судя по всему.
                                                                                                                                                                                                                      SCINER

                                                                                                                                                                                                                      Вопрос, какая версия Win7???

                                                                                                                                                                                                                      Тестировал на Win7 Максимальная x86 и x64 - работает без каких либо позывов на ошибку (сборка RTM 7600.16385)

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

                                                                                                                                                                                                                      P.S. Был удивлён, но под x64 почти в 3 раза меньше кушает оперативной памяти программа...
                                                                                                                                                                                                                      Сообщение отредактировано: Dirk -
                                                                                                                                                                                                                        Цитата Dirk @
                                                                                                                                                                                                                        SCINER
                                                                                                                                                                                                                        Вопрос, какая версия Win7 ?

                                                                                                                                                                                                                        Windows Server 2008 R2 7600 DataCenter
                                                                                                                                                                                                                          Цитата SCINER @
                                                                                                                                                                                                                          Цитата Dirk @
                                                                                                                                                                                                                          SCINER
                                                                                                                                                                                                                          Вопрос, какая версия Win7 ?

                                                                                                                                                                                                                          Windows Server 2008 R2 7600 DataCenter

                                                                                                                                                                                                                          Ну это не совсем Windows Se7en... Серверной версии у меня под рукой нет чтобы проверить... <_<
                                                                                                                                                                                                                            На висте тоже не работает.
                                                                                                                                                                                                                              SCINER, nash

                                                                                                                                                                                                                              Попробуйте ещё раз
                                                                                                                                                                                                                              Прикреплённый файлПрикреплённый файлReNamer.rar (56.72 Кбайт, скачиваний: 749)
                                                                                                                                                                                                                                Поставил Vista x86 в виртуалке, всё нормально.

                                                                                                                                                                                                                                user posted image

                                                                                                                                                                                                                                Исходники прикрепил.
                                                                                                                                                                                                                                Прикреплённый файлПрикреплённый файлTS.rar (17.98 Кбайт, скачиваний: 690)
                                                                                                                                                                                                                                  Цитата Dirk @
                                                                                                                                                                                                                                  SCINER, nash

                                                                                                                                                                                                                                  Попробуйте ещё раз

                                                                                                                                                                                                                                  Я уже снес к чертям этот Windows Server 2008 R2 и поставил XP.
                                                                                                                                                                                                                                    SCINER
                                                                                                                                                                                                                                    ExpandedWrap disabled
                                                                                                                                                                                                                                      Call SendMessage(hTabStrip, TCM_INSERTITEMA, 10, tsItem)


                                                                                                                                                                                                                                    При тестах TabStrip, заметил, что позиция, где указано значение 10, отвечает за то, где будет добавлена новая вкладка.

                                                                                                                                                                                                                                    Например если будет ноль, то все новые вкладки будут добавляться слева... Если поставить значение текущего количества вкладок, то все новые вкладки будут добавляться справа...

                                                                                                                                                                                                                                    Ну если не сложно, обнови в исходниках TabStrip. Добавлено возможность вкладок с иконками, и установка минимальной ширины вкладки
                                                                                                                                                                                                                                    Сообщение отредактировано: Dirk -
                                                                                                                                                                                                                                      а можно отключить чекбоксы в дереве? если да то как ?
                                                                                                                                                                                                                                        Походу нельзя.
                                                                                                                                                                                                                                        Цитата MSDN
                                                                                                                                                                                                                                        TVS_CHECKBOXES
                                                                                                                                                                                                                                        Once a tree-view control is created with this style, the style cannot be removed. Instead, you must destroy the control and create a new one in its place. Destroying the tree-view control does not destroy the check box state image list. You must destroy it explicitly.
                                                                                                                                                                                                                                          Здрвствуйте!

                                                                                                                                                                                                                                          Предлагаю в топку ещё два контролла:

                                                                                                                                                                                                                                          Win16Text - контролл, имитирующий консоль Win16, который по своей функциональности не уступает TextBox-у (так как построен на его основе)
                                                                                                                                                                                                                                          IconContainer - контролл, хранящий в себе все изображения контейнера "*.ICO".

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

                                                                                                                                                                                                                                          Прикреплённый файлПрикреплённый файлUserControls.rar (49,12 Кбайт, скачиваний: 718)
                                                                                                                                                                                                                                            Цитата VisualProg @
                                                                                                                                                                                                                                            Предлагаю в топку ещё два контролла:

                                                                                                                                                                                                                                            Хорошо ты свой креатив назвал :blink:

                                                                                                                                                                                                                                            Win16Text - красиво, но...
                                                                                                                                                                                                                                            Цитата VisualProg @
                                                                                                                                                                                                                                            по своей функциональности не уступает TextBox-у
                                                                                                                                                                                                                                            уступает, так как нет переноса букофф. Просто уходят за пределы экрана и все. Недоделочка :(

                                                                                                                                                                                                                                            IconContainer - вопрос: зачем это? Данный контрол имел бы смысл, если позволял хотя бы тыркать мышкой по иконкам и выбирать их (типа свойство сделать SelectedItem). А вывести в цикле несколько картинок на экран - проще сделать без контрола...
                                                                                                                                                                                                                                              Цитата Da$aD @
                                                                                                                                                                                                                                              А вывести в цикле несколько картинок на экран - проще сделать без контрола...

                                                                                                                                                                                                                                              Цикл для показа, каждый элемент, если заметил, находится в своей "ячейке". О ней-же можно получить информацию (размер).
                                                                                                                                                                                                                                                Цитата VisualProg @
                                                                                                                                                                                                                                                О ней-же можно получить информацию (размер).

                                                                                                                                                                                                                                                Не догнал. Где и как?
                                                                                                                                                                                                                                                  Цитата Da$aD @
                                                                                                                                                                                                                                                  Где и как?


                                                                                                                                                                                                                                                  IconContainer1.ReceiveGetImage([Size], [Depth]) - получить изображение
                                                                                                                                                                                                                                                  ReceiveGetSize([Size], [Depth]) - получить размер изображения

                                                                                                                                                                                                                                                  Как-то так...
                                                                                                                                                                                                                                                    Цитата Trivu @
                                                                                                                                                                                                                                                    ...нет сорта по клику...

                                                                                                                                                                                                                                                    Автору предлагается предложить вариант того, как это сделать.
                                                                                                                                                                                                                                                    Насчет стрелочек на sysheader тоже клевое замечание.

                                                                                                                                                                                                                                                    По поводу всего остального, несмотря на пометку, звучит таки как требование. Как автор может заметить, данные исходники предлагаются для обсуждения и доработки участниками треда. Никто не мешает автору взять указанный исходник и доработать означенные недостатки, затем выложить обратно.
                                                                                                                                                                                                                                                      Trivu
                                                                                                                                                                                                                                                      Цитата Trivu @
                                                                                                                                                                                                                                                      неизвестно как программно выбрать айтем

                                                                                                                                                                                                                                                      Я уже писал тут
                                                                                                                                                                                                                                                      Сообщение отредактировано: Dirk -
                                                                                                                                                                                                                                                        Дак выложи. Мы обязательно добавим и код и описание в общую сборку.
                                                                                                                                                                                                                                                          Да, это - хорошая идея.
                                                                                                                                                                                                                                                          В CommonDialogControl у меня не работал FontDialog("говорит", что шрифты не установлены), надеюсь у вас такого не будет
                                                                                                                                                                                                                                                            Цитата WareX @
                                                                                                                                                                                                                                                            В CommonDialogControl у меня не работал FontDialog("говорит", что шрифты не установлены)

                                                                                                                                                                                                                                                            Я на эту тему топик создавал, проблема, оказывается, решается просто.
                                                                                                                                                                                                                                                            No fonts exist
                                                                                                                                                                                                                                                              2Trivu:

                                                                                                                                                                                                                                                              Цитата Trivu @
                                                                                                                                                                                                                                                              Ни один человек не удосужился взять контрол и включить в него свою наработку. Ни один.


                                                                                                                                                                                                                                                              - всем все по фигу,
                                                                                                                                                                                                                                                              - все дают только советы а показать свой ум в виде кода не суждено ибо дурь каждого видна будет.

                                                                                                                                                                                                                                                              Цитата Trivu @
                                                                                                                                                                                                                                                              А вообще, я считаю, что раз уж выкладывать что-нибудь для общего блага, то выкладывать стОящее.


                                                                                                                                                                                                                                                              а судьи кто. и противоречие следующей твоей фразе.
                                                                                                                                                                                                                                                              Выкладывать надо законченное. Чтобы вот видно было.
                                                                                                                                                                                                                                                                А я думал было профессионально написать все контролы, но теперь понял, что это нафиг никому не нужно.
                                                                                                                                                                                                                                                                Спасибо за внимание.
                                                                                                                                                                                                                                                                  Цитата Trivu @
                                                                                                                                                                                                                                                                  А я думал было профессионально написать все контролы, но теперь понял, что это нафиг никому не нужно.


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

                                                                                                                                                                                                                                                                  Даже по этому разделу форума это видно: сидят одни школьники и прогульщики-студенты, стареющий виндузовый админ и модерирует это все чел, у которого свои особые представления об общепринятых вещах.

                                                                                                                                                                                                                                                                  У меня была идея замутить что-то совсем глобальное, проистекающее от ВБ6, но не было и нет возможностей для этого. Да и поддержки это не снискало.

                                                                                                                                                                                                                                                                  PS: Я смотрел твой контрол - мне понравилось.
                                                                                                                                                                                                                                                                  При некоторых общих соглашениях об оформлении исходников можно было бы что-то замутить. Зря убрал его.

                                                                                                                                                                                                                                                                  Сообщения были разделены в тему "на чём же народ теперь тогда программирует?"
                                                                                                                                                                                                                                                                    Хорошо..

                                                                                                                                                                                                                                                                    Вот огромная туча контролов, включая ВСЕ те, что так желались в текущей теме.
                                                                                                                                                                                                                                                                    Использовать в коммерческих продуктах не воспрещается. Автору на них уже давно наплевать, о чём он сам неоднократно говорил.

                                                                                                                                                                                                                                                                    Прикреплённый файлПрикреплённый файлCodeBox.part01.rar (199,22 Кбайт, скачиваний: 1711)
                                                                                                                                                                                                                                                                    Прикреплённый файлПрикреплённый файлCodeBox.part02.rar (199,22 Кбайт, скачиваний: 1452)
                                                                                                                                                                                                                                                                    Прикреплённый файлПрикреплённый файлCodeBox.part03.rar (105,74 Кбайт, скачиваний: 1505)

                                                                                                                                                                                                                                                                    З.Ы. Все их можно использовать по отдельности без особых сложностей.
                                                                                                                                                                                                                                                                    Желаю удачи.
                                                                                                                                                                                                                                                                    Сообщение отредактировано: Trivu -
                                                                                                                                                                                                                                                                      Намедни пришло письмо от гражданина из Испании. Благодарит наш форум за компонент ipaddr (там указан мой старый e-mail). Дал ссылку на пример, где его использовал: http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=73614&lngWId=1
                                                                                                                                                                                                                                                                        Предлагаю очередной контролл - ServerCTR. Он позволяет имитировать сервер и позволяет связать десяток, другой пользователей, между собой. (ведь в обычном WinSock этого не придусмотренно). Всё описание и примеры находятся в архиве, но на всякий случай описание размещу и здесь:

                                                                                                                                                                                                                                                                        =========================================================
                                                                                                                                                                                                                                                                        ServerCtr.ctl
                                                                                                                                                                                                                                                                        =========================================================

                                                                                                                                                                                                                                                                        ServerCtr - контролл, работающий как сервер, на основе компа-
                                                                                                                                                                                                                                                                        нента WinSock.ocx.

                                                                                                                                                                                                                                                                        =========================================================
                                                                                                                                                                                                                                                                        1 Свойства
                                                                                                                                                                                                                                                                        =========================================================

                                                                                                                                                                                                                                                                        Свойство: Значения: Описание:
                                                                                                                                                                                                                                                                        ************* ************* *************
                                                                                                                                                                                                                                                                        Protocol (TCP/UDP) - Протокол работы всего се-
                                                                                                                                                                                                                                                                        рвера.

                                                                                                                                                                                                                                                                        Port (0...65535) - Порт/список портов, для
                                                                                                                                                                                                                                                                        каждого клиента сервера

                                                                                                                                                                                                                                                                        SeparatorPorts (String) - разделитель портов, для да-
                                                                                                                                                                                                                                                                        льнейшего парсинга.

                                                                                                                                                                                                                                                                        ServerIP (IP) - IP адрес компьютера, к ко-
                                                                                                                                                                                                                                                                        торому будут обращаться кли-
                                                                                                                                                                                                                                                                        енты (адрес ПК, где размещён
                                                                                                                                                                                                                                                                        сервер)

                                                                                                                                                                                                                                                                        ClientCount (0..255) - колличество связуемых кли-
                                                                                                                                                                                                                                                                        ентов.

                                                                                                                                                                                                                                                                        =========================================================
                                                                                                                                                                                                                                                                        2 Методы
                                                                                                                                                                                                                                                                        =========================================================

                                                                                                                                                                                                                                                                        Connection(ClientIndex As Byte, Value As String)
                                                                                                                                                                                                                                                                        Момент подключения/выхода (Value) клиента ClientIndex.

                                                                                                                                                                                                                                                                        GetData(ClientIndex As Byte, Value As String)
                                                                                                                                                                                                                                                                        Момент получения данных Value от клиента ClientIndex.

                                                                                                                                                                                                                                                                        InitClients(ClientIndex As Byte, ClientPort As String)
                                                                                                                                                                                                                                                                        Момент инициализации ClientIndex клиента с портом ClientPort.

                                                                                                                                                                                                                                                                        Error(ClientIndex As Byte, Value As String)
                                                                                                                                                                                                                                                                        Момент ошибки Value, которая произошла в момент обращения к
                                                                                                                                                                                                                                                                        клиенту ClientIndex.

                                                                                                                                                                                                                                                                        =========================================================
                                                                                                                                                                                                                                                                        3 Процедуры
                                                                                                                                                                                                                                                                        =========================================================

                                                                                                                                                                                                                                                                        InitServer() - процедура инициализации сервера, которая переводит
                                                                                                                                                                                                                                                                        все WinSock-и в режим ожидания, после чего к ним могут подклю-
                                                                                                                                                                                                                                                                        чаться клиенты.

                                                                                                                                                                                                                                                                        UnloadServer() - процедура позволяющая диструктировать сервер
                                                                                                                                                                                                                                                                        и сбросить все данные о нём.

                                                                                                                                                                                                                                                                        ToSendToClient(ClientIndex As Byte, Value As String) - процедура
                                                                                                                                                                                                                                                                        отправления клиенту ClientIndex сообщения Value.

                                                                                                                                                                                                                                                                        ToSendToAll(Value As String, Optional ByVal ExceptClient As Byte = 0) -
                                                                                                                                                                                                                                                                        процедура отправления сообщения Value всем пользователям,
                                                                                                                                                                                                                                                                        кроме пользователя ExceptClient (как правило, это текущий по-
                                                                                                                                                                                                                                                                        льзователь)

                                                                                                                                                                                                                                                                        =========================================================
                                                                                                                                                                                                                                                                        4 Функции
                                                                                                                                                                                                                                                                        =========================================================

                                                                                                                                                                                                                                                                        GetClientConnect(ClientIndex As Byte) As Boolean - функция возраща-
                                                                                                                                                                                                                                                                        ющая логическое значение активности клиента ClientIndex.
                                                                                                                                                                                                                                                                        Сообщение отредактировано: VisualProg -
                                                                                                                                                                                                                                                                          Малость переделал, теперь WinSock.ocx не нужен

                                                                                                                                                                                                                                                                          Прикреплённый файлПрикреплённый файлServerControl.rar (89,83 Кбайт, скачиваний: 2351)
                                                                                                                                                                                                                                                                            Вопрос такой

                                                                                                                                                                                                                                                                            Как выбрать итем понятно, а как сделать прокрутку к выбранному итему (например итем ранее был в начале списка, а потом выбран итем был в конце списка)

                                                                                                                                                                                                                                                                            Разобрался

                                                                                                                                                                                                                                                                            ExpandedWrap disabled
                                                                                                                                                                                                                                                                              Public Sub EnsureVisible(ByVal lIndex As Long)
                                                                                                                                                                                                                                                                                  Call SendMessage(hwndLV, LVM_ENSUREVISIBLE, lIndex - vbNull, ByVal cNull)
                                                                                                                                                                                                                                                                              End Sub
                                                                                                                                                                                                                                                                            Сообщение отредактировано: Dirk -
                                                                                                                                                                                                                                                                              1.Ok = кучка API controls + WinApiForVb library contains over 900 KB of API declarations
                                                                                                                                                                                                                                                                              только до RichEdit длл путь надо изменить там он прямой
                                                                                                                                                                                                                                                                              http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=62060&lngWId=1
                                                                                                                                                                                                                                                                              2.и по-мелочи но много
                                                                                                                                                                                                                                                                              http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=69226&lngWId=1

                                                                                                                                                                                                                                                                              регистрация tlb RegTlbПрикреплённый файлRegTlb.rar (2,42 Кбайт, скачиваний: 1078)
                                                                                                                                                                                                                                                                              Сообщение отредактировано: UFOpera -
                                                                                                                                                                                                                                                                                Компанент, написанный по мотивам ShellListView из Delphi. Смыслв том, чтобы заменить совокупность DirListBox и FileListBox одним, более привычным компанентом TreeView, но не простым TreeView-ом, а специализированным Explorer-ом. Не требует никаких сторонних библиотек (только самое необходимое - stdole2.tlb).

                                                                                                                                                                                                                                                                                Отрисовка и прочие алгоритмы выполненны без WinApi, силами VB6.0

                                                                                                                                                                                                                                                                                Основные свойтва:
                                                                                                                                                                                                                                                                                DragAndDrop As Long - включить/выключить режим DAD
                                                                                                                                                                                                                                                                                Path As String - путь (при смене пути происходит отрисовка)
                                                                                                                                                                                                                                                                                Filter As Long - фильтр отображаемых файлов и папок (vbFileAttributes)
                                                                                                                                                                                                                                                                                IntervalX - отступ между иконками по ширине
                                                                                                                                                                                                                                                                                SizeIconX/SizeIconY - размер иконок при отрисовке

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

                                                                                                                                                                                                                                                                                Всем кому не лень, просьба помочь "научить" контролл правельно запускать программы (Shell ...) так как это делает Explorer.exe, а то VB почему то запускает программу с параметром текущего App.Path (реализованно)

                                                                                                                                                                                                                                                                                Explorer.rar
                                                                                                                                                                                                                                                                                Прикреплённый файлПрикреплённый файлExplorer.rar (9,03 Кбайт, скачиваний: 1107)
                                                                                                                                                                                                                                                                                Сообщение отредактировано: VisualProg -
                                                                                                                                                                                                                                                                                  Для таких задач есть ShellExecute.
                                                                                                                                                                                                                                                                                    Цитата coder @
                                                                                                                                                                                                                                                                                    Для таких задач есть ShellExecute.

                                                                                                                                                                                                                                                                                    Спасибо! даже не знал о подобном, думал Shell-ом всё ограничивается

                                                                                                                                                                                                                                                                                    ExpandedWrap disabled
                                                                                                                                                                                                                                                                                      Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
                                                                                                                                                                                                                                                                                        (ByVal hWnd As Long, ByVal lpOperation As String, _
                                                                                                                                                                                                                                                                                        ByVal lpFile As String, ByVal lpParameters As String, _
                                                                                                                                                                                                                                                                                        ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      Private Declare Function ShellExecuteForExplore Lib "shell32.dll" Alias "ShellExecuteA" _
                                                                                                                                                                                                                                                                                        (ByVal hWnd As Long, ByVal lpOperation As String, _   ByVal lpFile As String, lpParameters As Any, _
                                                                                                                                                                                                                                                                                        lpDirectory As Any, ByVal nShowCmd As Long) As Long


                                                                                                                                                                                                                                                                                    буду применять
                                                                                                                                                                                                                                                                                      Ещё в добавку: Для Shell нужно указать запускающую программу, а ShellExecute сам определяеть какой файл чем открыть.
                                                                                                                                                                                                                                                                                        Цитата coder @
                                                                                                                                                                                                                                                                                        ShellExecute сам определяеть какой файл чем открыть.

                                                                                                                                                                                                                                                                                        Заметил, но в ОС должны быть ассоциации программ и файлов, поэтому всё равно придётся "учить" ос, что *.ini;*.inf и прочие файлы, можно открыть как текст
                                                                                                                                                                                                                                                                                          Цитата VisualProg @
                                                                                                                                                                                                                                                                                          поэтому всё равно придётся "учить" ос, что *.ini;*.inf и прочие файлы, можно открыть как текст

                                                                                                                                                                                                                                                                                          так вроде ini и inf и так по умолчанию открываются блокнотом...
                                                                                                                                                                                                                                                                                            Эх, добавлю-ка сюда свою коллекцию контролов. Разрабатывались с нуля (без использования оберток) для одного крупного проекта, который сейчас заброшен, почти все компоненты поддерживают скины.

                                                                                                                                                                                                                                                                                            Ctrl.zip - библиотека, исходники и тестовый проект.
                                                                                                                                                                                                                                                                                            GrayBlue.zip - скин.

                                                                                                                                                                                                                                                                                            Кому понадобится, может причесать (хотя вроде бы все нормально работает). Если кто-нибудь захочет их использовать, просьба сообщить.

                                                                                                                                                                                                                                                                                            файлы здесь
                                                                                                                                                                                                                                                                                            Прикреплённый файлПрикреплённый файлCtrl.part01.rar (195,31 Кбайт, скачиваний: 1177)
                                                                                                                                                                                                                                                                                            Прикреплённый файлПрикреплённый файлCtrl.part02.rar (163,28 Кбайт, скачиваний: 1201)
                                                                                                                                                                                                                                                                                            Прикреплённый файлПрикреплённый файлGrayBlue.part1.rar (195,31 Кбайт, скачиваний: 1174)
                                                                                                                                                                                                                                                                                            Прикреплённый файлПрикреплённый файлGrayBlue.part2.rar (13,79 Кбайт, скачиваний: 1248)
                                                                                                                                                                                                                                                                                              Скинер, а помнишь, я тебе как-то давал свою реализацию HotKey контрола? Можешь её прикрепить, т.к. мои исходники канули в лету с винтом старым. :yes-sad:
                                                                                                                                                                                                                                                                                                Если подключить в форму программы какой-нибудь контрол-элемент ActiveX, то возможен такой вариант, что при каждом запуске микрик будет выдавать MessageBox примерно следующего содержания:
                                                                                                                                                                                                                                                                                                This application is about to initialize ActiveX Controls that might be unsafe. If you trust the source of this document, select Yes and ... и т.д. и т.п.
                                                                                                                                                                                                                                                                                                Скажу честно, это просто достает...
                                                                                                                                                                                                                                                                                                Нашел выход: надо добавить в реестр
                                                                                                                                                                                                                                                                                                HKEY_CURRENT_USERSoftwareMicrosoftVBASecurity
                                                                                                                                                                                                                                                                                                значение DWORD параметра LoadControlsInForms = 1
                                                                                                                                                                                                                                                                                                тогда это сообщение перестает появляться
                                                                                                                                                                                                                                                                                                Код:

                                                                                                                                                                                                                                                                                                Сообщения были разделены в тему "Flood"
                                                                                                                                                                                                                                                                                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                                                                                                                                                                                                                                                                0 пользователей:


                                                                                                                                                                                                                                                                                                Рейтинг@Mail.ru
                                                                                                                                                                                                                                                                                                [ Script execution time: 0,2255 ]   [ 32 queries used ]   [ Generated: 19.03.24, 08:39 GMT ]