← Март 2002 → | ||||||
2
|
3
|
|||||
---|---|---|---|---|---|---|
5
|
6
|
7
|
9
|
10
|
||
12
|
13
|
14
|
16
|
17
|
||
19
|
20
|
21
|
23
|
24
|
||
26
|
27
|
28
|
30
|
31
|
За последние 60 дней ни разу не выходила
Сайт рассылки:
http://vbnet.ru
Открыта:
31-07-2001
Статистика
0 за неделю
Visual Basic: новости сайтов, советы, примеры кодов. Выпуск 43.
Visual Basic: новости сайтов, советы, примеры кодов.
Выпуск 43.
VBNet
VBMania
Голосование: Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты. Нет тем. Доска почёта: Sergey Y. Tkachev Кононенко Роман Kirill Sergey Sapozhnikov Sobic Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
У меня сегодня день рождения. Сумел всё-таки сделать этот выпуск. Сейчас пойду с друзьями отмечать.
Читайте! Содержание выпуска
Книги
Остальные книги о VB можно найти здесь. наверх Выравнивание меню направо/налево Добавьте на форму CommandButton и Menu Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long Const MIIM_TYPE = &H10 Const MFT_RIGHTJUSTIFY = &H4000 Const MFT_STRING = &H0& Private Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal b As Boolean, lpMenuItemInfo As MENUITEMINFO) As Long Private Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, lpcMenuItemInfo As MENUITEMINFO) As Long Private Type MENUITEMINFO cbSize As Long fMask As Long fType As Long fState As Long wID As Long hSubMenu As Long hbmpChecked As Long hbmpUnchecked As Long dwItemData As Long dwTypeData As String cch As Long End Type Private Sub Command1_Click() Dim MnuInfo As MENUITEMINFO mnuH& = GetMenu(Me.hwnd) MnuInfo.cbSize = Len(MnuInfo) MnuInfo.fMask = MIIM_TYPE 'If you want to align to right only few menus, and leave the rest in left side, 'Replace the '0' below and the '0' two lines above the 'End Sub' with the number 'of menus you want to leave in the left side. myTemp& = GetMenuItemInfo(mnuH&, 0, True, MnuInfo) MnuInfo.fType = MFT_RIGHTJUSTIFY Or MFT_STRING 'Replace all 'MenuCaption' below with the caption of the first menu from left. MnuInfo.cch = Len("MenuCaption") MnuInfo.dwTypeData = "MenuCaption" MnuInfo.cbSize = Len(MnuInfo) myTemp& = SetMenuItemInfo(mnuH&, 0, True, MnuInfo) myTemp& = DrawMenuBar(Me.hwnd) End Sub наверх Переключение между пунктами подменю Подменю MyMenu должно содержать индекс (от 0 до...) Private Sub MyMenu_Click(Index As Integer) Static prevSelection As Integer MyMenu(prevSelection).Checked = False MyMenu(Index).Checked = True prevSelection = Index End Sub наверх Добавить 3D-Line под Меню Если вы хотите, чтобы ваше меню было подчеркнутым, добавьте в событие Form_Load() код 1 или 2 '1. Добавите 1 Frame Private Sub Form_Load() Frame1.Caption = "" Frame1.Height = 30 Frame1.Width = Screen.Width + 100 Frame1.Move -50, 0 End Sub '2. Private Sub Form_Load() AutoRedraw = True ScaleMode = 3 Cls Line (0, 0)-Step(ScaleWidth, 0), QBColor(8) Line (0, 1)-Step(ScaleWidth, 0), QBColor(15) AutoRedraw = False End Sub наверх Положить картинку в меню Добавьте на форму 3 Image. Создайте меню с тремя подменю 'функция GetMenu определяет форму с нужным меню Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long 'функция GetSubMenu определяет заголовок меню с которым будет идти работа Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long 'функция GetMenuItemID определяет пункт меню с которым будет идти работа Private Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long 'функция SetMenuItemBitmaps приклеивает к определённому пункту меню картинку Private Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long 'объявляется константа, о назначении которой я так и не докопался :-( Private Const MF_BITMAP = &H4& Private Sub Form_Load() Dim hMenu&, hSubMenu&, hMenuItem& 'объявление переменых типом Long 'определяем на какой форме нам нужно меню hMenu = GetMenu(Me.hwnd) 'определяем заголовок, если у Вас есть, например File и Edit, то индексом задаёте нужный hSubMenu = GetSubMenu(hMenu, 0) 'здесь мы определяем, что работать хотим с первым пунктом меню, т.к. индекс равен 0 hMenuItem = GetMenuItemID(hSubMenu, 0) '"клеим" картинку к первому пункту SetMenuItemBitmaps hMenu, hMenuItem, MF_BITMAP, Image1.Picture, Image1.Picture 'здесь мы определяем, что работать хотим со вторым пунктом меню, т.к. индекс равен 1 hMenuItem = GetMenuItemID(hSubMenu, 1) '"клеим" картинку ко второму пункту SetMenuItemBitmaps hMenu, hMenuItem, MF_BITMAP, Image2.Picture, Image2.Picture 'здесь мы определяем, что работать хотим с третьим пунктом меню, т.к. индекс равен 2 hMenuItem = GetMenuItemID(hSubMenu, 2) '"клеим" картинку к третьему пункту SetMenuItemBitmaps hMenu, hMenuItem, MF_BITMAP, Image3.Picture, Image3.Picture End Sub наверх Изменить цвет фона меню Option Explicit ' CreateBrushIndirect используется, чтобы создать фоновую кисть для меню Private Declare Function CreateBrushIndirect Lib "gdi32" (lpLogBrush As LOGBRUSH) As Long ' GetMenu используется, чтобы получить дескриптор меню Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long ' GetMenuInfo используется, чтобы получить текущую информацию для меню Private Declare Function GetMenuInfo Lib "user32" (ByVal hMenu As Long, lpcmi As tagMENUINFO) As Long ' SetMenuInfo используется, чтобы установить фоновую кисть назад в меню и все подменю Private Declare Function SetMenuInfo Lib "user32" (ByVal hMenu As Long, lpcmi As tagMENUINFO) As Long ' Используется в запросах к CreateBrushIndirect Private Type LOGBRUSH lbStyle As Long ' Тип cтиля (мы только должны создать твердый фон для этого примера) lbColor As Long ' Установите цвет кисти lbHatch As Long ' Стиль штриховки (не используемый в этом примере, потому что это игнорируется для Твердого стиля) End Type ' Используется в GetMenuInfo и запросах SetMenuInfo Private Type tagMENUINFO cbSize As Long ' Размер структуры типа (используйте len, чтобы вычислить) fMask As Long ' Маска информации / действий, чтобы обработать dwStyle As Long ' Стиль меню (не используемый в этом примере) cyMax As Long ' Максимальная высота меню в пикселах (не используется в этом примере) hbrBack As Long ' Дескриптор фоновой кисти dwContextHelpID As Long ' ИДЕНТИФИКАТОР Справочного контекста (не используется в этом примере) dwMenuData As Long ' Данные меню (снова не используются в этом примере) End Type Private Const BS_SOLID = 0 ' Твердый стиль для кисти Private Const MIM_APPLYTOSUBMENUS = &H80000000 ' Обращение к маске подменю Private Const MIM_BACKGROUND = &H2 ' Фоновая маска Private Sub Form_Load() Dim ret As Long ' Переменная для удержаyия возвращаемых значения от GetMenuInfo и SetMenuInfo Dim hMenu As Long ' Переменная для удержания дескриптора меню Dim hBrush As Long ' Переменная для удержания дескриптора фоновой кисти, которую мы собираемся создавать Dim lbBrushInfo As LOGBRUSH ' Переменная для удержания информации CreateBrushIndirect API Dim miMenuInfo As tagMENUINFO ' Переменная для удержания информации меню lbBrushInfo.lbstyle="BS_SOLID" ' Установить тип кисти lbBrushInfo.lbColor = vbRed ' Здесь мы устанавливаем наш цвет кисти lbBrushInfo.lbHatch = 0 ' Это значение игнорируется hBrush = CreateBrushIndirect(lbBrushInfo) ' Мы создаем нашу кисть hMenu = GetMenu(Me.hwnd) ' Получают дескриптор меню, которое изменяем miMenuInfo.cbSize = Len(miMenuInfo) ' Набор MenuInfo структурирует размер так, чтобы мы не получили ошибки ret = GetMenuInfo(hMenu, miMenuInfo) ' Получить фактическую информацию меню (в случае успеха возвращается 0) miMenuInfo.fMask = MIM_APPLYTOSUBMENUS Or MIM_BACKGROUND ' Устанавливают маску для изменений (изменение фона меню и всех подменю) miMenuInfo.hbrBack = hBrush ' Назначение нашей кисти для меню ret = SetMenuInfo(hMenu, miMenuInfo) ' Записывают нашу информацию назад в меню. Все OK (в случае успеха возвращается non-zero) End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = vbRightButton Then 'Процедура контекстного меню Me.PopupMenu mnuMenu End If End Sub наверх Динамическое создание PopupMenu Функция AppendMenu присоединяет в конец меню новый элемент, состояние которого определяется Flags Расположите на форме элемент CommandButton.
Мои программы BalloonMessage for MS Agent BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels. Автор: Шатрыкин Иван. Соавтор: Павел Сурменок. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Spilka Ответ ожидается по этому адресу Я подключаюсь к базе данных .mdb используя ADODB. Одно из полей "word" таблицы "Catalog" содержит данные типа OLE-объект. Там находятся файлы *.doc. Каким образом я смогу получить их содержимое (хотябы добраться до Object.Words.Item(#).Text)? Автор вопроса: al Ответ ожидается по этому адресу Как из проги отправить сообщение по сети на конкретный комп (IP и сетевое имя известны). Желательно не писать свой клиент-сервер. Хотел попробовать в проге Winsock, а получатель - WinPopup или NWPopup. Но не смог найти форматы сообщений и используемые порты. Кто в курсе - поделитесь информацией. Автор вопроса: SLTK Ответ ожидается по этому адресу Вот допустим у меня есть приложение клиент на мо?м компе и приложение сервер на другом они соеденены с помощью WINSOCK по протоколу TCP... Как мне получить доступ ко всем файлам и директориям сервера и к управлению ими (удаление, копирование ко мне на комп, яапуск, редактирование) Автор вопроса: Владимир Ответ ожидается по этому адресу Как получить скорость процессора(системы) ? Автор вопроса: Rusty Angles Ответ ожидается по этому адресу 1) В VB нельзя сделать ехе, который бы грузился без библиотек, но может есть перекодировшики исходного кода например в C+? для BASIC я находил, а для VB пока не встречал, мало рылся... 2) Где бы скачать dll или ocx с описаниями или примерами, архивирования, схожестью по сжатию с WinAce2, Zip ? (или исходный код без библиотек) 3) Как управлять звуком не используя файлы или команду beep, то есть чтобы например генерировать частоты и т.д. на SB. и др. зв. картах? При том чтобы так же можно было ловить входящие потоки с line-in, к примеру чтобы сделать осцилограф Автор вопроса: Brazhnik Ответ ожидается по этому адресу Подскажите, пожалуйста, как в VB6 работать с вложением (attachment) в почтовом сообщении (MAPI)? Как сохранить его в виде файла на диске? Автор вопроса: Белоусов Артем Ответ ожидается по этому адресу Как проверить состояние клавиатуры на нажатие какой либо клавиши и отобразить символ этой клавиши, если окно не активно. То есть как это сделано в клавиатурных шпионах. Ответы: Вопрос: Как сохранить графические данные в буфере обмена в BMP - файл? Ответ: Автор ответа: Игорь Dim ClipPicture As IPictureDisp 'Проверка: действительно в буфере нахоится рисунок BMP?: If Clipboard.GetFormat(vbCFBitmap) Then Set ClipPicture = Clipboard.GetData(vbCFBitmap) SavePicture ClipPicture, "C:\11.bmp" End If Вопрос: 1) Как в ListBox вставить содержимое базы данных, не набирая его вручную. 2) Можно ли работать с базами данных не используя элемент Data. Ответ: Автор ответа: shuric Зайди в "Вид" (Project) затем выбери "Ссылки" (References), поставь крыж напротив Microsoft DAO 3.51 Object Library. Затем в форме вставь ListBox Скопируй следующий код, обращая внимание на ссылки Private Sub Form_Load() Dim wrk As Workspace Dim db As Database Dim rs As Recordset Set wrk = CreateWorkspace("", "admin", "", dbUseJet) Set db = wrk.OpenDatabase("Имя базы данных, с которой надо взять данные") Set rs = db.OpenRecordset("Имя таблицы") rs.MoveFirst Do While rs.EOF = False Me.List1.AddItem (rs.Fields("имя поля").Value) rs.MoveNext Loop End Sub Вопрос: 1) Как в ListBox вставить содержимое базы данных, не набирая его вручную. 2) Можно ли работать с базами данных не используя элемент Data. Ответ: Автор ответа: Евгений Колотушкин Я только начинающий програмист, так что хочется услышать справедливую критику :-)) dim inum as integer iNum = 0 Adodc1.Recordset.MoveLast iLast = Adodc1.Recordset.AbsolutePosition Adodc1.Recordset.MoveFirst For iList = 1 To iLast List1.AddItem Adodc1.Recordset("CompanyName") Adodc1.Recordset.MoveNext Next Adodc1.Recordset.MoveFirst Вопрос: Visual Basic 6.0 как нибудь может общаться с портами LPT или COM, если да, то как? И как сделать так, чтобы я нажимал выключатель и запускался ну например таймер? Пожалуюста укажите Web-страницы, где об этом можно прочитать! Ответ: Автор ответа: Sergey Y. Tkachev Есть такой контрол MS Comm Есть такие страницы... MSDN называется. Вопрос: Как зделать установачный пакет (что бы моя программа заносилось в список "Установка и удоления программ") Ответ: Автор ответа: Иван Существует множество программ, например Setup Generator, в которой можно добавлять программу в "Установку и удаление программ", а также есть масса других настроек. Вопрос: Подскажите как сделать стикеры ("липкие листочки" на рабочем столе)? И чтобы была возможность делать настройки к ним (изменять цвет, размер фона, шрифта и т.д.). Ответ: Автор ответа: Иван На форму ставишь объект TextBox, устанавливаешь свойство appearance равное 0, т.е. плоской. С формы убираешь заголовок - свойство BorderStyle устанавливаешь 0. Изменять цвет TextBox'а свойство BackColor. Программно это выгледит так: text1.backcolor=rgb(числовое значение красного цвета, зелёного, синего). Значение должно быть в пределах от 0 до 255. Чтобы поменять размер фона: Form1.Height = Значение по высоте Form1.Width = Значение по длине Text1.Height = Form1.Height Text1.Width = Form1.Width Text1.FontName = "Название шрифта" Text1.FontSize = "Размер шрифта" Полужирный Text1.FontBold = True Курсивом Text1.FontItalic = True Цвет шрифта Text1.ForeColor = RGB(красный, зелёный, синий) Вопрос: Сделал программу расч?та таблицы. При печати таблицы пришлось программировать черчение сетки для страниц командой Line. Почему-то во время отправки страниц на печать не работает простой цикл For a=1 to 2. Выдается яначение а=0. On Error не действует. Можно ли напечатать таблицу ия VB6 каким нибудь другим способом? Ответ: Автор ответа: Sergey Y. Tkachev Вообще-то, лучше всего печатать репорты. Я никогда не маялся тем, чтобы печатать формы из VB. Сам я использую Crystal Reports 8, но если у тебя его нет, то можно воспользоваться Data Report Designer, который входит в состав VB6 (Кстати, в состав пятого Бэйсика, а по-моему и шестого тоже, входит Crystal Reports for Visual Basic 4.5) Вопрос: В VB пытаюсь сделать текстовый редактор. Посоветуйте, как сделать, чтобы по нажатии на кнопку BOLD(жирный), жирным становился не весь текст, а только выделенный. Я написал так: Case "Bold" With txtBox If .FontBold = True Then .FontBold = False Else .FontBold = True End If End With Ответ: Автор ответа: Sergey Y. Tkachev Ну, вообще-то текстбокс он и в Африке текстбокс, и у тебя тоже. Он НЕ ПОЗВОЛЯЕТ форматирование отдельных элементов текста. Используй RichEdit. У него, по-моему, есть что-то вроде .SelBold = True Вопрос: Работа с базой данных. Расклад такой: Таблица - "А" Поля - "Дата Продажи" "Наименование Товара" "Стоимость" Как должен выглядеть SQL запрос чтобы вывести данные о количестве записей из поля"Наименование Товара",общей суммы из поля"Стоимость" на конкретную дату"Дата Продажи" из таблицы"А". Причём должна быть возможность делать выборку на дату задаваемую пользователем,в отдельном Text.Box. Пример: 17.03.02 было проданно 15 наименований товара на сумму 1500 рублей. "VB 6.0" ,база данных "ACCESS" , контрол "DATA" Ответ: Автор ответа: Sergey Y. Tkachev "SELECT Count([Наименование товара]) AS ItemsCount, Sum([Стоимость]) AS ItemsTotal FROM [А] WHERE [Дата продажи] = " & Str(CLng(Cdbl(txtDate.Text))) Только смотри аккуратно. Дата продажи должна быть действительно датой, а не датой со временем. Если у тебя это не соблюдается, то лучше используй BETWEEN в условии WHERE "SELECT Count([Наименование товара]) AS ItemsCount, Sum([Стоимость]) AS ItemsTotal FROM [А] WHERE [Дата продажи] BETWEEN " & Str(CLng(Cdbl(txtDate.Text))) & " AND " & Str(CLng(Cdbl(txtDate.Text))+1) Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
||||||||||||||||||||
Выпуск подготовили: |
Сурменок Павел |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||