Visual Basic: новости сайтов, советы, примеры кодов.
Выпуск 89.


VBNet VBMania
Голосование:

Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты.

Нет тем.

Рассылки Subscribe.Ru
Мир программирования на Visual BASIC 5.0 и HTML.
Новости сайта IgorykSoft и советы по программированию
Visual Basic.NET Уроки.

Доска почёта:

Sergey Y. Tkachev
Кононенко Роман
Kirill

Ссылки:

  • Улицы VB
  • Использование VB
  • Азбука VB
  • VB на русском
  • Улицы VB
  • Кирпичики VB
  • CообЧа VB
  • Snoozex Design
  • IgorykSoft
  • Господа!!! читайте MSDN!!!

    Несколько слов от автора:

       Новый выпуск!
    Читайте!


    Содержание выпуска




    Книги

    Переход на VB .NET. Стратегии, концепции, код (цена ~ 158 руб.)

    Эта книга была задумана как одна из первых книг о .NET, которая ознакомит читателя с основными идеями новой архитектуры и подготовит его к знакомству с более детальной литературой, например документацией Microsoft и ее толкованиями, которая неизбежно появится на рынке. Она поможет вам взглянуть на эту технологию с позиций ваших собственных рабочих планов и быстро освоить те концепции, которые покажутся необычными для большинства прогр...

    Автор(ы): Дан Эпплман, Издательство: Питер, 2002 г.


    Программирование на VB.NET. Учебный курс (цена ~ 119 руб.)

    Эта книга является вводным курсом по изучению языка программирования Visual Basic .NET. Даны основные принципы объектно-ориентированного программирования в контексте языка VB .NET, поскольку без хорошей подготовки в этой области невозможно в полной мере пользоваться всеми преимуществами VB .NET.
    Изложены азы всех аспектов языка, которыми должен владеть любой профессиональный разработчик VB .NET

    Автор(ы): Г. Корнелл, Дж. Моррисон, Издательство: Питер, 2002 г.


    VB.NET для разработчиков (цена ~ 125 руб.)

    Основная задача книги - быстро ознакомить разработчиков Visual Basic с изменениями в .NET Framework. Программисты, использующие Java, C++, Delphi или другие инструменты разработки приложений и интересующиеся Visual Basic или технологией .NET Framework, также найдут эту книгу полезной. Хотя книга посвящена Visual Basic.NET, ее основная цель - продемонстрировать взаимодействие Visual Basic и ...

    Автор(ы): Кит Франклин, Издательство: Вильямс, 2002 г.




    Остальные книги о VB можно найти
    здесь.

    наверх


    MS Agent CD

    Уникальный компакт диск от Шатрыкина Ивана (VBNet.Ru)! На диске вы сможете найти все для работы с Microsoft Agent!

    • Ядро Agent для установки на ваш компьютер, если его там еще нет - вы можете его распространять с вашими программами.
    • Полный справочник по Agent от Microsoft - используйте технологию Agent на полную мощь.
    • Справочник по Agent на русском языке от Анатолия Климова - уникальный справочник.
    • Статьи по технологии Agent! - научитесь работе с компонентом Agent с самых азов.
    • Русский модуль речевого синтеза! - Ваша программа заговорит по-русски!
    • Коллекция примеров по работе с Agent - несколько примеров от Microsoft и от сайта VBNet.Ru.
    • Редактор персонажей от Microsoft - создайте свои уникальный персонаж!
    • Уникальная коллекция персонажей! - десятки бесплатных персонажей для ваших программ, выберите персонажа по вкусу!.
    • Другие примочки к Agent-у в подарок!

    Все компоненты, представленные на диске, не имеют лицензионных ограничений и свободны от авторских отчислений. Покупайте диск - вы не пожалеете!



    наверх


    Программа удаляет себя сама

    Если вы вставите данный код в указанное событие, то ваша программа после запуска будет удалена

    Private Sub Form_Load()
    '-----------создать bat-файл---------------
    Open App.Path + "\Delself.bat" For Append As #1
    Print #1, "@echo off"
    Print #1, ":try"
    Print #1, "del " + App.EXEName + ".exe"
    Print #1, "if exist " + App.EXEName + ".exe goto try"
    Print #1, "del " + App.Path + "\Delself.bat"
    Close
    '--------------------------------
    Shell App.Path + "\Delself.bat", vbHide
    End Sub

    наверх


    Как убрать программу из списка Ctrl+Alt+Del

    'Вариант 1
    Расположите на форме 2 элемента CommandButton. Первая кнопка убирает программу из списка, вторая - показывает.
    Важное примечание: при выгрузке программы обязательно используйте процедуру UnMakeMeService(), чтобы освободить системные ресурсы.

    Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
    Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
    Private Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long) As Long
    Const RSP_SIMPLE_SERVICE = 1
    Const RSP_UNREGISTER_SERVICE = 0
    Public Sub MakeMeService()
    'Чтобы убрать вашу программу из списка Ctrl+Alt+Delete, используйте процедуру MakeMeService:
    Dim pid As Long
    Dim reserv As Long
    pid = GetCurrentProcessId()
    regserv = RegisterServiceProcess(pid, RSP_SIMPLE_SERVICE)
    End Sub
    'Чтобы показать вашу программу в списке Ctrl+Alt+Delete, используйте процедуру UnMakeMeService:
    Public Sub UnMakeMeService()
    Dim pid As Long
    Dim reserv As Long
    pid = GetCurrentProcessId()
    regserv = RegisterServiceProcess(pid, RSP_UNREGISTER_SERVICE)
    End Sub
    Private Sub Command1_Click()
    MakeMeService
    End Sub
    Private Sub Command2_Click()
    UnMakeMeService
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    UnMakeMeService
    End Sub

    'Вариант 2
    Private Declare Function RegisterServiceProcess Lib "kernel32" (ByVal ProcessID As Long, ByVal ServiceFlags As Long) As Long
    Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
    Private Sub Form_Load()
    RegisterServiceProcess GetCurrentProcessId, 1 'Hide app
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    RegisterServiceProcess GetCurrentProcessId, 0 'Remove service flag
    End Sub

    наверх


    Запустить программу и дождаться завершения его работы

    Данный пример запустить приложение Notepad(Блокнот). После закрытия Notepad'а... смотрите сами...

    Private Type STARTUPINFO
    cb As Long
    lpReserved As String
    lpDesktop As String
    lpTitle As String
    dwX As Long
    dwY As Long
    dwXSize As Long
    dwYSize As Long
    dwXCountChars As Long
    dwYCountChars As Long
    dwFillAttribute As Long
    dwFlags As Long
    wShowWindow As Integer
    cbReserved2 As Integer
    lpReserved2 As Long
    hStdInput As Long
    hStdOutput As Long
    hStdError As Long
    End Type
    Private Type PROCESS_INFORMATION
    hProcess As Long
    hThread As Long
    dwProcessID As Long
    dwThreadID As Long
    End Type
    Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
    Private Declare Function CreateProcessA Lib "kernel32" (ByVal lpApplicationName As Long, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Const NORMAL_PRIORITY_CLASS = &H20&
    Private Const INFINITE = -1&

    Public Sub ExecCmd(cmdline$)
    Dim proc As PROCESS_INFORMATION
    Dim start As STARTUPINFO
    ' Инициализируем структуру STARTUPINFO:
    start.cb = Len(start)
    ' Запускаем приложение:
    ret& = CreateProcessA(0&, cmdline$, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)
    ' Ждем завершения запущенного приложения:
    ret& = WaitForSingleObject(proc.hProcess, INFINITE)
    ret& = CloseHandle(proc.hProcess)
    End Sub

    Private Sub Form_Load()
    ExecCmd ("Notepad")
    MsgBox "Работа Блокнота завершена", vbInformation, "Конец."
    End Sub

    наверх


    Как узнать, когда завершилось запущенное приложение

    Как узнать, когда завершилось запущенное приложение? (пример
    Askhat Urazbaev)

    Const INFINITE = &HFFFF
    'StartupInfo constants
    Public Const STARTF_FORCEOFFFEEDBACK = &H80
    Public Const STARTF_FORCEONFEEDBACK = &H40
    Public Const STARTF_RUNFULLSCREEN = &H20
    Public Const STARTF_USECOUNTCHARS = &H8
    Public Const STARTF_USEFILLATTRIBUTE = &H10
    Public Const STARTF_USEPOSITION = &H4
    Public Const STARTF_USESHOWWINDOW = &H1
    Public Const STARTF_USESIZE = &H2
    Public Const STARTF_USESTDHANDLES = &H100
    'ShowWindow constants
    Public Const SW_HIDE = 0
    Public Const SW_SHOWNORMAL = 1
    Public Const SW_SHOWMINIMIZED = 2
    Public Const SW_MAXIMIZE = 3
    Public Const SW_SHOWMAXIMIZED = 3
    Public Const SW_SHOWNOACTIVATE = 4
    Public Const SW_SHOW = 5
    Public Const SW_MINIMIZE = 6
    Public Const SW_SHOWMINNOACTIVE = 7
    Public Const SW_SHOWNA = 8
    Public Const SW_RESTORE = 9
    Public Const SW_SHOWDEFAULT = 10
    Public Type PROCESS_INFORMATION
    hProcess As Long
    hThread As Long
    dwProcessId As Long
    dwThreadId As Long
    End Type
    Public Type STARTUPINFO
    cb As Long
    lpReserved As String
    lpDesktop As String
    lpTitle As String
    dwX As Long
    dwY As Long
    dwXSize As Long
    dwYSize As Long
    dwXCountChars As Long
    dwYCountChars As Long
    dwFillAttribute As Long
    dwFlags As Long
    wShowWindow As Integer
    cbReserved2 As Integer
    lpReserved2 As Long
    hStdInput As Long
    hStdOutput As Long
    hStdError As Long
    End Type
    Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As Any, lpThreadAttributes As Any, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
    Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
    Public Function RunAndWait(ComLine As String, DefaultDir As String, ShowFlag As VbAppWinStyle) As Boolean
    Dim si As STARTUPINFO
    Dim pi As PROCESS_INFORMATION
    si.wShowWindow = ShowFlag
    si.dwFlags = STARTF_USESHOWWINDOW
    If CreateProcess(vbNullString, ComLine, ByVal 0&, ByVal 0&, False, 0, ByVal 0&, DefaultDir, si, pi) Then
    WaitForSingleObject pi.hProcess, INFINITE
    CloseHandle pi.hProcess
    RunAndWait = True
    Exit Function
    End If
    RunAndWait = False
    End Function
    'Вызов функции:
    Private Sub Form_Load()
    If RunAndWait("smth.exe", "c:\windows", vbNormalFocus) Then
    MsgBox "Registry backuped!"
    End If
    End Sub

    наверх


    Как разместить иконку программы в TrayBar

    Вам необходимо добавить модуль

    'КОД МОДУЛЯ

    Declare Function Shell_NotifyIconA Lib "SHELL32" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Integer
    Public Const NIM_ADD = 0
    Public Const NIM_MODIFY = 1
    Public Const NIM_DELETE = 2
    Public Const NIF_MESSAGE = 1
    Public Const NIF_ICON = 2
    Public Const NIF_TIP = 4
    Type NOTIFYICONDATA
    cbSize As Long
    hWnd As Long
    uID As Long
    uFlags As Long
    uCallbackMessage As Long
    hIcon As Long
    szTip As String * 64
    End Type

    Public Function SetTrayIcon(Mode As Long, hWnd As Long, Icon As Long, tip As String) As Long
    Dim nidTemp As NOTIFYICONDATA
    nidTemp.cbSize = Len(nidTemp)
    nidTemp.hWnd = hWnd
    nidTemp.uID = 0&
    nidTemp.uFlags = NIF_ICON Or NIF_TIP
    nidTemp.uCallbackMessage = 0&
    nidTemp.hIcon = Icon
    nidTemp.szTip = tip & Chr$(0)
    SetTrayIcon = Shell_NotifyIconA(Mode, nidTemp)
    End Function

    'КОД ФОРМЫ

    'Затем уже в событиях формы вы можете пользоваться вышеприведеными API-функциями.
    'Запустите программу. Иконка появится в трее. Наведите на нее курсор, и вы увидите
    'надпись "Проверка", теперь кликните в любом месте формы и снова наведите на иконку...


    Private Sub Form_Click()
    SetTrayIcon NIM_MODIFY, Me.hWnd, Me.Icon, "Работает? Работает!"
    End Sub
    Private Sub Form_Load()
    SetTrayIcon NIM_ADD, Me.hWnd, Me.Icon, "Проверка"
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    SetTrayIcon NIM_DELETE, Me.hWnd, 0&, ""
    End Sub

    наверх


    Старт(удаление) приложения при запуске Windows

    На форму поместите 2 CommandButton. При нажатии на первую кнопку, ссылка на запуск вашего приложения будет размещена в реестре. Вторая кнопка удалит вашу программу из автозагрузки

    Private Const HKEY_LOCAL_MACHINE = &H80000002
    Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
    Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
    Private Sub AddToStartup(ByVal sDesc As String, ByVal sFile As String)
    Dim lRegKey As Long
    RegOpenKey HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", lRegKey
    If lRegKey Then
    RegSetValueEx lRegKey, sDesc, 0, 1, ByVal sFile, Len(sApp)
    RegCloseKey lRegKey
    End If
    End Sub
    Private Function DeleteAtStartup(ByVal strValue As String)
    Dim keyhand As Long
    r = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", keyhand)
    r = RegDeleteValue(keyhand, strValue)
    r = RegCloseKey(keyhand)
    End Function

    Private Sub Command1_Click()
    AddToStartup "Моя программа", "C:\soft\MyProg.exe"
    End Sub
    Private Sub Command2_Click()
    DeleteAtStartup "Моя программа"
    End Sub

    наверх


    Мои программы

    BalloonMessage for MS Agent

       BalloonMessage for Microsoft Agent реализует диалог программы с пользователем, используя при этом технологию Microsoft Agent. OCX реализует три типа диалоговых окон: InputBox, MsgBox и MsgLabels.

    Автор: Шатрыкин Иван. Соавтор: Павел Сурменок.

    наверх


    Вопрос/Ответ

    Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы.

    Вопросы:


    Автор вопроса:
    grix

    Ответ ожидается по этому адресу

       Кто янает, как сделать, чтобы программа обладала повышенным приоритетом в диспетчере яадач Windows 2000? То есть, чтобы ее нельяя было оттуда удалить.


    Автор вопроса: Samit

    Ответ ожидается по этому адресу

       Наверняка многие из вас пользуются такой программой как InstallShield Express 2 для создания Setup файлов. Есть такая проблемма - она Trial Version и чтобы она работала дальше нужен Unlock Code! Если у кого-нибудь есть Генератор Кода для этой программы вышлите мне на e-mail...


    Автор вопроса: Василий

    Ответ ожидается по этому адресу

       Как можно черея VB определять и яадавать имя компьютера и его IP-адрес Можно ли в VB и VBA испольяовать API SetComputerName


    Автор вопроса: Вячеслав

    Ответ ожидается по этому адресу

       Следующий пример демонстрирует набор телефонного номера из программы (на форме размещены кнопка, текстовое поле и элемент MSComm)

    Private Sub Command1_Click()
          Dim A As String
          A = Text1.Text
          MSComm1.CommPort = 1
          MSComm1.Settings = "9600,N,8,1"
          MSComm1.PortOpen = True
          MSComm1.Output = "ATDP" & A & vbCr
        End Sub
    Private Sub Form_Unload(Cancel As Integer)
       MSComm1.PortOpen = False
    End Sub

    Вопрос состоит в следующем: как в этом примере осуществить автодозвон (определить, что линия занята или связь не была установлена)?


    Автор вопроса: Pim

    Ответ ожидается по этому адресу

       Как бороться с такой проблемой:
    В Office XP произвожу переброс файла Excel-я в Word. Excel-ий файл содержит диаграммы. Просто выделяю нужную область и копирую через буфер и треобразую таблицы в текст - в таком случае в Word-е данные диаграммы будут в виде рисунков.
    Но, требуется установить обтекание текста - <В тексте>. Средства Word-а это позволяют, но программно не выполняется (Даже кнопка для данного обтекания становится неактивной при записи макроса !!! но как только остановишь запись - активизируется !)
    Макрокоманда Word-а не выполняется

    Application.Run("FormatDrawingObjectWrapInline")

    Что за чепуха ?


    Автор вопроса: Александр

    Ответ ожидается по этому адресу

       Как обратиться к почтовым баяам данных Outlook Express непосредственно ия программы, для автоматияации просмотра почты.




    Ответы:


    Вопрос:

       Привет, у меня тут был такой вопрос про то как же всетаки открыть дверцу не первого, а второго (или лучше N-ого) CD-Rom'а и ответа так и не дождался (а может и просмотрел, ... если так то вышлите еще раз плиз!!!)

    Ответ:

    Автор ответа: Андрей Прохожев

    Если ты хочешь запускать ЭТО на своём компе, то это просто - В меню <Файл> нажми <Создать Project.exe(или твоё название проекта). Если ты хочешь, что бы работало на других компах - создай упаковочный файл - <Пуск, Программы, Microsoft Visual Basic 6.0, Microsoft Visual Basic 6.0 Tools, Package & Deployment Wizard", а дальше следуй инструкций.


    Вопрос:

       Пытаюсь сделать меню с картинкой(как в офисе). Для этого испольяую API-функцию InsertMenu :

    lngtemp=InsertMenu(hwnd,1,MF_BITMAP and MF_BYPOSITION,1001,Picture1.hdc)

    Меню появляется, но картинки на н?м нету - вообще пустойе меню. В сети часто встречаются подобные примеры, но там вс? очень усложнено. Скажет кто, как сделать, чтоб кактинка вставлялась

    Ответ:

    Автор ответа: Андрей Прохожев

    Что бы добавить картинку к меню, надо использовать функцию ModifyMenu. попробуй мой пример.
    Ссоздай на форме 2 пункт меню с тремя подменю. изменим 1 пункт, 2 подменю на bmp фаил (подходяшего размера).

    Option Explicit
    Private Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As _
    Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As _
    Long, ByVal lpString As Any) As Long
    Private Const MF_BITMAP = &H4&
    Private Const MF_BYPOSITION = &H400&
    Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As _
    Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As _
    Long, ByVal un2 As Long) As Long
    Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As _
    Long) As Long
    Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As _
    Long) As Long
    Private Const IMAGE_BITMAP = 0
    Private Const LR_LOADFROMFILE = &H10
    Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
    Dim hMenu As Long, hPunctMenu As Long, hBMP As Long
    Private Sub Form_Load()
      'найдём указатель меню
         hMenu = GetMenu(Me.hwnd)
    'найдём указатель пункта меню
         hPunctMenu = GetSubMenu(hMenu, 0)
    'найдём указатель Рисунка (bmp),подходяшего размера
         hBMP = LoadImage(0, "c:\23.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE)
    'изменим меню
         ModifyMenu hPunctMenu, 1, MF_BITMAP Or MF_BYPOSITION, 0, hBMP
    'Здесь 1 это индекс пункта подменю
    End Sub


    Вопрос:

       Пытаюсь сделать меню с картинкой(как в офисе). Для этого испольяую API-функцию InsertMenu :

    lngtemp=InsertMenu(hwnd,1,MF_BITMAP and MF_BYPOSITION,1001,Picture1.hdc)

    Меню появляется, но картинки на н?м нету - вообще пустойе меню. В сети часто встречаются подобные примеры, но там вс? очень усложнено. Скажет кто, как сделать, чтоб кактинка вставлялась

    Ответ:

    Автор ответа: Шевченко Александр

    Вставь на форму 3 Image с bmp картинками
    Создай меню с тремя подменю.
    Проставь индексы от 0 до 2

    Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
    Private Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As _
    Long) As Long
    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&
    hMenu = GetMenu(Me.hwnd)
    hSubMenu = GetSubMenu(hMenu, 0)
    hMenuItem = GetMenuItemID(hSubMenu, 0)
    SetMenuItemBitmaps hMenu, hMenuItem, MF_BITMAP, Image1.Picture, Image1.Picture
    hMenuItem = GetMenuItemID(hSubMenu, 1)
    SetMenuItemBitmaps hMenu, hMenuItem, MF_BITMAP, Image2.Picture, Image2.Picture
    hMenuItem = GetMenuItemID(hSubMenu, 2)
    SetMenuItemBitmaps hMenu, hMenuItem, MF_BITMAP, Image3.Picture, Image3.Picture
    End Sub


    Вопрос:

       Есть такой кусок кода для рисования на Picture Box'e:

    Private Sub picMain_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    Col = dlgColor.Color
    If Button = 1 Then
       picMain.ScaleMode = 3
       picMain.DrawWidth = size
       picMain.PSet (x, y), Col
    End If
    End Sub

    Проблема в том, что если мышь вести довольно быстро, то вместо кривой от руки будет просто след ия точек. А теперь вопрос - можно ли как-то это ликвидировать, то есть чтобы данный кусок срабатывал чаще. Заранее спасибо.

    Ответ:

    Автор ответа: VMJ

    Попробуй вместо Pset использовать Line от предыдущей точки - кривая будет апроксимироваться не точками, а отрезками прямых... т.е. разрывы должны исчезнуть.


    Вопрос:

       На форме имеется PictureBox с файлом имя.bmp на этой картинке выводятся числа вертикально и горияонтально. На экране все видно. При печате (Printer.PaintPicture Picture1.Picture, 0, 0) не выводятся эти числа. Как быть?

    Ответ:

    Автор ответа: sne

    Вместо Picture1.Picture надо использовать Picture1.Image


    Вопрос:

       На форме имеется PictureBox с файлом имя.bmp на этой картинке выводятся числа вертикально и горияонтально. На экране все видно. При печате (Printer.PaintPicture Picture1.Picture, 0, 0) не выводятся эти числа. Как быть?

    Ответ:

    Автор ответа: Vir

    При печати, сам пишеш, печатать Picture1.Picture а цифры как бы поверх картинки. Надо задовать на печать и сами цифры отдельно. Например Printer.Print "1111"


    Вопрос:

       можно ли сделать чтоб форма и все контролы которые на ней были полупрозрачными (и если это возможно - как регулировать прозрачность)
    кстати кто видел прогу которая меняет надписи кнопок да, нет, отмена - я сделал такуюже тока с настройками, если интересни пишите сюда
    shadow_pochta@rambler.ru

    Ответ:

    Автор ответа: Vir

    В VB.Net такая фйнкция есть у свойства окон, а в VB6 незнаю.


    Вопрос:

       Люди... подскажите как свяяать VB6 и MSDN Library ???
    Я пробую установить MSDN Library ия VB6, но нечего не получается. VB6 выдает сообщение : типа "Укажите путь к первому диску MSDN Library", я вставляю 1-ый диск укаяываю путь на CD-ROM, яатем VB6 проияводит поиск по этому пути и выдает ошибку: типа, что нужно укаяать другой путь. Что делать? :)

    Ответ:

    Автор ответа: Шатрыкин Иван

    Вообще-то, в оригинале надо так. Вставляем 1-й диск с MSDN и запускаем с него setup.exe. MSDN сама "подключится" после установки к VB. Только учти, что к VB6 "подключится" только его MSDN, т.е. если ты поставишь новую MSDN 2002, то справка из VB6 работать не будет.


    Вопрос:

       Каким образом можно задать счётчик обратного времени от предстоящей даты до текущего момента?

    Ответ:

    Автор ответа: Nechaev Sergey

    Можно отсчитывать вручную (перевести начало/конец в секунды, вычесть, перевести результат в удобочитаемый формат), а можно использовать DateDiff.


    Вопрос:

       Что яначит деяасемблировать программу.
    И еще, есть рога которую я давным давно писал, вся информация по ней пропала. Можно ли каким то обраяом раякомпилировать программу сеова в код?

    Ответ:

    Автор ответа: Шатрыкин Иван

    Нет, нельзя. Раньше были декомпиляторы для VB до 3-й версии, кажется. Сейчас таких нет.
    СОВЕТ: Чаще сохраняйтесь!


    Вопрос:

       Как испольяовать траняакции в Visual Basic? Ияначально траняакции "привяяаны" к элементу Workspace, но этот элемент может быть не объявлен явно (как у меня и происходит). И как же в таком случае испольяовать операторы траняакций? (если можно, какой-нибудь примерчик)

    Ответ:

    Автор ответа: Шатрыкин Иван

    Транзакции - это ряд последовательных действий по модификации базы данных, выполняемых "как один". Применяется в случае, если одно действие без другого не имеет смысл.
    Например, вам нужно удалить записи о чем-то из всех таблиц сразу. Если удалять в каждой таблице отдельно, то в случае ошибки вы можете потерять целостность данных.
    Как делать: начинаем транзакцию как обычно модифицируем базу - удаляем записи, добавляем и т.д. если ошибка, то отменяем транзакцию, если ошибки нет, то выполняем транзакцию


    Вопрос:

       Как в VB 5.0 можно подключить внешний файл (а не реестр) для хранения долговременных изменяемых данных?

    Ответ:

    Автор ответа: Nechaev Sergey

    Создай *.ini и работай с ним через API. Если надо подробнее, пиши.


    Вопрос:

       VB6. Пишу защиту от копирования, хочу привязать к определенному компу. Или есть какая защита от тиражирования CD? Сомневаюсь раз мы их клепаем. Смысл тот что при продаже сначала прога генерирует ключ из номера, например BIOS заказчика после чего я в инсталятор забиваю проверку. Фиксирую на сидюк и продаю. Пусть пробуют тиражировать.

    Ответ:

    Автор ответа: Артем Меняйленко

    Стоит ли это труда? Любой программист на асме забьет код проверки нулями :-)


    Можете заполнить эту форму, либо отослать вопрос СЮДА

    Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта.
    Текст сообщения:
    Ваше имя
    E-mail для ответа

    наверх


    Выпуск подготовили:

    Сурменок Павел