VB Студия
Голосование: Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты. Subscribe.Ru увеличило максимальный размер рассылки до 100 кб. В связи с этим вопрос: Какого размера Вы хотели бы получать рассылку? В какой день (дни) недели Вы хотели бы получать рассылку "Visual Basic: новости сайтов, советы, примеры кодов."? С какой периодичностью Вы хотели бы получать рассылку "Visual Basic: новости сайтов, советы, примеры кодов."? Результаты голосования Доска почёта: Sergey Y. Tkachev Кононенко Роман Sergey Sapozhnikov Sobic Ссылки: |
Несколько слов от автора:
Увеличен размер рассылки. Отныне будет публиковаться 5 хитростей.
Читайте! Содержание выпуска
Новости сайта VB Студия
наверх Новости сайта VB Line 12 ноября 2001 г. Решил, что Вам будет интересно узнать, кто сюда ходит и какова аудитория сайта. Все данные оформил в читаемом виде и положил сюда. Смотрите, читайте и изучайте. Конечно, немного, но все же статистика. 11 ноября 2001 г. Ну вот, 7 ноября мне стукнуло 27 лет. Эх.. время. Ну да ладно, в Примеры положил интересную работу Андрея Перминова - добавление заголовка в обычное меню, думаю, что это будет интересно многим. Наконец-то появился новый совет, все наверное видели окна с недоступной кнопкой закрытия окна, а вот как это сделать, думаю, знают не все. Скажу сразу, что автор мне неизвестен, поэтому, если что, то пишите мне shatrykin@mail.ru. И, напоследок, хочу пожаловаться: что-то Вы мне маловато материала присылаете. Активнее надо быть! 05 ноября 2001 г. Во-первых, я получил сертификат "Visual Basic Programmer" уровня Master от eCertification.com. Поздравления принимаются по прежнему адресу shatrykin@mail.ru.Во-вторых, на сайте есть одна "обновка". Stas(Sheff) Vorobiov прислал интересный пример игры с использованием DirectX. 28 октября 2001 г. Представляю очень интересную статью: Динамическое создание ДТС-пакетов с помощью VB. Автор работы Андрей Чувахин. В статье показывается программное решение конкретной задачи по копированию данных из таблицы формата ДБФ в базу данных MS SQL Server. наверх Измерение скорости выполнения операций Дёмин Антон [http://demin.narod.ru] написал, пример на тему - как измерить время выполнения операции. Но он описал только принцип. Мне показалось, что Вам было бы удобнее если всё это оформить в виде процедур. Принцип измерений очень прост использование timeGetTime из мультимедиа библиотеки winmm.dll (на мой взгляд она самая точная). Итак, я написал модуль, который включает в себя несколько процедур. ProfileStart - вызывается вначале выполнения операции, время которой нужно измерить. Ей нужно передать параметр в который она запишет начальное значение таймера. После того, как операция выполнена, вызывайте ProfileStop или ProfileStopMsg для остановки таймера. Эти две процедуры отличаются тем, что первая возвратит во втором параметре прошедшее время, а вторая выводит MsgBox, в котором показывает прошедшее время. Option Explicit Public Declare Function timeGetTime Lib "winmm.dll" () As Long 'запускает таймер для измерения Public Sub ProfileStart(lStart As Long) lStart = timeGetTime End Sub 'измеряет время выполнения операции Public Sub ProfileStop(lStart As Long, lLenth As Long) lLenth = timeGetTime - lStart End Sub 'измеряет время выполнения операции 'и сообщает пользователю в окне MSGBOX Public Sub ProfileStopMsg(lStart As Long) Dim lLenth As Long lLenth = timeGetTime - lStart MsgBox "Время выполнения операции составило" & vbCrLf & lLenth & " ms.", vbInformation + vbOKOnly End Sub наверх Программное изменение раскладки клавиатуры Дёмин Антон [http://www.demin52.com] прислал новый совет. Он касается тех, кто хочет программно изменять раскладку клавиатуры во время выполнения работы программы. Итак. При загрузке формы вызываешь функцию API GetKeyboardLayout(....), предварительно объявив ее, и все необходимые константы API.
Эта функция возвращает текущую раскладку
клавиатуры, а затем, с помощью ActivateKeyboardLayout,
переключаем раскладку. Public Const HKL_NEXT = 1 Public Const HKL_PREV = 0 Public Const KLF_REORDER = &H8 Public Sub МоеИмяПроцедуры() Dim lCodeKeybord As Long, CodeKeybord As Long lCodeKeybord = GetKeyboardLayout(CodeKeybord) If lCodeKeybord = 67699721 Then 'если английский, то все нормально 'Выполняем необходимые действия Else 'если нет, то переключаем на английский 'в моем случае и выполняем необходимые действия Call ActivateKeyboardLayout(HKL_NEXT, KLF_REORDER) 'Выполняем необходимые действия 'Переключаем на предыдущую раскладку, в моем случае русская Call ActivateKeyboardLayout(HKL_PREV, KLF_REORDER) End If наверх Реализация Undo и для стандартного TextBox Вы наверняка видели, что в стандартном текстовом окне Windows (TextBox) есть функция Undo, срабатывающая при нажатии Ctrl + Z. Если это уже реализовано, то может быть можно как-то программно управлять этим свойством? Оказывается можно! Итак, для начала объявим в модуле одну, нужную нам, функцию SendMessage и несколько констант: Public Const EM_UNDO = &HC7 Public Const EM_CANUNDO = &HC6 Public Const EM_REDO = &H454 'только для Rich Edit 2.0 или позже Public Const EM_CANREDO = &H455 'только для Rich Edit 2.0 или позже Для реализации "отмены" посылаем окну сообщение EM_CANUNDO, если функция возвратит TRUE, то отмена возможна и значит можно посылать сообщение EM_UNDO. Получив EM_UNDO, TextBox выполнит отмену последней операции. Реализация "повторить" выполняется аналогичным образом. fCanUndo = SendMessage (ActiveForm.ActiveControl.hWnd, EM_CANUNDO, &00, &00) If f CanUndo Then SendMessage ActiveForm.ActiveControl.hWnd, EM_UNDO, &00, &00 End If наверх Особенности программного выбора элементов в ListView Если Вам уже приходилось работать с ListView, то Вы, вероятно, уже сталкивались с ситуацией, когда программно выбранный элемент не виден пользователю. Дело в том, что вызов SelectedItem не всегда подразумевает, что выбранный элемент будет виден пользователю. Для того, чтобы пользователь увидел выделенный элемент, нужно вызвать метод EnsureVisible для выбранного элемента. Пожалуйста не забывайте об этом! 'поместите на форму ListView, скопируйте 'этот код и посмотрите, что получится. Private Sub Form_Load() Dim x As Integer With ListView1 For x = 1 To 20 .ListItems.Add Key:="элемент" & x, Text:="элемент" & x Next x .SelectedItem = .ListItems("элемент20") .SelectedItem.EnsureVisible End With End Sub
Размещение окна у основания Панели задач По умолчанию, Windows отображает панель задач в нижней части экрана. Вы можете переместить её к любому краю экрана, изменяя тем самым размеры доступной области экрана. С панелью задач, всегда видимой на экране, информация иногда заслоняется - особенно, если пользователь развертывает окно приложения. Вы можете использовать функцию SystemParametersInfo в приложении, чтобы определить доступную область экрана. Чтобы увидеть, как это работает, создайте новый проект. На форму добавьте контрол Command Button. Затем, добавьте код "Листинг A" для события Click Command Button. Наконец, создайте новый модуль, и добавьте код "Листинг B" в модуль. Листинг A: Private Sub Command1_Click() Dim RC As RECT Dim X As Long X = SystemParametersInfo _ (SPI_GETWORKAREA, vbNull, RC, 0) Me.Move RC.Left * _ Screen.TwipsPerPixelX, RC.Top * _ Screen.TwipsPerPixelY, RC.Right * _ Screen.TwipsPerPixelX, RC.Bottom * _ Screen.TwipsPerPixelY End Sub Листинг B: Public Declare Function _ SystemParametersInfo Lib "user32" _ Alias "SystemParametersInfoA" _ (ByVal uAction As Long, ByVal _ uParam As Long, lpvParam As Any, _ ByVal fuWinini As Long) As Long Public Const SPI_GETWORKAREA = 48 Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Прежде, чем выполнить эту программу, удостоверитесь, что панель задач видна на вашем экране. Чтобы выполнять программу, нажмите [F5]. Форма появится на экране. Щелкните кнопку. Форма развернута и остается выше панели задач и не заслонена панелью задач. Весь выше приведенный код использует одну функцию - SystemParametersInfo. Она позволяет Вам определять большое количество системных параметров настройки Windows. Так как число системных параметров настройки в Windows очень большое, мы только обсудим те, в которых мы заинтересованы - рабочая область экрана. Чтобы определить рабочую область экрана, вызовите функцию с параметром SPI_GETWORKAREA. Этот параметр сообщает функции, что нужно возвратить координаты доступной области на экране. Координаты возвращаются в структуре RECT. Как только Вы определили рабочую область экрана в структуре RECT, Вы можете использовать функцию Visual Basic Move, чтобы изменить размеры формы к размеру координат, сохраненных в структуре RECT. наверх Книги Азбука программирования в Windows 32 API
Изложены вопросы создания программных приложений для Window95 и
Windows NT. Румянцев П.В.,
«Радио и связь» — 2001, 312 стр. Visual Basic 6.0 :Учебное пособие для вузов
В систематизированном виде излагаются основы программирования
в среде одного из наиболее популярных визуальных
средств разработки Windows-приложений. Литвиненко Т.В.,
«Горячая линия-Телеком, Радио и связь» — 2001, 140 стр. Анонсы эхо-конференций СообЧа Трехмерное моделированиеХочешь создать свою вселенную, но не знаешь как,
чем и где? Заходи, разберёмся... Свободное
общение людей так или иначе связанных с 3D графикой.
Здесь вы можете задать любые вопросы. Присоединяйтесь :) Подписаться Программирование на Visual BasicВсю жизнь мечтали программировать на Visual Basic?
Приходите, получите бесценный опыт и очень полезные
навыки в программировании. Напишем программу вместе
— СообЧа. Ну, и, конечно, ответим на ваши вопросы. Подписаться Группа некомпьютерных вопросовНе следует думать, что сидящего денно и нощно за
компьютером Чайника волнует только то, что связано
с его компом. Иногда приходится от него оторваться,
и вот тут-то всех нас подстерегают другие проблемы,
возникают другие вопросы — как сдать вовремя сессию,
что делать, если гибддэшник отобрал права, как
правильно написать расписку, как красиво и правильно
повесить на стену две картины, какого цвета обои
будут гармонировать с вашим напольным покрытием... Подписаться Почта в интернетеЭл. группа, предназначенная для обсуждения почтовых
сервисов в интернете, а так же всех известных
почтовых программ. Подписаться Заработок в сетиКак вы относитесь к заработку в сети? Думаете ли
вы, что все это ловкий обман или вы вообще ничего
об этом не знаете? Хотите поделиться опытом,
послушать других или просто выговориться? Подписаться наверх Доска объявлений Ищу телеработу.
Объявляется конкурс на лучщий баннер для сайта VB Студия. Приз за лучший баннер - 5000 показов баннерообменной сети TLE. Вопросы и предложения по этому адресу Требуется человек, знающий HTML для работы с сайтом группы СооБчаVB. Вопросы и предложения по этому адресу
Мои программы BalloonMessage for MS Agent BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Женя Ответ ожидается по этому адресу Помогите , пожалуйста разобраться в таком вопросе . Надо считать информацию из Event Viewer. Ни в одном месте не нашел использования функции ReadEventLog. Сначала открываю журнал с помощью функции OpenEventLog и получаю дескриптор файла , который и передаю функции ReadEventLog. Не могу разобраться какие значения могут принимать такие параметры :dwReadFlags , dwRecordOffset , nNumberOfBytesToRead.(Я знаю что dwReadFlags может принимать такие значения EVENTLOG_SEQUENTIAL_READ , EVENTLOG_SEEK_READ ,EVENTLOG_FORWARDS_READ, EVENTLOG_BACKWARDS_READ) . И если возможно напишите какой вид должна иметь окончательная функция. Public Declare Function ReadEventLog Lib "advapi32.dll" Alias "ReadEventLogA" (ByVal hEventLog As Long, ByVal dwReadFlags As Long, ByVal dwRecordOffset As Long, lpBuffer As EVENTLOGRECORD, ByVal nNumberOfBytesToRead As Long, pnBytesRead As Long, pnMinNumberOfBytesNeeded As Long) As Long Автор вопроса: Humbat Nasibov Ответ ожидается по этому адресу Pomogite pojaluysta. Nujen kod na Vb dlya postroeniya 2-x mernix grafikov (matematika) funktsiy ili dannix. Naprimer, y=sin(x) i t.d. Автор вопроса: Вадим Ответ ожидается по этому адресу Напроглал на VB программу,но она не со всеми комьютрами работает (веяде 98винд 97офис), испольяуент она ADO к БД Акцессу(..Adodc1.Recordset.AddNew "myField","ssss") - то проблема : на моем компе прога естественно пашет на другом где не стоит VB она тоже пашет а на еще другом компе выдает сообщение "runtime error испольяуйте обновляемый яапрос". В чем проблема, вроде ОФИС веяде 97 (Может влияют раные библиотеки версий офиса 97 )? ps Думается если янал бы VC то не янал бы хлопот с офисом если конечно это ия-яа него, в VC наверняка встроенные библиотеки, и не обяяательно вообще ставить офис? Автор вопроса: Денис Козлов Ответ ожидается по этому адресу Я столкнулся с одной небольшой проблемой при разработке базы данных на Visual Basic 6.0. Знаю, что проблема ерундовая, но я только-только начинаю работать с Basic, и поэтому для меня она не проста. Опишу проблему в общем. Я создал форму Form1. На ней расположил три текстовых поля Text1, Text2, Text3 и элемент Data (с именем Data1). С помощью Visual Data Manager создал базу данных и связал текстовые поля Text1, Text2, Text3 с полями базы данных (наименования полей: Field1, Field2, Field3, наименование БД - Database). Элемент Data связал с созданной БД, так что можно перемещаться по записям БД. Далее создал меню на форме Form1, где есть пункты Добавить запись, Удалить запись, Печать, Поиск и Выход. В пункте Поиск есть подменю с пунктами Текст1, Текст2, Текст3. Обработку событий для Добавить запись,Удалить запись и Выход я написал (здесь особых проблем не возникло). При кликании на Печать - Текст1 открывается форма Form2, на которой есть текстовое поле Form2.Text1 и две кнопки ОК и Отмена. При нажатии кнопки Отмена форма Form2 исчезает и появляется форма Form1 (Обработку нажатия этой кнопки я написал). При нажатии кнопки ОК должен производиться поиск по записям базы данных (Database) и выводиться та запись, поле Field1 которой частично или полностью совпадает с текстом, введенным в текстовое поле Form2. Text1. В результате должна отображаться форма Form1 с найденной записью. Вопрос 1: какой будет код для кнопки ОК? И как восстановить прежнее состояние формы Form1, чтобы снова можно было бы передвигаться по записям с помощью Data1? Вопрос 2: при нажатии на пункте Печать меню формы Form1 должен выводиться на печать отчет, где в трех столбцах должны фигурировать данные полей базы данных Field1, Field2 и Field3. Названия столбцов соответственно Text1, Text2 и Text3. Как это можно сделать? Ответы: Вопрос: Как получить IP адресса компьютеров которые находятса в одной лок. сети с даным? Ответ: Автор ответа: Shemyakin, Dmitry Можно сэмулировать ping запрос - в ответе будет нужный IP адрес. Как это сделать точно я не знаю но вероятно нужна будет апишная функция посылающая такой запрос. Вопрос: Скажите, пожалуйста, как узнать функции, содержащиеся в каком-либо DLL. Есть ли какие-нибудь декомпиляторы для DLL и где их можно достать? Ответ: Автор ответа: Vlad Radionov При наличии Visual Studio запустите depends.exe (common\Tools) Вопрос: Скажите, пожалуйста, как узнать функции, содержащиеся в каком-либо DLL. Есть ли какие-нибудь декомпиляторы для DLL и где их можно достать? Ответ: Автор ответа: Мунгалов Андрей DLL я просматриваю так! Открываю Проект - Ссылки - выбираю Dllку потом браузер обьектов и выбираешь библиотеку только что подключенную в окне выведутся все ее функции. Прим. ред.: так можно просматривать только содержимое ActiveX Dll. Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
Выпуск подготовили: | Сурменок Павел и Шатрыкин Иван |