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


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

Голосования сайта VBNet.Ru. Результаты голосований передаются на сайт. Проследите, что есть соединение с интернетом.



Рассылки Subscribe.Ru
VB.NET-World
Новости сайта 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 можно найти
    здесь.

    наверх


    Как программно открыть/закрыть ComboBox

    В этом примере вам понадобятся два элемента CommandButton

    Private Const CB_SHOWDROPDOWN = &H14F
    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
    Public Sub SetComboDropDown(cboCombo As ComboBox, ByVal bDown As Boolean)
    Dim nRet As Long
    nRet = SendMessageByNum(cboCombo.hwnd, CB_SHOWDROPDOWN, bDown, 0)
    End Sub

    Private Sub Command1_Click()
    Call SetComboDropDown(Combo1, True)
    End Sub
    Private Sub Command2_Click()
    Call SetComboDropDown(Combo1, False)
    End Sub

    Private Sub Form_Load()
    Combo1.AddItem "1"
    Combo1.AddItem "2"
    Combo1.AddItem "3"
    End Sub

    наверх


    Установить ширину ниспадающей части ComboBox

    Добавьте элемент ComboBox на форму

    Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Const CB_SETDROPPEDWIDTH = &H160

    Private Sub Form_Load()
    'Число '180' устанавливает ширину ниспадающей части: замените его любым вашим числом
    r = SendMessageLong(Combo1.hwnd, CB_SETDROPPEDWIDTH, 180, 0)
    End Sub

    наверх


    Как сделать первую букву каждого слова заглавной

    Разместите на форме элемент ComboBox. Запустите проект на выполнение и попробуйте набрать несколько слов в элементе ComboBox.

    Private Function ccProperCase(MySourceControl As Control)
    On Error GoTo ErrH
    Dim strString As String
    strString = MySourceControl.Text
    If IsNull(strString) Then Exit Function
    strString = StrConv(strString, vbProperCase)
    MySourceControl.SelStart = Len(strString)
    MySourceControl.Text = strString
    Exit Function
    ErrH:
    MsgBox "Error at ccProperCase:::- " & Err.Number & " - " & Err.Description, vbCritical
    Exit Function
    End Function

    Private Sub Combo1_Change()
    Call ccProperCase(Combo1)
    End Sub

    наверх


    Быстрый поиск элемента в списке

    Данный пример позволяет по вводимым буквам получить определенный элемент в ComboBox'е.
    Разместите на форме элемент ComboBox. Запустите проект на выполнение и попробуйте набрать в ComboBox'е "ext".
    Как вы понимаете, за быстрый поиск отвечает событие Combo1_KeyUp.

    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 RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long
    Function GetAllExts() As Variant
    Dim lRegResult As Long
    Dim lCounter As Long
    Dim hCurKey As Long
    Dim strBuffer As String
    Dim lDataBufferSize As Long
    Dim intZeroPos As Integer
    lCounter = 0
    lRegResult = RegOpenKey(&H80000000, "", hCurKey)
    Do
    lDataBufferSize = 255
    strBuffer = String(lDataBufferSize, " ")
    lRegResult = RegEnumKey(hCurKey, lCounter, strBuffer, lDataBufferSize)
    If lRegResult = 0& Then
    intZeroPos = InStr(strBuffer, Chr$(0))
    If Left(strBuffer, 1) = "." Then
    Form1.Combo1.AddItem LCase(Right(strBuffer, Len(strBuffer) - 1))
    End If
    lCounter = lCounter + 1
    Else
    Exit Do
    End If
    Loop
    End Function

    Private Sub Form_Load()
    GetAllExts
    End Sub

    Private Sub Combo1_KeyUp(KeyCode As Integer, Shift As Integer)
    Dim st As Long
    If KeyCode <> vbKeyReturn And KeyCode <> vbKeyBack And KeyCode <> vbKeySpace Then
    st = Len(Combo1.Text)
    If st < 3 Then
    For X = 0 To Combo1.ListCount - 1
    If Left(Combo1.List(X), st) = Combo1.Text Then
    Combo1.ListIndex = X
    Combo1.SelStart = st
    Combo1.SelLength = Len(Combo1.Text) - st
    Exit For
    End If
    Next X
    End If
    End If
    End Sub

    наверх


    Добавление элемента CheckBox в элемент ComboBox

    Данный пример покажет, как можно вставить элемент CheckBox внутрь элемента ComboBox. Добавьте на форму 1 ComboBox и 1 CheckBox.

    Private Const EC_LEFTMARGIN = &H1
    Private Const EC_RIGHTMARGIN = &H2
    Private Const EC_USEFONTINFO = &HFFFF&
    Private Const EM_SETMARGINS = &HD3&
    Private Const EM_GETMARGINS = &HD4&
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hwndParent As Long, ByVal hwndChildAfter As Long, ByVal lpszClass As String, ByVal lpszWindow As String) As Long
    Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

    Private Sub AddCheckToCombo(ByRef chkThis As CheckBox, ByRef cboThis As ComboBox)
    Dim lhWnd As Long
    Dim lMargin As Long
    lhWnd = FindWindowEx(cboThis.hwnd, 0, "EDIT", vbNullString)
    If (lhWnd <> 0) Then
    lMargin = chkThis.Width \ Screen.TwipsPerPixelX + 2
    SendMessageLong lhWnd, EM_SETMARGINS, EC_LEFTMARGIN, lMargin
    chkThis.BackColor = cboThis.BackColor
    chkThis.Move cboThis.Left + 3 * Screen.TwipsPerPixelX, cboThis.Top + 2 * Screen.TwipsPerPixelY, chkThis.Width, cboThis.Height - 4 * Screen.TwipsPerPixelY
    chkThis.ZOrder
    End If
    End Sub

    Private Sub Form_Load()
    AddCheckToCombo Check1, Combo1
    Dim i As Long
    For i = 1 To 20
    Combo1.AddItem "Test" & i
    Next i
    End Sub

    наверх


    Создайте свой 3D-Button

    Добавьте элемент PictureBox на форму

    Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
    End Type
    Const BDR_RAISEDOUTER = &H1
    Const BDR_SUNKENOUTER = &H2
    Const BDR_RAISEDINNER = &H4
    Const BDR_SUNKENINNER = &H8
    Const BDR_OUTER = &H3
    Const BDR_INNER = &HC
    Const BDR_RAISED = &H5
    Const BDR_SUNKEN = &HA
    Const EDGE_RAISED = (BDR_RAISEDOUTER Or BDR_RAISEDINNER)
    Const EDGE_SUNKEN = (BDR_SUNKENOUTER Or BDR_SUNKENINNER)
    Const EDGE_ETCHED = (BDR_SUNKENOUTER Or BDR_RAISEDINNER)
    Const EDGE_BUMP = (BDR_RAISEDOUTER Or BDR_SUNKENINNER)
    Const BF_LEFT = &H1
    Const BF_TOP = &H2
    Const BF_RIGHT = &H4
    Const BF_BOTTOM = &H8
    Const BF_TOPLEFT = (BF_TOP Or BF_LEFT)
    Const BF_TOPRIGHT = (BF_TOP Or BF_RIGHT)
    Const BF_BOTTOMLEFT = (BF_BOTTOM Or BF_LEFT)
    Const BF_BOTTOMRIGHT = (BF_BOTTOM Or BF_RIGHT)
    Const BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM)
    Const BF_DIAGONAL = &H10
    Const BF_DIAGONAL_ENDTOPRIGHT = (BF_DIAGONAL Or BF_TOP Or BF_RIGHT)
    Const BF_DIAGONAL_ENDTOPLEFT = (BF_DIAGONAL Or BF_TOP Or BF_LEFT)
    Const BF_DIAGONAL_ENDBOTTOMLEFT = (BF_DIAGONAL Or BF_BOTTOM Or BF_LEFT)
    Const BF_DIAGONAL_ENDBOTTOMRIGHT = (BF_DIAGONAL Or BF_BOTTOM Or BF_RIGHT)
    Const BF_MIDDLE = &H800 ' Fill in the middle
    Const BF_SOFT = &H1000 ' For softer buttons
    Const BF_ADJUST = &H2000 ' Calculate the space left over
    Const BF_FLAT = &H4000 ' For flat rather than 3D borders
    Const BF_MONO = &H8000 ' For monochrome borders
    Private Declare Function DrawEdge Lib "user32" (ByVal hdc As Long, qrc As RECT, ByVal edge As Long, ByVal grfFlags As Long) As Boolean
    Private Sub Form_Load()
    ' Always set the ScaleMode to pixels when using API drawing functions.
    ScaleMode = vbPixels
    With Picture1
    ' The next line is not required if you put your drawing code in the Paint event.
    .AutoRedraw = True
    ' Set the Backcolor, set the Borderstyle to none, and size the picture box to a more realistic button size.
    .BackColor = vb3DFace
    .BorderStyle = 0
    .Move 60, 10, 90, 30
    ' Make sure the picture box uses the pixel ScaleMode, and set the tag of the control to a caption for later use with DrawControl.
    .ScaleMode = vbPixels
    .Tag = "3D Button"
    End With
    ' Draw the initial button.
    DrawControl Picture1, Picture1.Tag, EDGE_RAISED
    End Sub
    ' When the picture box gets a click event, an etched box is drawn on the upper left corner of the form.
    Private Sub Picture1_Click()
    MsgBox "You Pressed the Button"
    End Sub
    ' When the user presses the mouse down on the picture box a sunken edge is drawn to simulate a depresessed button.
    Private Sub Picture1_MouseDown(Button%, Shift%, X!, Y!)
    DrawControl Picture1, Picture1.Tag, EDGE_SUNKEN
    End Sub
    ' When the user releases the mouse over the picture box a standard button is drawn.
    Private Sub Picture1_MouseUp(Button%, Shift%, X!, Y!)
    DrawControl Picture1, Picture1.Tag, EDGE_RAISED
    End Sub
    ' The DrawControl helper function is designed to make it easier to draw a button on a picture box.
    Private Sub DrawControl(picControl As PictureBox, strCaption As String, Optional vntEdge)
    Dim r As RECT ' Holds the location of the DrawEdge rectangle.
    Dim intOffset% ' Used to shift the caption when the button is pressed.
    ' If the user doesn't provide a Edge flag, then use a default value.
    vntEdge = IIf(IsMissing(vntEdge), EDGE_RAISED, vntEdge)
    ' Clear the picture control and determine where to draw the new rectangle and caption.
    With picControl
    .Cls
    r.Left = .ScaleLeft
    r.Top = .ScaleTop
    r.Right = .ScaleWidth
    r.Bottom = .ScaleHeight
    If vntEdge = EDGE_SUNKEN Then intOffset = 2
    .CurrentX = (.ScaleWidth - .TextWidth(strCaption) + intOffset) / 2
    .CurrentY = (.ScaleHeight - .TextHeight(strCaption) + intOffset) / 2
    End With
    ' Draw the caption, then draw the rectangle.
    Picture1.Print strCaption
    DrawEdge picControl.hdc, r, CLng(vntEdge), BF_RECT
    ' If AutoRedraw is True, then any drawing done by an API call cannot be seen until until the picture box gets refreshed.
    If picControl.AutoRedraw Then picControl.Refresh
    End Sub

    наверх


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

    BalloonMessage for MS Agent

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

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

    наверх


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

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

    Вопросы:


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

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

       Что нужно сделать, чтобы гиперссылка отображалась в текстовом поле также как в Wordе или в IE.


    Автор вопроса: Святослав

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

       Как в VB6 запретить запуск экранной заставки на время работы своей программы?


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

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

       есть файл *.mdb как написать прогу чтобы указывая путь к файлу, она из него вытягивала все е-мейлы, ну к примеру все слова содержащие @


    Автор вопроса: Винокуров К

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

       Например я поставил на форму контрол "InternetTransferControl" А что делать дальше? Как им пользоваться? (Этот вопрос относится ко всем контролам) Дайте пожалуйста маленький лик.без. новичку.


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

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

       Народ! Может кто знает, как делать асемблерные вставки в VB???? (на подобии Delphi или C++ ...) - ведь должно ж быть.


    Автор вопроса: Nechaev Sergey

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

       Как можно прицепить к TextBox'у свое контекстное меню, чтобы при нажатии правой кнопки мыши выскакивала моя менюшка а не стандартная. Если в событие MouseDown (up) прописать ShowPopupMenu все равно выскакивает стандартное от текстового поля. Как его заблокировать. Писать свой контрол с нуля или подключать уже готовый не хотелось бы, т.к. данный ход нужен только в одном месте на весь проект, а сторонний контрол ресурсов сожрет немерено.


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

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

       Как вывести на печать таблицу или отчет ия программы VB в формате А3?


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

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

       Кто сталкивался - как можно "заморозить" дочернюю форму в MDI. т.е. скажем все они перемещаются с помощью скролла MDI формы, а одна "прилепилась" в ее левой части и не реагирует ни на какие действия с полосой прокрутки...


    Автор вопроса: Костян

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

       есть ли такой компонент с помощью которого можно было открыть HTML страницу? Если есть то как с помощью него открыть страницу?


    Автор вопроса: Мунгалов Андрей

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

       Как заблокировать клавиатуру и мышь. Нужно чтоб работало даже если запущена игра или еще что.


    Автор вопроса: Dmitriy Alimov

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

       Подскажите как считать из *.txt строки, к примеру 10 всего 5 но в произвольном порядке


    Автор вопроса: Dr.Max

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

       Мне нужно прокрутить видео в полноэкранном режиме ,и чтобы работали все свойства формы(клавиатура,мышка).


    Автор вопроса: Dr.Max

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

       Есть файл Avi, ножно сунуть его в прогу ,чтобы не тоскать его отдельно. Кто-нибудь знает как ??? Мои эксперементы с ole обламилсь:((((((((( если ,конечно, ole это то ,что нужно.


    Автор вопроса: Саша

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

       На сервере файл размером 1Mb. А мне нужно только последнии 10 байт. как мне закачать их, некачая весь файл.


    Автор вопроса: Ленчевский Вячеслав

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

       есть ли в бейсике "пингоподобные" команды? (необходимо периодически опрашивать список адресов и выводить информацию о наличии соединения в сети)


    Автор вопроса: Саша

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

       Пишу

    Private Declare Function fCreateShellLink Lib "VB5STKIT.DLL" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArgs As String) As Long
    Private Sub Form_Load()
         lngresult = fCreateShellLink("..\..\Desktop", "LINK", "C:\myfile.exe", "")
    End Sub
      
    Но нечего не появляется.
    1.Почему ?
    2. Как создать ярлык на рабочем столе ?


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

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

       Это опять я :о). Подскажите плия какие апи(и как их декларировать) нужны чтобы просмотреть юяеров которые приконнектились к моему компу по локальной сети, к какому ресурсу они приконектились, какие файлы юяают, и как ия отключить? (я хочу сделать что-то типа черного списка)




    Ответы:


    Вопрос:

       Что такое Package & Deployment Wizard и нафиг это надо????

    Ответ:

    Автор ответа: Мунгалов Андрей

    Это надо не "НА фиг", а для создания простых инсталяшек твоих великих проектов.


    Вопрос:

       Есть таблица Exel, состоящая из трех столбцов. Как на VBA написать макрос который умножает каждую ячейку первого столбца на соответствующую ячейку второго столбца, а результат заносит в соответствующую ячейку третьего столбца

    Ответ:

    Автор ответа: Zoubar Serguey

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

    Public Sub sbMultiply()
    Dim a As Range
    Dim i As Long
    For Each a In Range("Столбец3")
         i = i + 1
         a.Value = Range("Столбец1").Cells(i).Value *
    Range("Столбец2").Cells(i).Value
    Next
    End Sub

    При этом предварительно необходимо присвоить имена Столбец1, Столбец2 и Столбец3 соответствующим диапазонам средствами Excel.


    Вопрос:

       Пожалуйста подскажите, как программным образом управлять полосой прокрутки в ListBoxe, скажем сдвинуть указатель на 25% вниз, при этом не касаясь содержимого самого ListBox-a и не снимая выделения, если выделено несколько записей?

    Ответ:

    Автор ответа: Zoubar Serguey

    Для управления полосой прокрутки в ListBox-e можно использовать свойство TopIndex.
    Например:

    List1.TopIndex = 10

    При этом 10-й элемент списка станет верхним видимым элементом в списке и соответственно передвинется полоса прокрутки.


    Вопрос:

       Как подключить FileSystemObject? Какая библиотека за нее отвечает?

    Ответ:

    Автор ответа: Мунгалов Андрей

    Подключается это так идешь в проект-ссылки(Project - References) Там ищешь Microsoft ScriptingRunTime. сам файл SCRRUN.DLL лежит в системной папке


    Вопрос:

       Тупой вопрос
       Открываю Notepad пишу туда число 20
       Закрываю. Смотрю размер файла - 2 байта
       Делаю тоже самое в ВБ

    Dim FileNum As Integer
    Dim txt As Byte
    FileNum = FreeFile

    txt = 20
    Open "c:\file.txt" For Output As FileNum
    Write #FileNum, txt
    Close #FileNum
    Смотрю размер 4 байта

    Мне необходимо создать именно 2 байтовый
    Пробовал через Binary Access - добавляются левые символы
    Помогите примером

    Ответ:

    Автор ответа: Мунгалов Андрей

    Бейсик в конце строки добавляет 0D 0A (перевод каретки , перевод строки)
    Попробуй писать в двоичном формате но не 20 а в шестнадцатиричном 32 30 и получишь свои два байта.


    Вопрос:

       Есть-ли универсальные способы яаполнения ListView и TreeView ия объекта типа recordset. Это может быть как код, так и контролы, но код лучше.

    Ответ:

    Автор ответа: Мунгалов Андрей

    Да просто все перебираешь весь рекорсет в цикле

    Do While Not rs.EOF
       List1.AddItem (rs("Имя поля"))
       rs.MoveNext
    Loop


    Вопрос:

       Я сделал отчет с помощью Crystal Reports Pro присоединил к форме, но когда яаношу новые данные в отчете они не обновляются, как это сделать или подскажите как можно сделать отчет по другому если это вояможно. Испольяую баяу данных MS Access

    Ответ:

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

    Свойство контрола Crystal Report - DiscardSavedData поставь в true.


    Вопрос:

       У меня VB60. Почему в его собственном редакторе не работает колесико у скролинговой мыши? Везде работает а в VB нет. Мышь обыкновенная Genius NetScroll. Драйвера стандартные Windows. Установлена Win98. Как можно решить? Или никак? А?

    Ответ:

    Автор ответа: Christian Software Center

    Попробуйте использовать не стандартные дрова Windows '98, а драйвер, который был куплен вместе с крыской. Обычно в нем поставляется много функций и настроек для мыши со "скролом". Например, с помощью Genius NetScroll+ v4.16 у меня работает скрол, только в VB5 (VB6 - аналогично). Единственное, что рожица в трее от драйвера может надоесть.


    Вопрос:

       А все таки как нарисовать треугольник по трем точкам. Конкретно мне надо: чтобы на экране нарисовался закрашенный треугольник. Если я буду рисовать его по линиям, то это займет много времени.

    Ответ:

    Автор ответа: Renat Rahimov

    Private Type tochka
    x As Long
    y As Long
    End Type
    Dim a As tochka, b As tochka, c As tochka
    Private Sub Form_Load()
    Show
    a.x = 100: a.y = 100: b.x = 50: b.y = 150: c.x = 220: c.y = 200
    For sy = a.y To c.y
    X1 = a.x + (sy - a.y) * (c.x - a.x) / (c.y - a.y)
    If sy < b.y Then
    X2 = a.x + (sy - a.y) * (b.x - a.x) / (b.y - a.y)
    Else
    If c.y = b.y Then
    X2 = b.x
    Else
    X2 = b.x + (sy - b.y) * (c.x - b.x) / (c.y - b.y)
    End If
    End If
    Line (X1, sy)-(X2, sy)
    Next
    End Sub
    ' Чтобы не возникли ошибки отсортируй вершины так,
    ' чтобы вершина A была верхней, C - нижней

    Если не нравиться скорость,то воспользуйся:

    Public Declare Function Polygon Lib "gdi32" Alias "Polygon" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long


    Вопрос:

       Как отобаяить в listbox имена файлов в укаяаной папки

    Ответ:

    Автор ответа: Christian Software Center

    Ставишь на форме: ListBox и FileListBox и DirListBox
       Пишем Sub-функцию:

    Private Sub ListBoxTeleport()
    Dim nFile As Integer
    ' Очишаем наш лист для новой загрузки
    List1.Clear
    ' В цикле считываем файлики со стандартного ФайлБокса и аддируем в
    Лист
       For nFile = 0 To File1.ListCount - 1
         List1.AddItem File1.List(nFile%)
       Next nFile
    End Sub
    '
    ' Здесь изменяем путь и вызываем сново функцию переноса данных
    '
    Private Sub Dir1_Change
    File1.Path = Dir1.Path
    Call ListBoxTeleport
    End Sub

    Всё!


    Вопрос:

       Как можно прицепить к TextBox'у свое контекстное меню, чтобы при нажатии правой кнопки мыши выскакивала моя менюшка а не стандартная. А может можно как-нибудь добавить в стандартное меню свой пункт? (хотя сильно в этом сомневаюсь). Писать свой контрол с нуля или подключать уже готовый не хотелось бы, т.к. данный ход нужен только в одном месте на весь проект, а сторонний контрол ресурсов сожрет немерено.

    Ответ:

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

    Конечно можно добавить и в стандарную менуху своё но реч сейчас не об етом.

    1. Создаёшь новую форму(или на уже созданой форме создаёшь меню)
    2. Создаёшь меню.
    3. В свойстве TextBox-а MouseDown:
      
    Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
       If Button = 2 Then
        PopupMenu MenuName
       End If
    End Sub

    вот собственно и всё :)
    Энто всё конешно классно :о), тока вот какая проблема: в твоём коде придецца два раза кнопу мыша жмать пока до менюшки достучишся. А вот если так:
      
    Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
       If Button = 2 Then
      
    Text1.Enabled = False
    Text1.Enabled = True

        PopupMenu MenuName
       End If
    End Sub
      
    Вот тада всё буит круто!




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

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

    наверх


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

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