VBNet
VBMania
Голосование: Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
Новый выпуск!
Читайте! Содержание выпуска
Книги
Остальные книги о VB можно найти здесь. наверх Эксперт - Привет, Серый. - Угу, привет. Ты проходи, садись, я щас, с функцией тут разберусь... - Да я на момент. Вопросец имеется. - Вопросец, вопросец... Так, тут переменная не объявлена... Вопросец... С вопросами в систему, к экспертам... А тут точку не поставил! Вот она где, соб-бака!! - Ты че, какая система? Ты о чем? - О! Все, работает... Чего ты говоришь? - Ты про каких это экспертов тут заикаешься? - А-а. А ты что, первый раз слышишь, что ли? Ты на СообЧа бывал? - Где?!! - Да вот, гляди. Щас соединимся... Во! http://soobcha.ru, зришь? - М-да... Занятно. Так я с вопросом к тебе... - А я вот и говорю: туда иди, в систему "Эксперт", там ответят. - Это чайники, что ли, ответят? - Не сомневайся, ответят. Там у них такое наворочено... Короче, ты по почте вопрос свой задаешь - и все:)))))) Больше не изволь беспокоиться, там они сами будут искать ответ на твой вопрос. А через некоторое время вывалят тебе на ящик не один, а несколько ответов. Пользуйся и радуйся:) - А чего это они там такие добрые да услужливые? У них чего, своих проблем нет? Сколько я должен платить за такое трогательное беспокойство? - Ну, это немного. Меньше, чем ты думаешь:) Тебе достаточно только подтвердить правильный ответ. Давишь на соответствующую ссылку, дескать, вот этот ответ мне понравился, помог, и я доволен. Просто пустое письмо засылаешь к ним, и вся оплата. А если хочешь у них экспертом стать, то пожалуйста, регистрируйся и отвечай на вопросы. - Кем? Экспертом? - А что? Что-то ты ведь знаешь, не вчера за комп сел. - А на фига мне это надо? Разбираться с чужими проблемами... У меня своих - хоть отбавляй... - Ага. Вот ты только что спрашивал: а сколько? И если уж ты со своими проблемами обращаешься к людям, то ведь надеешься, что тебе помогут. А сам-то что, влом, что ли, помочь кому-то? Да ладно! Тебя, вобщем-то, никто и не тянет, не заставляет. А вот те, кому интересно, кому не жаль поделиться, те там и работают. Я, между прочим, давно уже с ними. - В смысле, экспертом, что ли, заделался? И сколько тебе платят? - А ты не прикалывай. Там никто никому не платит. А вот конкурсы, между прочим, проводят, и не хилые. Представляешь, за лучший ответ дают бесплатно три месяца платного хостинга, да еще домен регистрируют. За просто так. А вот тебе, если ты задашь самый лучший вопрос, тоже приз может выгореть. - Это как: лучший? На который никто ответить, что ли, не сможет? Так я щас таких вопро... - Причем тут это? Просто ты, если вопрос пишешь к ним, так сподобься хоть запятые в нужных местах поставить, там, грамотно, короче, обрисуй свой трабл. - Ну ладно, въехал. Ты мне вот лучше помоги с моим траблом. Мой Фотошоп не хочет по русски работать... - Ха, так этот трабл там уже сколько раз появлялся. У них на сайте и ответ есть... Вот, любуйся: Заходим в редактор реестра (regedit.exe). Находим ключ HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\Nls\Codepage В нем изменяем значение параметра 1252 с cp_1252.nls на cp_1251.nls. Перезагружаемся... - Понял... погоди, запишу... - Да чего записывать? Шагай домой, входи на сайт и копируй... - Да я ссылку запишу... Слушай, а как там в эту систему вопрос задать? Вообще, как она работает? - Так тут же, на сайте, все есть. А вообще, можешь по почте пустое письмо загнать на mailto:reply.infoexpert@soobcha.ru, и получишь всю необходимую инфу. А вообще, ты лучше в следующий раз с вопросами не ко мне, а туда. Может, я и отвечу там. - А не проше тебе здесь ответить? - Э-э-э... Там я баллы зарабатываю... - А это еще зачем? - Ладно, мотай. Дома почитаешь, все о них узнаешь. У меня тут халтурка... Давай, пока. - Пока. А как ты экспертом там зарегился? - Иди, иди! Инфу читай... наверх Citycat by Email Программа Citycat by Email позволяет работать с сервером Subscribe.ru с помощью электронной почты. Теперь Вам не нужно тратить деньги на работу в online и просматривать мегабайты рекламы для того, чтобы подписаться на нужную рассылку! Вам просто необходимо скачать небольшую базу данных по всем рассылкам каталога с нашего сайта, после чего Вы сможете подписываться и отписываться от рассылок, заказывать архивы прошлых выпусков, выполнять поиск по каталогу рассылок и многое другое. Программу Citycat by Email можно бесплатно загрузить с сайта http://sapisoft.h1.ru. наверх Новости сайта VBNet
Последние 20 тем форума на VBNet.Ru: 05:47 / 19 авг. Привязка к железу | Хитов: 4 | Ответов: 1 05:47 / 19 авг. Привязка к железу | Хитов: 1 | Ответов: 0 04:14 / 19 авг. Вопросик!!!!!!!!!!!!!!!!!!!!!!!! | Хитов: 6 | Ответов: 0 23:59 / 18 авг. Админу | Хитов: 9 | Ответов: 0 20:56 / 18 авг. Как в RichTextBoxe.... | Хитов: 7 | Ответов: 0 20:53 / 18 авг. RichTextBox ?????? | Хитов: 11 | Ответов: 1 20:17 / 18 авг. Создание мультиязычного интерфейса | Хитов: 18 | Ответов: 2 17:53 / 18 авг. Енто только админу!!!!! | Хитов: 16 | Ответов: 2 17:49 / 18 авг. Ошибка доступа к файлу!!!!!!! | Хитов: 13 | Ответов: 1 15:54 / 18 авг. TextBox | Хитов: 12 | Ответов: 1 14:58 / 18 авг. CodeWright | Хитов: 16 | Ответов: 1 12:44 / 18 авг. свернись, расширься | Хитов: 17 | Ответов: 1 11:29 / 18 авг. Dictionary | Хитов: 24 | Ответов: 1 11:04 / 18 авг. перенос строк кодом | Хитов: 24 | Ответов: 4 10:24 / 18 авг. Как реализовать или найти Splitter для VB? | Хитов: 21 | Ответов: 2 10:17 / 18 авг. Проблемы с DataReport | Хитов: 14 | Ответов: 1 06:59 / 18 авг. Вопрос не по VB: Установка PHP | Хитов: 6 | Ответов: 0 06:29 / 18 авг. Добавление записи в через OLE DB | Хитов: 9 | Ответов: 0 23:16 / 17 авг. картинка | Хитов: 36 | Ответов: 1 17:45 / 17 авг. Формы | Хитов: 34 | Ответов: 3 Последние поступления в Библиотеку кодов: наверх Новости сайта VBMania наверх Новости сайта Азбука VB наверх Новости сайта MSDN
наверх Новости сайта GotdotNet Новые статьи: наверх Новости сайта dotSite Новые статьи: Новые примеры: наверх Один момент из жизни форума: Как сменить частоту обновления экрана? Вопрос: Автор вопроса: Страшный Сон Я меняю разрешение экрана, а частота обновления становится 60 Hz, хотя могла быть и 140. Как её сменить из VB? Ответы: Атор: Padre Может быть через ChangeDisplaySettingsEx Атор: Страшный Сон Ещё и Ex есть? Что-то я в своём файле с функциями не нашел такого... Как эта функция объявляется? Атор: Артём Л. Declare Function ChangeDisplaySettingsEx Lib "user32" Alias "ChangeDisplaySettingsExA" (lpszDeviceName As Any, lpDevMode As Any, ByVal hWnd As Long, ByVal dwFlags As Long, lParam As Any) As Long · lpszDeviceName [in] Pointer to a null-terminated string that specifies the display device whose graphics mode the function will obtain information about. Only display device names as returned by EnumDisplayDevices are valid. See EnumDisplayDevices for further information on the names associated with these display devices. The lpszDeviceName parameter can be NULL. A NULL value specifies the default display device. The default device can be determined by calling EnumDisplayDevices and checking for the DISPLAY_DEVICE_PRIMARY_DEVICE flag. · lpDevMode [in] Pointer to a DEVMODE structure that describes the new graphics mode. If lpDevMode is NULL, all the values currently in the registry will be used for the display setting. Passing NULL for the lpDevMode parameter and 0 for the dwFlags parameter is the easiest way to return to the default mode after a dynamic mode change. The dmSize member must be initialized to the size, in bytes, of the DEVMODE structure. The dmDriverExtra member must be initialized to indicate the number of bytes of private driver data following the DEVMODE structure. In addition, you can use any of the following members of the DEVMODE structure. dmBitsPerPel Bits per pixel dmPelsWidth Pixel width dmPelsHeight Pixel height dmDisplayFlags Mode flags dmDisplayFrequency Mode frequency dmPosition Windows 98, Windows 2000: Position of the device in a multi-monitor configuration. In addition to using one or more of the preceding DEVMODE members, you must also set one or more of the following values in the dmFields member to change the display settings. DM_BITSPERPEL Use the dmBitsPerPel value. DM_PELSWIDTH Use the dmPelsWidth value. DM_PELSHEIGHT Use the dmPelsHeight value. DM_DISPLAYFLAGS Use the dmDisplayFlags value. DM_DISPLAYFREQUENCY Use the dmDisplayFrequency value. DM_POSITION Windows 98, Windows 2000: Use the dmPosition value. · hwnd Reserved; must be NULL. · dwflags [in] Indicates how the graphics mode should be changed. This parameter can be one of the following values. 0 The graphics mode for the current screen will be changed dynamically. CDS_FULLSCREEN The mode is temporary in nature. Windows NT/2000: If you change to and from another desktop, this mode will not be reset. CDS_GLOBAL The settings will be saved in the global settings area so that they will affect all users on the machine. Otherwise, only the settings for the user are modified. This flag is only valid when specified with the CDS_UPDATEREGISTRY flag. CDS_NORESET The settings will be saved in the registry, but will not take effect. This flag is only valid when specified with the CDS_UPDATEREGISTRY flag. CDS_RESET The settings should be changed, even if the requested settings are the same as the current settings. CDS_SET_PRIMARY This device will become the primary device. CDS_TEST The system tests if the requested graphics mode could be set. CDS_UPDATEREGISTRY The graphics mode for the current screen will be changed dynamically and the graphics mode will be updated in the registry. The mode information is stored in the USER profile. CDS_VIDEOPARAMETERS Windows NT/2000: When set, the lParam parameter is a pointer to a VIDEOPARAMETERS structure. Specifying CDS_TEST allows an application to determine which graphics modes are actually valid, without causing the system to change to them. If CDS_UPDATEREGISTRY is specified and it is possible to change the graphics mode dynamically, the information is stored in the registry and DISP_CHANGE_SUCCESSFUL is returned. If it is not possible to change the graphics mode dynamically, the information is stored in the registry and DISP_CHANGE_RESTART is returned. Windows NT/2000: If CDS_UPDATEREGISTRY is specified and the information could not be stored in the registry, the graphics mode is not changed and DISP_CHANGE_NOTUPDATED is returned. · lParam Windows NT/2000: [in] If dwFlags is CDS_VIDEOPARAMETERS, lParam is a pointer to a VIDEOPARAMETERS structure. Otherwise lParam must be NULL. наверх Доска объявлений Ищу телеработу.
наверх Мои программы BalloonMessage for MS Agent BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels. Авторы: Шатрыкин Иван и Павел Сурменок. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Тим Ответ ожидается по этому адресу Как при помощи Microsoft Internet Transfer Control узнать такое свойство файла как дата и время последнего изменения? Если невозможно этим контролом, то подскажите пожалуйста как иначе? Автор вопроса: Максим Ответ ожидается по этому адресу Вопрос насчет VB .NET. Кто-нибудь может поделиться файлами dx8_vb.hxi и dx8_vb.hxs? Если они весят не очень много… Автор вопроса: goodroman Ответ ожидается по этому адресу Можно ли средствами VB сделать программу бея окна (формы)? Только не чтоб окно было невидимым, а чтоб его ваще не было. Автор вопроса: Michael Fezulaev Ответ ожидается по этому адресу Есть объект DBGrid и есть у этого объект свойство Button. Я прочитал в MSDN что это для создание встроеного ComboBox. Но как это сделать не знаю. Если сможете дать исходник или линк какой нибуть. Автор вопроса: Vao Ответ ожидается по этому адресу Какая функция на VB переводит строку из OEM/DOS в Win кодировку? Есть ли функции, типа Chr и Asc, воявращающие значения в "досовской" кодировке? Автор вопроса: Денис Ответ ожидается по этому адресу Подскажите как програмно получить строковый параметр реестра в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto\shell\open\command. Там значение по умолчанию. Если кто знает, то напишите, как записывать и читать из реестра. Автор вопроса: Игорь Ответ ожидается по этому адресу Как добавить новую форму для принтеров в WIN 2000. В 98 можно делать польяовательские раямеры а в NT такой возможности нет. Ответы: Вопрос: Если в запущенной программе в ручную переместить какой-нибудь контрол, например Image, можно ли её в таком состоянии сохранить? Ответ: Автор ответа: Дмитрий 1) Можно сохранить положение контрола в INI-файле с помощью функций WinAPI: Private Declare Function GetPrivateProfileString Lib "kernel32" Alias _ "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Private Declare Function WritePrivateProfileString Lib "kernel32" Alias _ "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpstring As Any, ByVal lpFileName As String) As Long Public Function Чтение(Раздел As String, Ключ As String, _ ИмяФайла as String) As String Dim sTemp As String * 256 Dim nLength As Integer sTemp = Space$(256) nLength = GetPrivateProfileString(Раздел, Ключ, "?", sTemp, 255, _ ИмяФайла) Чтение = Left$(sTemp, nLength) End Function Public Sub Запись(Раздел As String, Ключ As String, Значение As String, _ ИмяФайла as String) Dim n As Integer Dim sTemp As String sTemp = Значение 'Заменим символы CR/LF на пробелы For n = 1 To Len(Значение) If Mid$(Значение, n, 1) = vbCr Or Mid$(Значение, n, 1) = vbLf Then Mid$(Значение, n) = " " End If Next n n = WritePrivateProfileString(Раздел, Ключ, sTemp, ИмяФайла) End Sub Структура INI-файла [MyControl] Top=y Left=x Width=w Height=h MyControl - имя раздела Top,Left, Width, Height - ключи x, y, w, h - значения ключа Например, для получения предыдущего состояния контрола: Dim sTop as String Dim sLeft as String sTop=Чтение("MyControl", "Top", "MyINI.ini") sLeft=Чтение("MyControl", "Left", "MyINI.ini") With [MyControl] Left=sLeft Top=sTop End With При желании можно переделать функции Чтение, Запись для работы с числовыми данными 2) Можно сохранить настойки также в реестре в ветви HKEY_CURRENT_USER\SOFTWARE\VB and VBA Program Settings\ с помощью функции SaveSetting(AppName As String, Section As String, Key As String, Setting As String) а прочитать - GetSetting(AppName As String, Section As String, Key As String, [Default]) As String Но если данных мало, лучше пользоваться INI-файлами, а если много, то сохранять их уже не в HKEY_CURRENT_USER\SOFTWARE\VB and VBA Program Settings\, а в HKEY_CURRENT_USER\SOFTWARE\YourCompanyName\YourProgramName\ с помощью функций работы с реестром из библиотеки advapi32.dll Вопрос: Как в Excel сделать что бы макрос запускался при изменении определенной ячейки? Ответ: Автор ответа: Дмитрий Заходишь в Visual Basic Editor (Alt+F11) в дереве выбираешь Лист1 (Sheet1). Откроется окно редактора. В нем в правом раскрывающимся списке выберешь Worksheet, в левом - Change. Появится заготовка: Private Sub Worksheet_Change(ByVal Target As Range) End Sub Для определения адреса измененной ячейки используй строку a=Target.Address Ответ: Автор ответа: Константин Процедура помещается в Книгу. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range) If Source.Address = "$B$2" Then MsgBox "Новое значение: " & Source.Value 'вызываешь свой макрос End If End Sub Вообще много ответов можно найти в самом хелпе VBA. Ответ: Автор ответа: Sergey Попробуй переопределить обработчик Worksheet_Changed для нужного листа: Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 2 And Target.Column = 2 Then NewMacro --нужный макрос End If End Sub Вопрос: Как сделать функцию на подобии Inputbox? Т.е. вызываем функцию, она открывает окошко, ждёт, пока там чего-нибудь натворят, потом возобновляет работу и передаёт на выход результат работы. Ответ: Автор ответа: Дмитрий Вызывай форму модально Me.Show vbModal. Пока вызванная форма не будет закрыта, выполнение в вызвавшей форме будет остановлено. А для передачи параметров туда-обратно используй Public переменные. Вопрос: Как оформить функцию в отдельный процесс (как в Windows Commander)? Т.е. у меня есть функция, которая работает очень долго и съедает все системные ресурсы (даже собственное окно показать не может). А вот если б её засунуть в фон, то тогда можно былоб и бегунок показать и прочую сопутствующую инфу. Ответ: Автор ответа: Vladimir [PRC] Есть два способа разделить программу и функцию. СПОСОБ №1 Если функция должна работать паралельно с основной программой и периодически возвращать в программу информацию о ходе своего выполнения, то можно например поступить так (основа для примера взята из "Visual Basic 6.0" MicrosoftPress): Создаем форму кидаем на нее метку и 2 кнопки: cmdStart и cmdStop. Добавляем класс с именем Test, в нем-то и будет находится долгоиграющая функция Код для формы: Option Explicit 'Объявление события класса в форме Private WithEvents mTestFunc As Test 'Переменная прерывания функции и завершения работы программы Private bCancel As Boolean Private Sub cmdStart_Click() 'Прерывание функции запрещено bCancel = False 'Вызов функции mTestFunc.TestFunc (10) '10 - параметр передаваемый в функцию 'Если bCancel=True, то функция прервана If bCancel Then Label1.Caption = "Break" 'Разрешить завершение программы bCancel = True End Sub Private Sub cmdStop_Click() ' Прервать функцию, функция будет прервана при очередном вызове события bCancel = True End Sub Private Sub Form_Load() 'Создать объект класса Test 'И связать WithEvents с ним Set mTestFunc = New Test 'Разрешить завершение программы bCancel = True End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) 'Нельзя завершать программу, пока не завершиться выполнение функции Cancel = Not bCancel If Cancel Then MsgBox "Завершите работу фукции", vbOKOnly End Sub ' Событие вызываемое в форме функцией Private Sub mTestFunc_TestEvent(ByVal lTest As Long, Cancel As Boolean) 'Вывод хода выполнения функции Label1.Caption = lTest If bCancel Then Cancel = True End Sub Код для класса: Option Explicit 'Задаем событие, которое будет вызываться в основной программе 'Первое значение - статус выполнения, процент выполнения и т.д. 'Второе значение - запрос на прерывание операции, ОБЯЗАТЕЛЬНО ПО ССЫЛКЕ !!! Public Event TestEvent(ByVal lTest As Long, ByRef Cancel As Boolean) ' lParam1 - Передаваемое в функцию значение Public Sub TestFunc(ByVal lParam1 As Long) Dim sStart As Single 'Время старта Dim sInterval As Single 'Интервал вызова события Dim bCancel As Boolean sStart = Timer sInterval = Timer ' Для примера время выполнения задается по таймеру ' В конкретной задаче вызывать можно в цикле или чему-нибудь подобному Do While Timer < (sStart + 100) ' Код реальной функции '.... '.... ' Вызов события 1 раз в секунду If Timer > (sInterval) Then sInterval = Timer + 1 'Первое значение - статус выполнения, процент выполнения и т.д. 'Второе значение - запрос на прерывание операции RaiseEvent TestEvent(Timer - sStart, bCancel) 'При отмене выход из фунции If bCancel Then Exit Sub End If 'Передать квант времени системе 'Необходимо для отрисовки экрана и отработки 'системных событий программой и системой DoEvents Loop End Sub СПОСОБ №2 Если же функция работает независимо от основной программы, то оформи её в отдельной форме с запуском в немодальной форме: Form1.Visible = True 'Показать форму Form1.Test1 (10) 'Вызвать функцию И САМОЕ ГЛАВНОЕ В СВОЕЙ ФУНКЦИИ РЕГУЛЯРНО ВЫЗЫВАЙ: DoEvents Ответ: Автор ответа: Mike 1) Помести свою функцию в отдельное немодальное окно, создай невидимый экземпляр окна, запусти свою ф-цию. Периодически можешь проверять состояние этого окна (атрибуты какие-нибудь, например) на предмет прогресса твоей функции. 2) Используй DoEvents в теле функции. Это позволит приложению выполнить обработку графических событий и выполнить, например, прорисовку прогресс-бара Вопрос: Как программно создавать/удалять меню, подменю и т.д.? Ответ: Автор ответа: Дмитрий Используй массивы элементов управления. При создании меню необходимо задать индекс (поле Index). А в коде написать: Dim i As Integer i = mnuFile.UBound Load mnuFile(i+1) mnuFile(i+1).Visible = True mnuFile(i+1).Caption = "Caption" При этом если необоходимо сохранить новую структуру меню используй реестр или INI-файлы Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
|||||||||||||||||||
Выпуск подготовили: |
Сурменок Павел |