VBNet
VBMania
Голосование: Голосования сайта VBNet.Ru. Результаты голосований передаются на сайт. Проследите, что есть соединение с интернетом. Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
Купил новый винт. Второй день пытаюсь на него перебросить данные со старого. Пока ничего путнего не получается... Вот сейчас будет последняя попытка... Или всё получится или ... считайте мой винт коммунистом...
Читайте! Содержание выпуска
Книги
Остальные книги о VB можно найти здесь. наверх API-переброс данных из массива в элемент ListBox Как вы знаете, у элементов ListBox или ComboBox существует метод AddItem, который просто-напросто добавляет в выбранный контрол некие значения, определяемые пользователем. Но с использованием API функций можно ускорить процесс занесения данных в указанные выше элементы. Как я это определил? В данном примере вам понадобятся 4 элемента CommandButton, а также элемент ListBox (или ComboBox). При нажатии на кнопку 3, вы получите время загрузки 1000 элементов в ЛистБокс с использованием метода AddItem, при нажатии на кнопку 4 - при использовании API-функций. Заметили разницу? Ну а первые две кнопки всего лишь показывают работу функции ArrayToListBox. Что
еще может функция ArrayToListBox? Как вы
видите, в параметрах функции 5 элементов. Два
обязательных (контрол и массив данных), третий
параметр при значении True очищает список
элементов, а четвертый и пятый параметры всего
лишь определяют, с какого элемента из массива
данных (по порядковому номеру) начинать заносить
в элемент ListBox и каким элементом (по порядковому
номеру) заканчивать.
Drag&Drop в элементе ListBox Данный пример покажет, как можно воспользоваться Drag&Drop при переносе элементов из одного ListBox в другой. Расположите на форме 2 элемента ListBox. Установите свойства элементов OLEDragMode = 1 'Automatic и OLEDropMode = 1 'Manual. Попробуйте после запуска программы перетащить элемент из 1-го ListBox'а в другой. Private Sub Form_Load() List1.AddItem "11" List1.AddItem "22" List1.AddItem "33" List1.AddItem "44" List1.AddItem "55" End Sub Private Sub List1_OLEStartDrag(Data As DataObject, AllowedEffects As Long) Dim i As Integer Dim strdata As String For i = 0 To List1.ListCount - 1 If List1.Selected(i) = True Then strdata = strdata & List1.List(i) & vbCrLf End If Next i Data.SetData strdata End Sub Private Sub List2_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) Dim intin As Integer Dim intstart As Integer intstart = 1 intin = InStr(Data.GetData(1), vbCrLf) Do On Error Resume Next List2.AddItem Replace(Mid(Data.GetData(1), intstart, (InStr(intstart + 1, Data.GetData(1), vbCrLf) - intstart) + 1), vbCr, "") If Err = 5 Then List2.AddItem Replace(Mid(Data.GetData(1), intstart + 1), vbCrLf, "") Exit Do End If intstart = intin + 2 intin = InStr(intstart, Data.GetData(1), vbCrLf) Loop Until intin = 0 End Sub наверх Сортировка массива данных по порядку Иногда требуется в процесе работы отсортировать массив данных по порядку. Вы, конечно, можете использовать элемент ListBox для сортировки, но все же... Вот вам готовый пример для сортировки данных во возрастанию. Если вы хотите сортировать данные по убыванию, то вы догадаетесь, что нужно сделать... Option Base 1 Dim ard() As String Sub BubbleSort(pstrArray() As String) plngMaxItem = UBound(pstrArray) Dim i As Long Dim fSwitched As Boolean Dim strTemp As String Do fSwitched = False For i = 1 To plngMaxItem - 1 If pstrArray(i) > pstrArray(i + 1) Then 'сортируем по возрастанию ' If pstrArray(i) < pstrArray(i + 1) Then 'сортируем по убыванию fSwitched = True strTemp = pstrArray(i) pstrArray(i) = pstrArray(i + 1) pstrArray(i + 1) = strTemp End If Next Loop While fSwitched End Sub Private Sub Command1_Click() Call BubbleSort(ard()) For i = 1 To UBound(ard()) MsgBox ard(i), , i Next End Sub Private Sub Form_Load() ReDim ard(6) ard(1) = "http://aa4" ard(2) = "http://aa3" ard(3) = "http://bb2" ard(4) = "http://aa1" ard(5) = "http://aa2" ard(6) = "http://bb1" End Sub наверх Сохранение/загрузка массива данных в ListBox Данный пример позволяет вам сохранить данные из элемента ListBox в файл на диске, а также загрузить данные из файла в ListBox. Вам
понадобятся 2 элемента CommandButton.
Sub LoadItems(lstin As ListBox) Автозагрузка вашей программы со стартом Windows А также удаление программы из автозагрузки. Еще один полезный совет, как можно загружать вашу программу вместе с загрузкой Windows. Все просто: вы должны указать "Имя твоей проги" и "Путь к твоей проге", то есть имя вашей программы для загрузки, а также ПОЛНЫЙ путь к ней на жестком диске, если она не лежит в директории Windows. Пример гораздо проще для использования, чем
возможность работы с реестром через API_функции. >>>
Мои программы BalloonMessage for MS Agent BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels. Автора: Шатрыкин Иван и Павел Сурменок. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: XAM Ответ ожидается по этому адресу Суть проблемы: Создается файл *.mdb, в котором создается таблица (например на 5 полей), в которую затем пишутся real-time данные. Проблема в том, что из-за св-ва Required=true прога требует обязательного заполнения данными всех полей. А данные (иногда бывает) могут отсутствовать в некоторых полях. Каким образом и где в коде установить св-во Required в false? Или есть другой выход из положения? Автор вопроса: JSC Shuyskaya Vodka Ответ ожидается по этому адресу Как в скрипте на VBSripts запустить команду ДОС с правами адмнистратора, зная пароль и логин админа ?? Автор вопроса: Славик Ответ ожидается по этому адресу Как перехватить сообщения Windows (все подряд MsgBox). А еще лучше определить строку, которая находится под мышкой, в любом приложении Win. Это вобще возможно? Для того, чтобы легче было понять проблему объясню на пальцах. Представьте лупу из специальных возможностей Windows. Висит она значит в углу, и отображает только текст, находящийся под мышкой (без графики). Или текст сообщения, выскочившего при ошибке, копировании, перемещении и т.д. На самом деле мне нужна не лупа, а нечто другое, поэтому не пишите как увеличить картинку. Мне нужен только текст. Автор вопроса: Носарь Александр Ответ ожидается по этому адресу Простейшая ситуация, но не знаю как ее решить. Есть два ListBox, в первом и во втором содержится взаимосвязанная информация. Возникает ситуация когда количество строк в ListBox1 не вмещаются на экран, и для просмотра, тех что не "влезли" на экран приходится пользоваться полосой прокрутки. Можно ли сделать так что бы при использовании полосы прокрутки в ListBox1, информация в ListBox2, также поднималась (или опускалась) синхронно с информацией в ListBox1 ? Автор вопроса: KAS (c) Ответ ожидается по этому адресу У меня такой вопрос: Как отправить письмо средствами VB? Побывал: Private Sub Command1_Click() Set myOlApp = CreateObject("Outlook.Application") Set myItem = myOlApp.CreateItem(olMailItem) Set myRecipient = myItem.Recipients.Add("k.a.s@dts.ru") myItem.Subject = "тема" myItem.Body = "сообщение" Set myAttachments = myItem.Attachments myAttachments.Add "C:\1.xls" ' вложенный файл myItem.Display myItem.send End Sub Выдаёт ошибку: не могу создать объект ActiveX Автор вопроса: Тоша Ответ ожидается по этому адресу Может ли приложение написанное на Visual Basic 6.0, испольяуюещее, например, WindowsCommunControls, под Windows 98 заработать на Windows 95, Windows 2000 & XP? После переноса приложения на другой компьютер (бея VB) все не работает. Что сделать? Автор вопроса: KAS (c) Ответ ожидается по этому адресу Подскажите как пользоваться API функциями: FindWindow и EnumWindow Автор вопроса: Дима Ответ ожидается по этому адресу Можно ли подцепить CrystalReport к контролу Adodc (без использования DataEnvironment со своими command)? То есть при измении SQL-запросов для Adodc соответсвенно изменяется и отчет, выводимый на печать. DataReport1.DataSource = Adodc1 - не проходит. Может я забываю что-то объявить/прописать? Автор вопроса: KAS (c) Ответ ожидается по этому адресу Подскажите как работать с API функцией: SetWindowText Автор вопроса: Егоров Ответ ожидается по этому адресу Как открыть папку с помщью апи или без него? Автор вопроса: 108vadim Ответ ожидается по этому адресу Как правильно обновить рекордсет в DataEnvironment? Все обновляется один раз : private sub Obnovit() DataEnvironment.rsMyTable.update DataEnvironment.rsMyTable.requery 'потом обновляю все Контролы (раньше не понимал почему данные не 'обновляются в контролах вот пример:) set text1.DataSource=DataEnvironment set DataGrid1.DataSource=DataEnvironment end sub Если я второй раз вызываю sub Obnovit то ругается на update и requery, я нашел выход при котором хоть сколько раз вызывай Obnovit все обновляется : просто надо закрыть и заново открыть DataEnvironment после обновления: DataEnvironment.rsMyTable.close DataEnvironment.rsMyTable.open Все работает, но думаю что закрывать и открывать это неправильно, есть ли способы этого не делать чтобы правильно обновлять рекордсеты в DataEnvironment???? Вобщем как правильно обновить рекордсет в DataEnvironment ?? Автор вопроса: Роман Ответ ожидается по этому адресу 1) Как програмно изменить цвет рабочего стола? 2) На форме лежит SSTab, между его закругленными закладками виднеется сама форма. Как эти фидимые куски формы вырезать? Знаю, что с Path, но нужен пример. Автор вопроса: Владимир Ответ ожидается по этому адресу Как создать АктивХ для игры в морской бой? То есть поле игры! Кто знает просьба ответить или дать ссылочку на документацию! Исходники брать не хочу! Хочу писать сам. Автор вопроса: alexander Ответ ожидается по этому адресу Как можно задействовать бланк написаный на Access в VB? Автор вопроса: Matrix Ответ ожидается по этому адресу Вот какие вопросы: 1. Какие есть способы для закрашивания половины (части) буквы, например половина буквы "А" зеленая, другая - красная? 2. И второй вопрос, как сделать так, чтобы буквы в слове были разноцветными? Ответы: Вопрос: Можно ли на Visual Basice написать программу каторая бы уменьшала скорость CD если можно то как ? Ответ: Автор ответа: ]CBK[CRaSH Конечно можно для этого тебе необходимо использовать функцию DivaceIOcontrol и все Вопрос: Есть запрос на ACCESS который работает с переменой как передать эту переменую через VB Ответ: Автор ответа: Александр Чернов Не совсем понял отношения Access и VB: 1. Если из-под ВБ открывается запрос, то Set db = DBEngine.OpenDatabase("полный путь к файлу") Set qry = db.QueryDefs("запрос с параметром") qry.Parameters(индекс параметра) = значение Set rs = qry.OpenRecordSet 2. Если ВБ-прога должна установить значение, а запрос в Access его прочитать, то в Access-е можно создать скрытую форму, запускаемую при открытии базы данных, которую можно использовать как контейнер для хранения переменных. Параметр запроса настроить на соответствующее свойство формы. Или использовать специальную таблицу для хранения переменных. Этот способ универсальней, т.к. не зависит от порядка запуска ВБ и Акцесс. Вопрос: Можно ли в Access программно открыть запрос, основанный на SQL-операторе SELECT (строка с SQL-инструкцией может изменяться)? Метод DoCmd.OpenQuery работает только для сохраненных запросов, а метод DoCmd.RunSQL не работает с SELECT. Ответ: Автор ответа: Александр Чернов Да DoCmd.OpenQuery открывает только сохраненный запрос, а кто мешет его сохранить, а потом удалить, напр. так: Dim sSQL As String Dim sQTemp As String sQTemp = "qdfTemp" sSQL = "SELECT * FROM Заказы WHERE [Код работника]=2;" CurrentDb.CreateQueryDef sQTemp, sSQL ' создание запроса DoCmd.OpenQuery sQTemp, acViewNormal ' открытие CurrentDb.QueryDefs.Delete sQTemp ' удаление Или можно создать ленточную форму и в событии Form_Open формировать свойство Me.RecordSource Вопрос: Подскажите пож-та, у меня БД на Access-97, как выбрав на форме перекл-ль или лучше из поля со списком (VB должен определять и выводить имена принтеров, установленных в данный момент на компе) и делать его "по умолчанию". Т.е. то печатаем отчет на HP-1000, то отправляем на принтер/факс VentaFax. Ответ: Автор ответа: Александр Чернов Воспользуйся свойством формы или отчета PrtDevNames. Вопрос: Есть ComboBox, в нём значения из таблицы (методом ADD). Таблица подключается с помощью DAO 3.51 и имеет 2 колонки. В ComboBox выбрали значение из 1-ой колонки. Как узнать соответствующее ему значение из 2-ой колонки. Ответ: Автор ответа: Александр Чернов ComboBox.Column(1) - индекс от 0 до ColumnCount-1 Вопрос: Если у кого-нибудь есть небольшая документация по VBScript, огромная просьба прислать ее на ilya_001@mail.ru. Век не забуду доброго человека! Ответ: Автор ответа: ViTal Здесь было: http://ssz.by.ru/programming/vbs.htm Вопрос: Осваиваю ужасные дебри вбнэт. Начинаю с простого: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Единственное что я здесь понимаю - это "Private Sub Button1_Click", а для чего остальные параметры??? И еще я понял, что такой полезной штуки как index больше нет, но может, есть аналог(просто другое название), или есть какой-то более сложный способ??? А также нужна помощь с hdc - в vbnet такова нет, но уверен, что также есть аналог. Ответ: Автор ответа: Vir Index в VB.NET нет есть только отголосок от VB6.0 если сделаеш прогу на VB6.0 с Index и переделаеш на VB.NET стандартным конвертатоом то увидиш ее. Hdc можеш посмотреть в справке там много чего есть в том числе и функции которые вымерли или переделали в другой вид. Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
|||||||||||||||
Выпуск подготовили: |
Сурменок Павел |