← Декабрь 2002 → | ||||||
1
|
||||||
---|---|---|---|---|---|---|
3
|
4
|
5
|
7
|
8
|
||
10
|
11
|
12
|
14
|
15
|
||
17
|
18
|
19
|
21
|
22
|
||
24
|
25
|
26
|
28
|
29
|
||
31
|
За последние 60 дней ни разу не выходила
Сайт рассылки:
http://vbnet.ru
Открыта:
31-07-2001
Статистика
0 за неделю
Visual Basic: новости сайтов, советы, примеры кодов. Выпуск 119.
Информационный Канал Subscribe.Ru |
Visual Basic: новости сайтов, советы, примеры кодов.
Выпуск 119.
VBNet
VBMania
Голосование: Голосования сайта VBNet.Ru. Результаты голосований передаются на сайт. Проследите, что есть соединение с интернетом. Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
Новый выпуск. Ничего нового в рассылке и на сайте не происходит...
Читайте! Содержание выпуска
Книги
Остальные книги о VB можно найти здесь. наверх Описание элемента TabStrip Контрол TabStrip представляет из себя несколько вложенных страниц, которые расположены в одной и той же области окна или диалогового окна в вашем приложении. Синтаксис TabStrip Примечания Контрол Tab состоит из коллкций отдельных вкладок (Tabs). Во время выполнения и во время проектирования программы вы можете менять количество вкладок, используя страницу свойств. Свойство Style устанавливает внешний вид отдельных вкладок (к примеру, в виде кнопок). Контрол TabStrip - не контейнер. Чтобы содержать фактические страницы и другие объекты, вы должны использовать контрол Frame или другие контейнеры, размеры которых соответствуют размерам каждой вкладки элемента Tab. Используйте следующий пример для связывания каждой вкладки элемента Tab с контейнером Frame: Private mintCurFrame As Integer 'текущая
видимая вкладка Основные свойства
наверх Описание элемента ListBox Элемент ListBox предоставляют пользователю выбрать значение из списка данных. Отдельные пункты элемента ListBox выбираются с помощью мыши. Добавлять пункты в элемент ListBox можно с помощью программного кода, либо устанавливая значение свойство List в окне свойств. Каждый пункт следует вводить отдельной строкой, нажимая комбинацию клавиш Ctrl + Enter. Завершив ввод пунктов, нажмите клавишу Enter, и они отобразятся в элементе ListBox на форме.В этой статье будут рассмотрены свойства и методы элемента ListBox. Основные свойства Некоторые свойства элементов ListBox можно установить только в режиме проектирования. Именно они определяют функциональные возможности элемента, которые нельзя изменять во время работы приложения. Свойство MultiSelect Определяет метод выборки пунктов списка. Его значение задается при конструировании. Во время работы приложения значение свойства доступно только для чтения. Значение свойства MultiSelect определяет, может ли пользователь выбрать несколько пунктов списка и метод выборки. Значение - Описание 0 - Выбор нескольких пунктов запрещен (по умолчанию) 1 - Простой выбор нескольких пунктов. Щелчок кнопкой мыши (или нажатие клавиши пробела) выбирает или отменяет пункт списка. Для перемещения фокуса на другой пункт используйте клавиши со стрелкой 2 - Расширенный выбор нескольких пунктов. Для выбора нескольких пунктов подряд нажмите клавишу Shift, а затем щелкайте на пунктах мышью (или нажимайте клавиши со стрелкой). Все пункты списка между ранее выбранным и текущим пунктами подсветятся. Чтобы выбрать произвольно расположенные элементы списка (или отменить выбор), нажмите клавишу Ctrl и щелкните на пункте кнопкой мыши Свойство Sorted С помощью приложения в списки элементов ListBox можно вставлять новые пункты, но программист тоже должен позаботиться об этом. Если необходимо, чтобы пункты всегда были отсортированы, установите значение свойства Sorted равным True. Сделать это можно только во время проектирования: во время выполнения оно доступно только для чтения. Элемент ListBox является текстовым элементом, т. е. сортировать числовые данные он не может. Чтобы использовать элемент ListBox для сортировки чисел, прежде всего, отформатируйте их, добавив нули в начале каждого числа. Так, число 10 всегда будет отображаться перед числом 5, поскольку строка "10" меньше строки "5" (она начинается с единицы). Если же числа форматировать как "010" и "005", то сортировка будет корректна. Пункты в элементе ListBox сортируются по возрастанию с учетом регистра. Более того, стандартные установки изменить невозможно. Элементы "aa", "aA", "AA, "Aa", "Ba" и "BA" сортируются следующим образом. "AA" "Aa" "aA" "aa" "BA "Ba" Как видите, символы верхнего регистра появляются впереди тех же символов нижнего. Все слова, начинающиеся с буквы В, появляются после слов, начинающихся с А, но перед словами, начинающимися с буквы С. В пределах группы слов, начинающихся с буквы В, сначала отображаются слова, начинающихся с буквы В, а вслед за ними идут слова, начинающиеся с буквы b. Свойство Style Определяет внешний вид элемента. Имеет два значения: 1 - Standard и 2 — Checkbox. Обратите внимание: левый список не отсортирован, а правый — отсортирован. Методы элемента ListBox Для управления элементом ListBox из приложения
необходимо иметь возможность: Метод Additem Чтобы добавлять пункты в список, используется метод Additem. Он имеет следующий синтаксис: List1.Additem item, index Параметр item - это строка, добавляемая в список, a index - ее порядковый номер. Порядковый номер первого элемента списка равен нулю. Аргумент index необязателен. Если его опустить, строка добавляется в конец списка. Если значение свойства Sorted элемента установлено равным True, то пункт вставляется в соответствующее место списка, независимо от значения аргумента index. Метод RemoveItem Чтобы удалить пункт из списка, найдите его положение (index) в списке: index необходим методу RemoveItem. List1.Removeltem Index Параметр index указывает на порядковый номер удаляемого пункта и является обязательным. Следующий оператор удаляет пункт из начала списка. List1.Removeltem () Метод Clear Удаляет из списка элемента все пункты. Синтаксис метода несложен. List1.Clear Чтобы получить доступ к отдельным пунктам, можно использовать несколько свойств элемента ListBox. Для удаления пункта из списка необходимо знать его порядковый номер, но в данном случае этот аргумент метода RemoveItem используется редко. Как правило, удаляемый пункт выбирает пользователь либо удаляемые пункты выбирают из программного кода по их значениям. Некоторые свойства элемента ListBox позволяют считывать пункты из программного кода (эти свойства рассматриваются). Другие свойства Свойство ListCount Возвращает число пунктов списка. Доступ к ним можно получить с помощью значений индексов в диапазоне от 0 до ListCount-1. Свойство List() Это массив пунктов списка. Элемент массива List(0) содержит первый пункт списка, элемент List(1) - второй и т.д., вплоть до последнего элемента - List(ListCount-1), содержащего последний пункт списка. Массив List() часто используют для просмотра пунктов списка. Для просмотра всех пунктов элемента управления List1 с целью отыскания и удаления пустых строк применяйте следующий цикл. For item = List1.ListCount – 1 to 0 Step – 1 Обратите внимание: данный цикл сканирует элементы массива List() с конца. Понимаете, почему? При удалении каждого пункта длина списка уменьшается на 1. Если сканировать список с начала, число итераций превысит число пунктов списка, что ведет к ошибке исполнения. Если же сканировать список с конца, эта ошибка исключается. Свойство ListIndex ListIndex представляет собой индекс выбранного пункта списка. При выборке нескольких пунктов ListIndex представляет индекс последнего выбранного пункта. Если не выбран ни один элемент, значение .ListIndex = -1. Это свойство можно использовать для выбора или удаления конкретных пунктов. Так, следующий оператор удаляет выбранный пункт элемента List 1: List1.RemoveItem List1.ListIndex Для выделения определенного элемента используйте List1.ListIndex = 2 Если при вызове метода RemoveItem ни один пункт списка не выбран, значение свойства ListIndex отрицательно. Попытки удалить пункт с отрицательным индексом приводят к ошибке исполнения. Чтобы избежать этого, проверьте значение свойства ListIndex. If List1.ListIndex >= 0 Then После удаления пункта индексы последующих пунктов соответственно перестраиваются. Свойство Selected Selected представляет собой массив, подобный свойству List. Его элементы могут иметь значения True или False в зависимости от состояния соответствующего пункта списка. Если пункт списка выбран, значение свойства Selected данного пункта равно True. В противном случае значение свойства равно False. Поскольку отсутствуют средства, позволяющие получить сразу все индексы при выборке нескольких пунктов, необходимо проверить все элементы массива Selected (чуть позже будет приведен соответствующий пример). Свойство SelCount Отображает число выбранных пунктов элемента ListBox, если значение свойства MultSelect установлено равным 1 (Simple) или 2 (Extended). Обычно это свойство используют вместе с массивом Selected для работы с выбранными пунктами элемента. Если элемент ListBox допускает выборку множества пунктов, рекомендуем применить в списке стиль Checkbox (Флажок). Чтобы пункты списка отмечались флажками (рис. 5.6), установите значение свойства Style равным 1. Свойство NewIndex Возвращает индекс последнего пункта включенного в список элемента ListBox. Обычно это свойство используют вместе со свойством ItemData, который рассматривается в параграфе "Индексирование с помощью элемента ListBox". Индексирование с помощью элемента ListBox Ключевым свойством элемента ListBox является
свойство ItemData — массив, подобный массиву List.
Однако вместо строк, появляющихся в элементе, он
содержит числа. Каждый пункт, отображаемый
элементом ListBox, состоите двух частей: строки
(задаваемой свойством List(i)) и числа, задаваемого
свойством ItemData(i) (здесь i — индекс пункта списка).
Свойство ItemData — это значение типа Long, которое
может сохранять числовую информацию любого типа,
относящуюся к пункту списка, но не отображаемую в
списке. Так, в массиве List() можно сохранять список
имен сотрудников, а в массиве ItemData() - данные об их
зарплате. Доступ к записям о каждом сотруднике
можно получать по имени, а зарплату отображать в
элементе TextBox, помещенном на ту же форму. Однако
истинная ценность свойства ItemData состоит не в
хранении дополнительной информации, относящейся
к пункту. Действительно, единственного числа
явно недостаточно для хранения существенной
дополнительной информации. Предположим,
необходимо поддерживать список имен и адресов.
Хранить все эти записи в элементе ListBox
непрактично: элемент должен быть слишком
широким, чтобы вместить всю строку с именем,
адресом, городом, номером телефона и т.д.
Практичнее хранить в элементе ListBox имена,
используя их как ключи для доступа к элементам
массива, в котором хранится остальная
информация. Каждая запись хранится в элементе
массива, соответствующем одному из пунктов
элемента ListBox. Если установить значение свойства
ItemData равным индексу соответствующего элемента
массива данных, то при необходимости можно
получить немедленный доступ к записям массива.
Этот подход применим и к файлам с произвольным
доступом (значение свойства ItemData равно числу
совпадающих записей).
Как автоматически скролить элемент ListBox вниз Данный пример покажет, как можно автоматически уходить в конец списка элемента ListBox при добавлении новых элементов. Расположите на форме элемент ListBox и элемент CommandButton. Добавьте код. Как вы понимаете, за автоматический уход в конец списка отвечают строчки List1.Selected(List1.NewIndex) = True/False. Первая строчка выделяет последний (NewIndex) элемент списка, вторая - снимает выделение. Dim a Private Sub Command1_Click() a = a + 1 List1.AddItem a List1.Selected(List1.NewIndex) = True List1.Selected(List1.NewIndex) = False End Sub наверх Как выравнять элементы ListBox'а вправо Как вы знаете, по умолчанию элементы ListBox'а выравнены по левой кромке. Следующий пример покажет, как можно выравнять элементы ListBox'а по правой кромке. Элементы ListBox'а выраниваются в зависимости от ширины ListBox'а. Private Const LB_SETTABSTOPS = &H192 Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Dim i Private Sub Command1_Click() List1.Clear List1.AddItem "Азбука Visual Basic" List1.AddItem "Ресурс AVB" List1.AddItem "www.azbuakvb.narod.ru" End Sub Private Sub Command2_Click() Dim mTabs(0) As Long mTabs(0) = -List1.Width * 44 / 1000 + 2 SendMessage List1.hwnd, LB_SETTABSTOPS, 1, mTabs(0) List1.Clear List1.AddItem vbTab & "Азбука Visual Basic" List1.AddItem vbTab & "Ресурс AVB" List1.AddItem vbTab & "www.azbuakvb.narod.ru" 'List1.Refresh End Sub Private Sub Form_Load() Command1_Click End Sub наверх Выделение всех элементов в ListBox'е Расположите на форме элемент ListBox и 2 элемента CommandButton. Установите свойство MultiSelect элемента ListBox в 1 или 2 Пример 1 основан на функции SendMessageBynum, Пример 2 - на функции SendMessage 'Пример 1 Private Declare Function SendMessageBynum Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Const LB_SELITEMRANGE = &H19B Private Sub Form_Load() List1.AddItem "11" List1.AddItem "22" List1.AddItem "33" End Sub Private Sub Command1_Click() Call SendMessageBynum(List1.hWnd, LB_SELITEMRANGE, 1, (List1.ListCount - 1)) End Sub Private Sub Command2_Click() Call SendMessageBynum(List1.hWnd, LB_SELITEMRANGE, 0, (List1.ListCount - 1)) End Sub 'Пример 2 Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Const LB_SETSEL = &H185 Private Sub Form_Load() List1.AddItem "111" List1.AddItem "222" List1.AddItem "333" End Sub Private Sub Command1_Click() SendMessage List1.hwnd, LB_SETSEL, True, ByVal True End Sub Private Sub Command2_Click() If List1.SelCount Then SendMessage List1.hwnd, LB_SETSEL, False, ByVal True Else Command1_Click End If End Sub наверх Выделение элемента в ListBox'е при нажатии на правую клавишу мыши Добавьте на форму элемент ListBox 'Пример 1 Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Const LB_ITEMFROMPOINT = &H1A9 Private Sub Form_Load() List1.AddItem "11" List1.AddItem "22" List1.AddItem "33" End Sub Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim indeX As Long Dim XPosition As Long, YPosition As Long XPosition = CLng(X / Screen.TwipsPerPixelX) YPosition = CLng(Y / Screen.TwipsPerPixelY) indeX = SendMessage(List1.hWnd, LB_ITEMFROMPOINT, 0, ByVal ((YPosition * 65536) + XPosition)) If indeX < List1.ListCount Then List1.Selected(indeX) = True End If End Sub 'Пример 2 Private Sub Form_Load() List1.AddItem "11" List1.AddItem "22" List1.AddItem "33" End Sub Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim iTemp As Integer If Button = vbRightButton Then With List1 iTemp = ((Y / Screen.TwipsPerPixelY) \ (TextHeight("A") / Screen.TwipsPerPixelY)) + .TopIndex If iTemp > .ListCount - 1 Then iTemp = -1 .ListIndex = iTemp .SetFocus End With End If End Sub наверх Мои программы BalloonMessage for MS Agent BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels. Автора: Шатрыкин Иван и Павел Сурменок. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Dr.Max Ответ ожидается по этому адресу Кто-нить скажите как подключить ресурс к проэкту??? Автор вопроса: Илья Ответ ожидается по этому адресу Как для Windows 98/XP на форме запустить avi-файл? Автор вопроса: Жорж Ответ ожидается по этому адресу у меня имеется рисунок, очень большого размера (3000 х 4000), мне надо его разместить на форме, в маленьком размере (300 х 400), а также кнопку по нажитии, которой картинка бы увеличивалась, причем что бы она не залазила за форму, а появлялись ползунки, которыми можно было просмотреть невидимую часть рисунка. Автор вопроса: Миша Ответ ожидается по этому адресу Необходимо создать контрольную сумму к строке текста, строка состоит из русских символов. Подскажите как это можно сделать CRC и после проверить ее. Автор вопроса: Karov Alexey Ответ ожидается по этому адресу На вход COM порта подаются бинарные сигналы определенной длины, но MsCommControl не может их определить, а выдает как либо пустые строки, либо символы ??, ну как в настройкакх настроины неизвестные. Ну так вот, может кто-нибудь знает как мне получить получить эти данные в нормальном виде, ну что бы в программе в цикле If применять можно было бы? Автор вопроса: shadow Ответ ожидается по этому адресу Скачал исходник ричтекстбокса, добавил его в проект, все отлично работает,но когда попытался скомпилить проект мне сказали что нужна двоичная совместимость. Я ставил совместимость и со скачанным контролом и с тем который сам скомпилил(отдельно от моего проекта контрол компилится без вопросов), все равно выдается сообщение что нужна двоичная совместимость. Автор вопроса: Shadow Ответ ожидается по этому адресу Подскажите АПИ (с описанием) или ссылочку штоб юзера от сетевой папки отшибить Автор вопроса: Diman Ответ ожидается по этому адресу Можно ли сделать так, чтобы при старте программы данные из определённого файла записывальсь в событие, например cmd1_click () И как это сделать? Автор вопроса: Dmitry Ответ ожидается по этому адресу Может кто из Вас знает, как замерять время меньше 1 мс?? Пробовал через Sleep - и замерял его через timeGetTime - то он даже 1 мс не держит если указать "Sleep 1" (а гдето 2-5 мс выходит), а если Sleep 0.5 - то уже ближе к 1 мс, но всё равно он как-то глючит. Его мининимум может быть только 0.1 или 0.5, а если больше чем 0.6 - то около 2-6 мс! Может кто подскажет, как тут быть? В Свойствах системы откопал ресурсы системного таймера (там 4 регистра - от &H40 до &H43). Подключился к ним - но вот закономерность нарастания немогу никак вдуплить! Может есть ещё какито АПИ ф-ции или какието счётчики или таймера????? Автор вопроса: tronos Ответ ожидается по этому адресу Подскажите пожалуйста,как сделать плавную и неплавную прокрутку текста в RichTextBox. Автор вопроса: Alec Perle Ответ ожидается по этому адресу Вопрос по VBA (Excel). К объектам Shape на листе можно приделать макрос (OnAction). У меня порядка двух-трех сотен элементов. Как программно определить, на каком именно элементе была нажата мышка? Автор вопроса: Ксения Ответ ожидается по этому адресу Может кто-нибудь знает как в MSChart сделать гладкий график? Автор вопроса: Dr.Max Ответ ожидается по этому адресу Нашел исходник гоночного симулятора на ВБ. Но он не запускается, говорит:<< Run-time error '429' ActiveX component can't create object >> . Что это значит и как узнать ,что это за компанент???? Если кто-нибудь скачивал это с vbstreets.da.ru из download ,то скажите, какой нужно подключить (если не стандартный ,то где скачать) актив ??? Автор вопроса: Алексей Ответ ожидается по этому адресу У меня 4 вопроса: - Кто может сказать где взять информацию о структурах файлов разных типов. Например EXE-файла. - Кто знает как без всяких API-функций сделать выделение методом наведения. т.е. реакцию на наведение мышей на объект. Слышал, что используется свойство Tag... - Подскажите, где в инете можно достать иконки или BMP-шки для тулбаров (панелей, как в крутых программах, типа Word и др), только очень качественные - с градиентацией. Или какой программой они рисуются? Буду очень благодарен! Если можно дайте прямые ссылки на zip фрхивы. - Кто работал со Speech API??? Пожалуйста помогите: дайте примерчик на VB или код. Также важен принцип работы на VB. Взаимную помощь гарантирую! Автор вопроса: Евгений Ответ ожидается по этому адресу Как подсоединится к удаленному MS SQL Server. Автор вопроса: Евгений Ответ ожидается по этому адресу Как средствами Win API отправить сообщение по электронной почте? Ответы: Вопрос: 1.Как сделать так,чтобы при очередном клике по label для ввода символов в text, курсор распологался справа от введенго символа? Я пишу так: Private Sub Label1_Click() Dim strExp As String strExp = Left(Text1.Text, Text1.SelStart) strExp = strExp & " " & Label1 & "" strExp = strExp & Mid(Text1.Text, Text1.SelStart + 1) Text1 = strExp End Sub 2.Что значит 6 ошибка-Overflow(переполнение) Ответ: Автор ответа: Dr.Max Overflow -так и значит - переполнение! Если ты используешь переменную ,например, Byte и она принимает значение > 255, то она переполнена ! Короче, она умеет считать только до 255,примерно так же как первоклашки до 10 :))) Рикомендую не игнорировать такие нудные название как "Виды переменных в ВБ", а хоть что -нибуть прочитать на эту тему (одного раза на хватает:))! Вопрос: Подскажите, пожалуйста, как в Visual Basic сделать гладкий график без углов. Очень надо. И еще не подскажете как на гафике раскрасить области разными цветами (естественно в зависимости от значений). Ответ: Автор ответа: P@Ssword Инструкция по использованию нижележащего кода: 1) Покласть на форму PictureBox. 2) ---//--- CommandButton. 3) Вставить код :-) 4) Запустить. 5) Потыкать по пикчебоксу. 6) Нажать на кнопку. 7) Любоваться закатом 8<>()... Option Explicit Option Base 1 Dim M() As Single, X() As Single, Y() As Single Dim TempArr() As Single Private Function PrepareSpline(inpArr() As Single) As Boolean Dim n As Integer, i As Integer Dim L() As Single, R() As Single, S() As Single Dim D As Single, E As Single, F As Single, H As Single, P As Single PrepareSpline = False On Error Resume Next n = UBound(inpArr, 2) On Error GoTo 0 If n < 2 Then Exit Function ReDim M(n), X(n), Y(n), L(n), R(n), S(n) For i = 1 To n X(i) = inpArr(1, i) Y(i) = inpArr(2, i) Next i D = X(2) - X(1) E = (Y(2) - Y(1)) / D For i = 2 To n - 1 H = D D = X(i + 1) - X(i) If D = 0 Then D = 0.0001 F = E E = (Y(i + 1) - Y(i)) / D L(i) = D / (D + H) R(i) = 1 - L(i) S(i) = 6 * (E - F) / (D + H) Next i For i = 2 To n - 1 P = 1 / (R(i) * L(i - 1) + 2) L(i) = -L(i) * P S(i) = (S(i) - R(i) * S(i - 1)) * P Next i M(n) = 0 L(n - 1) = S(n - 1) M(n - 1) = L(n - 1) For i = n - 2 To 1 Step -1 L(i) = L(i) * L(i + 1) + S(i) M(i) = L(i) Next i PrepareSpline = True End Function Private Function CalcValue(arg As Single) As Single Dim ret As Single, i As Integer, n As Integer Dim D As Single, H As Single, P As Single, R As Single n = UBound(X) For i = 1 To n If arg < X(i) Then Exit For Next i Select Case i Case 1 ' arg меньше x(1) -> экстраполируем D = X(2) - X(1) If D = 0 Then D = 0.0001 ret = -D * M(2) / 6 + (Y(2) - Y(1)) / D ret = ret * (arg - X(1)) + Y(1) Case n + 1 ' arg больше x(n) -> экстраполируем D = X(n) - X(n - 1) If D = 0 Then D = 0.0001 ret = D * M(n - 1) / 6 + (Y(n) - Y(n - 1)) / D ret = ret * (arg - X(n)) + Y(n) Case Else ' интерполируем D = X(i) - X(i - 1): H = arg - X(i - 1) R = X(i) - arg: P = D * D / 6 ret = (M(i - 1) * R ^ 3 + M(i) * H ^ 3) / (6 * D) ret = ret + ((Y(i - 1) - M(i - 1) * P) * R + (Y(i) - M(i) * P) * H) / D End Select CalcValue = ret End Function Private Sub Command1_Click() If PrepareSpline(TempArr) Then DrawCurve Else MsgBox "Золотые руки, но растут не из того места", vbOKOnly + vbCritical End If End Sub Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim i As Integer Static n As Integer n = n + 1 ReDim Preserve TempArr(2, n) TempArr(1, n) = X TempArr(2, n) = Y Picture1.Circle (X, Y), 60 End Sub Private Sub DrawCurve() Dim i As Integer Picture1.PSet (X(LBound(X)), CalcValue(X(LBound(X)))) For i = 0 To Picture1.ScaleWidth Picture1.Line -(i, CalcValue(CSng(i))) Next i End Sub Вопрос: Кто знает как програмно добавить запись в реестр? Путь: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] Мне нужно чтобы прога была в автозагрузке... Но нинаю как это зделать програмно. ПОМОГИТЕ........ Ответ: Автор ответа: Dr.Max Это не совсем то ,что нужно(работает только с одной веткой) ,но может понадобится ... Оболочка Public Enum constTypeOptions GetOption = 0 SaveOption = 1 End Enum Public Enum constKeyOptions Имя1 = 0'Добавляем сколько нужно и назначаем номер Имени в реестре Имя2 = 1 End Enum Обертка Public Function Options(ByVal TypeOptions As constTypeOptions, _ ByVal Key As constKeyOptions, Optional Setting As String) As String Select Case TypeOptions Case GetOption 'считывание Options = GetSetting(App.EXEName, "Options", Key) Case SaveOption 'запись SaveSetting App.EXEName, "Options", Key, Setting End Select End Function Первый запуск If Options(GetOption, Time) = vbNullString Then 'если таких имен в реестре нет ,то Options SaveOption, Имя1, 10 ' создать их ,и записать их первые значения Options SaveOption, Имя2, 9 End If После первого запуска нажмите <пуск> => <выполнить> ,введите Откройте ветку HKEY_CURRENT_USER\SOFTWARE\VB and VBA Program Settings Найдите имя своего проекта. И в должны увидеть Параметр Значение 0 10 1 9 Записывать : Options SaveOption, Имя, Значение Читать : Options(GetOption, Имя) Вопрос: Подскажите - есть таблицы в HTML формате и их нужно "перевести" в xls формат. Проблема в том, что в ячейках HTML находятся десятичные числа (например 1.52) в одних ячейках и текст в других ячейках. Когда копируешь в ексель, то ексель числа воспринимает (формат ячейки - все форматы) как январь.52. Мне же нужно для обработки, чтобы текст в таблице оставался текстом, а числа 1.52 в 1,52 а не 1.52. Как это возможно решить с помощью макросов VBA. Ответ: Автор ответа: Эд Вот примерчик, если вот правильно понял: В листе добавляешь кнопу, а в коде пиши вот это:(должно получиться!!!) Option Explicit Public x, y, n As Integer Public z As String Private Sub CommandButton1_Click() Range("A1").Select ' ячейка в которую надо циферки вводить, ну типа: 1,23 x = ActiveCell.FormulaR1C1 For n = 1 To Len(x) If Mid(x, n, 1) = "," Then z = Trim(Str(Left(x, n - 1))) + Trim(".") + Trim(Str(Right(x, (Len(x) - n)))) End If Next n Range("A2").Select' ячейка в которую скинет циферки, в том виде, который тябе нужен, ну типа: 1.23 ActiveCell.FormulaR1C1 = Val(z) End Sub Формат ячеек ставь общий(али текстовый) ...:) Вопрос: Я скачал конвектор *.х файлов ,но как им пользоватся?? Я запускаю ехе"шник ,он быстренько пробежался сверху вниз и выгружается !! На 100% уверен ,что это я не умею им пользоватся!! Ответ: Автор ответа: Vir Какие команды надо вводить я незнаю так как таких конвертеров много. Наверняка он DOS'овский и просмотреть то что там прокручивается если сначала запустить MS-DOS (или в XP командную строку) и от туда запустить его. все ключи должны быть там описаны или в крайнем случае запустить с ключом /? Ответ: Автор ответа: crash.smolensk@fbi.net Просто запусти command.com и в нем запусти этот exe файл Ответ: Автор ответа: P@Ssword Этот конвертёр - консольное приложение, а Windows 2000 грешит тем, что автоматически закрывает консоли после завершения приложения (в Win9* обычно окно остаётся, с заголовком "Сеанс завершён"). Во избежание этого надо просто открыть консоль ручками (в W98 это "Сеанс MS-DOS", в 2000 - "Командная строка"), а в ней уже запускать приложение. Вопрос: А как создаются виртуальные диски? мне надо создать образ файловой системы, а сами файлы хранить не надо. Т.е. на моем диске система будет видеть теже файлы, что и на CD (к примеру), но при попытке доступа - из содержимое будет единым. Ответ: Автор ответа: Vitaly O. Pois Subst Устанавливает соответствие пути в файловой системе заданному диску. Вызванная без параметров, команда subst выводит имена виртуальных дисков, созданных предыдущими вызовами команды. Синтаксис subst [диск: [диск2:]путь] subst диск1: /d Параметры диск1: Задает диск, которому будет поставлен в соответствие заданный путь диск2: Задает физический диск, на который ссылается заданный путь (если не совпадает с текущим диском). путь Задает путь, который ставится в соответствие диску. /d Удаляет виртуальный диск. /? Отображает справку в командной строке. Примечания a.. Следующие команды не будут работать и не должны быть использованы с дисками, созданными командой subst: a.. chkdsk b.. diskcomp c.. diskcopy d.. format e.. label f.. recover b.. Параметр диск1 должен лежать в диапазоне, задаваемом командой lastdrive. В противном случае subst выведет следующее сообщение об ошибке: Недопустимый параметр - диск1: Примеры Чтобы создать виртуальный диск Z на пути B:\User\Betty\Forms, введите следующую команду: subst z: b:\user\betty\forms Теперь, вместо ввода полного имени, можно получить доступ к каталогу, обращаясь к диску, как показано ниже: z: Вопрос: Я пишу программу на подобии ICQ, но он не работает (программа не отсылает и не получает сообщения), когда включен какой-нибудь Firewall(Zone Alarm, например), можно ли firewall как-нибудь убедить, что этот порт, используемый программой, перекрывать не надо? Ответ: Автор ответа: Мунгалов Андрей Можно нужно смотреть правила разрешений или запретов в самом ФаирВоле просто нужно разрешить твой порт. Вопрос: Как в VB работать с ресурсами (хорошо было бы, если мне кто-нибудь прислал ссылочку на какую-нибудь статью в инете), и вообще, как вшить музыкальный файл в свою прогу? Ответ: Автор ответа: Vir В Samples должны быть примеры, ищи файлы .RES .RC соответственно ресурс и описание ресурсов. Описание нужно для его создания, создается с помощью проги вроде RC.EXE где то в папке VB Вопрос: Написал прогу на VB.net. Подскажите, как мне ее теперь распространять? А именно, какие файлы включать в комплект поставки? Я не использовал никаких дополнительных контролов. Ответ: Автор ответа: Vir В VB.net все намного сложнее чем в VB6. Во первых просто переносом файлов не отделыешся. Чтобы создать установочный пакет нужно к текушему проекту добавить еше один который будет отвечать за него, называется вроде Setup или что то в этом роде. Но даже если и создаш его то перенести на другой Win9x-Me неудастся потребует FrontPage, Internet Explorer X.X.X и т.д. вобщем нужно очень долго разбиратся. Ответ: Автор ответа: Loki Ну типа ты приобламался с распространением прог. Если нет на машине VB NET или Microsoft .NET Framework она не будет работать. А эти элементы занимают не ниеже 100МБ. Какой человек незная VB будет ставить себе эти компоненты. Только зря место тратить. Вопрос: Как из программы на VB проверить, установлен в WIN архиватор RAR или ZIP ? И как узнать в какой каталог он установлен. Ответ: Автор ответа: Севостьянов Игорь Для этого достаточно посмотреть информацию в реестре... И в соответствии с полученной информацией проверить наличие файлов на диске... А вообще-то не понятно зачем это надо ?... Я думаю это неверный подход к решению проблемы, но может я и оишбаюсь - все зависит от поставленной задачи (а она и не описана в вопросе) Ответ: Автор ответа: Eugene Я думаю, что узнать куда установлен RAR, лучше всего из реестра, в разделе: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinRAR archiver] Там есть параметр "UninstallString". Вот если этот параметр не равен пустой строке, то туда и установлен RAR. Правда нужно отсекать в этой строке имя файла. Ответ: Автор ответа: Nechaev Sergey Проверь в реестре ключ HKEY_CLASSESS_ROOT\.rar Посмотри на что ссылается этот ключ (параметр по умолчанию) - у меня на WinRar.Потом смотришь, что записано по адресу HKEY_CLASSES_ROOT\WinRAR(или то что у тебя нашлось на предыдущим шаге)\shell\open\command\. В параметр по-умолчанию путь к архиватору. Откинь последние символы (%1 и все такое) и получишь путь к WinRar.exe. С винзип аналогично, но ничего конкретного сказать не могу, т.к зип не установлен. Вопрос: Вот такая есть у мня трабла: надо считать с порта (ЛПТ) инфу и преобразовать её в двоичную инфу. Пример: если на порту 255 то чтобы оно дало строку 11111111 или в массив (0 то 7). Считать данные с порта я знаю, а вот как оптимальным способом преобразовать енто в двоичную систему? Пробовал через оператор InStr отслеживать запятую и т. д. - работает - но МЕДЛЕННО! скорость чтения порта упала с 400000 операций считывания до 40000 в секунду! Это очень большая потеря! Ответ: Автор ответа: Андрей Щёкин Интересная задача. Я полагаю, что это должно сработать: ' Выдаёт 0 или 1 - состояние указаного бита в передаваемом байте ' Нумерация битов ' Байт: 215 = 1 1 0 1 0 1 1 1 ' Биты (номера): 8 7 6 5 4 3 2 1 Public Function GetBit(ByVal Value As Byte, ByVal BitNum As Byte) As Byte Dim tPower As Long tPower = 2^(BitNum-1) ' сэкономим одно вычисление GetBits = CByte((Value Or tPower) \ tPower) End Function Ответ: Автор ответа: P@Ssword Function BIN(bByte As Byte) As String Dim Pos As Integer ' ї P@Ssword, 2k2 BIN = String$(8, "0") Pos = 8 While bByte Mid$(BIN, Pos, 1) = IIf(bByte Mod 2 = 0, "0", "1") bByte = bByte \ 2 Pos = Pos - 1 Wend
|
|||||||||||||||
Выпуск подготовили: |
Сурменок Павел |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||