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


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

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



Рассылки Subscribe.Ru
VB.NET-World
Новости сайта IgorykSoft и советы по программированию
DanSoft о Visual Basic
Visual Basic.NET Уроки.

Ссылки:

  • Улицы VB
  • Использование VB
  • Азбука VB
  • VB на русском
  • Улицы VB
  • Кирпичики VB
  • CообЧа VB
  • Snoozex Design
  • IgorykSoft
  • DanSoft
  • Господа!!! читайте 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 можно найти здесь.

    наверх


    Узнать описание типа файла

    Данный пример позволяет узнать описание для данного типа файла, получаемого из реестра.

    Для данного типа файла *.bat вы получите - "Пакетный файл MS-DOS"

    Private Const MAX_PATH = 260

    Private Type SHFILEINFO
    hIcon As Long
    iIcon As Long
    dwAttributes As Long
    szDisplayName As String * MAX_PATH
    szTypeName As String * 80
    End Type

    Private Declare Function SHGetFileInfo Lib "Shell32" Alias "SHGetFileInfoA" (ByVal pszPath As Any, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long

    Function GetFileDescription(ByVal sPath As String) As String
    Const SHGFI_TYPENAME = &H400
    Dim FInfo As SHFILEINFO
    SHGetFileInfo sPath, 0, FInfo, Len(FInfo), SHGFI_TYPENAME
    GetFileDescription = Left$(FInfo.szTypeName, InStr(FInfo.szTypeName & vbNullChar, vbNullChar) - 1)
    End Function

    Private Sub Command1_Click()
    MsgBox GetFileDescription("c:\AUTOEXEC.BAT")
    End Sub

    наверх


    Написание слова прямо поверх всех окон

    Данный пример покажет как получить handle Рабочего Стола с тем, чтобы вы могли рисовать прямо на Рабочем Столе. Данный пример всего лишь напишет слово "vbAccelerator" прямо поверх всех окон.

    Private Declare Function CreateDCAsNull Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, lpDeviceName As Any, lpOutput As Any, lpInitData As Any) As Long
    Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long

    Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
    End Type
    Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
    Private Declare Function GetTextColor Lib "gdi32" (ByVal hdc As Long) As Long
    Private Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long

    Public Sub TestDesktopDC()
    Dim hdc As Long
    Dim tR As RECT
    Dim lCol As Long
    hdc = CreateDCAsNull("DISPLAY", ByVal 0&, ByVal 0&, ByVal 0&)
    tR.Left = 60
    tR.Top = 0
    tR.Right = 640
    tR.Bottom = 32
    lCol = GetTextColor(hdc)
    SetTextColor hdc, &HFF&
    DrawText hdc, "vbAccelerator", Len("vbAccelerator"), tR, 0
    SetTextColor hdc, lCol
    DeleteDC hdc
    End Sub

    Private Sub Command1_Click()
    TestDesktopDC
    End Sub

    наверх


    Увеличение быстродействия при заполнении какого-либо элемента данными

    Этот пример покажет, как можно запретить какой-либо области формы (окна) перекрашиваться. Данный пример ускоряет заполнение элементов ListBox или ListView большим количеством элементов. Разместите на форме элемент CommandButton и элемент CheckBox.

    Скопируйте и вставьте в события формы следующий код, запустите проект на выполнение. Нажмите на кнопку, запомните результат, затем поставьте галочку в элемент CheckBox и снова нажмите на кнопку. Надеюсь, вы заметили разницу?

    Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long
    Private Declare Function timeGetTime Lib "winmm.dll" () As Long

    Private Sub Command1_Click()
    Dim i As Long
    Dim lTIme As Long
    lTIme = timeGetTime()
    If (Check1.Value = Checked) Then
    LockWindowUpdate List1.hWnd
    End If
    List1.Clear
    For i = 1 To 10000
    List1.AddItem "Test " & i
    Next i
    If (Check1.Value = Checked) Then
    LockWindowUpdate 0
    List1.Refresh
    End If
    MsgBox "Time: " & timeGetTime - lTIme
    End Sub

    наверх


    Отслеживание нажатий на клавишы клавиатуры

    Чем мне понравился этот пример? Тем, что без использования таймеров ваша программа может реагировать на нажатия клавиш клавиатуры. Причем время реакции отклика на нажатия, как мне показалось, гораздо выше.

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

    Private m_bPlay As Boolean
    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

    Private Sub Command1_Click()
    Dim i As Long
    Dim iLast As Long
    If Command1.Caption = "&Stop" Then
    m_bPlay = False
    Command1.Caption = "&Play"
    Else
    Command1.Caption = "&Stop"
    m_bPlay = True
    i = 1
    Do
    ' Determine if the left or right keys are pressed:
    If (GetAsyncKeyState(vbKeyLeft)) Then
    ' Diminish the colour
    i = i - 1
    ElseIf (GetAsyncKeyState(vbKeyRight)) Then
    ' Increase the colour
    i = i + 1
    End If
    ' Colour within bounds:
    If (i < 1) Then i = 15
    If (i > 15) Then i = 1
    ' If colour has changed, change the display:
    If (iLast <> i) Then
    With Picture1
    .Cls
    .ForeColor = QBColor(i)
    ' Generate a RGB complement for the background:
    .BackColor = &HFFFFFF And (Not QBColor(i))
    .CurrentX = 64 * Screen.TwipsPerPixelX
    .CurrentY = 64 * Screen.TwipsPerPixelY
    Picture1.Print Hex$(QBColor(i))
    End With
    End If
    iLast = i
    ' This is here to stop the animation getting too fast to see:
    Sleep 25
    ' Ensure we can still click buttons etc
    DoEvents
    Loop While m_bPlay
    End If
    End Sub

    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If (Command1.Caption = "&Stop") Then
    Command1_Click
    End If
    End Sub

    наверх


    Скопировать рисунок из PictureBox в буфер обмена

    Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
    End Type

    Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
    Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = source
    Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hDC As Long) As Long
    Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hDC As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
    Private Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long) As Long
    Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
    Private Declare Function OpenClipboard Lib "USER32" (ByVal hWnd As Long) As Long
    Private Declare Function CloseClipboard Lib "USER32" () As Long
    Private Declare Function SetClipboardData Lib "USER32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
    Private Declare Function EmptyClipboard Lib "USER32" () As Long
    Private Const CF_BITMAP = 2

    Public Function CopyEntirePicture(ByRef objFrom As Object) As Boolean
    Dim lhDC As Long
    Dim lhBMP As Long
    Dim lhBMPOld As Long
    Dim lWidthPixels As Long
    Dim lHeightPixels As Long
    ' Create a DC compatible with the object we're copying from:
    lhDC = CreateCompatibleDC(objFrom.hDC)
    If (lhDC <> 0) Then
    ' Create a bitmap compatible with the object we're copying from:
    lWidthPixels = objFrom.ScaleX(objFrom.ScaleWidth, objFrom.ScaleMode, vbPixels)
    lHeightPixels = objFrom.ScaleY(objFrom.ScaleHeight, objFrom.ScaleMode, vbPixels)
    lhBMP = CreateCompatibleBitmap(objFrom.hDC, lWidthPixels, lHeightPixels)
    If (lhBMP <> 0) Then
    ' Select the bitmap into the DC we have created, and store the old bitmap that was there:
    lhBMPOld = SelectObject(lhDC, lhBMP)
    ' Copy the contents of objFrom to the bitmap:
    BitBlt lhDC, 0, 0, lWidthPixels, lHeightPixels, objFrom.hDC, 0, 0, SRCCOPY
    ' Remove the bitmap from the DC:
    SelectObject lhDC, lhBMPOld
    ' Now set the clipboard to the bitmap:
    OpenClipboard 0
    EmptyClipboard
    SetClipboardData CF_BITMAP, lhBMP
    CloseClipboard
    ' We don't delete the Bitmap here - it is now owned
    ' by the clipboard and Windows will delete it for us
    ' when the clipboard changes or the program exits.
    End If
    ' Clear up the device context we created:
    DeleteObject lhDC
    End If
    End Function

    Private Sub Command1_Click()
    CopyEntirePicture Picture1
    End Sub

    Private Sub Form_Load()
    Dim i As Long
    ' Draw something in the Picture box:
    With Picture1.Font
    .Name = "Arial"
    .Bold = True
    .Size = 24
    End With
    For i = 1 To 20
    Picture1.ForeColor = QBColor(i Mod 15)
    Picture1.Print "vbAccelerator"
    Next i
    End Sub

    наверх


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

    BalloonMessage for MS Agent

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

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

    наверх


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

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

    Вопросы:


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

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

       Не подскажите,как из VB6 запустить программу(игру). Например у меня есть форма с кнопкой OK, я нажимаю и должна запуститься игрушка. Как прописать директорию, точнее как установить связь.


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

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

       Скажите, как можно из моей проги отослать письмо на мыло так, чтобы в обход всяких Outlook Express. Данные для письма брать из файла. И ещё эта прога не должна надоедать всякими глупыми запросами. Подскажите что делать. Можно кусочек кода (VB6).


    Автор вопроса: Кирко Владимир

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

       Подскажите как программно определить время проигрывания MIDI-файла?


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

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

       Скажите, как с помощью VB6 можно сделать программу, осуществляющую связь через TCP/IP с помощью интернета.
    Нужно чтобы моя прога слала текстовое сообщение на удаленный компьютер, а тот компьютер должен принять это сообщение и записать в переменную. Если нетрудно привидите кусочки кода клиента и сервера.


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

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

       Скажите, как сделать, чтобы моя прога определила мой IP когда я в сети. Это значение нужно присвоить какой либо переменной. Если нетрудно, приведите пример кода.


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

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

       Как с помощью VB_6 взять из реестра записи из нужного мне раздела. Можно кусок кода.


    Автор вопроса: Laguna Ukraine

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

       Как получить размер конкретной веб-страницы (по URL) не загружая эту страницу на компьютер? Буду благодарен, если приведете пример.


    Автор вопроса: KAS (c)

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

       Кто-нибудь знает как Windows XP отлавливает нажатие кнопки отключения компьютера?


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

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

       Как можно ускорить открытие файла, если файл имеет произвольный доступ (Random)и содержит более ста тысяч записей?


    Автор вопроса: Игорь

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

       Процесс загруяки программы требует некоторого времени, в течение которого инициализируются базы данных выполняются некоторые базовые расчеты (SQL-яапросы) и т.д. Наличие заставки несколько улучшает ситуацию, но пользователь все равно может усомниться, не зависла ли программа. Как сделать "Индикатор" загрузки, привязав его к времени показа стартовой заставки?


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

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

       Как сохранить рисунок из picture Box на диск в формате .jpg?
    Стандартный SavePicture не подходит!


    Автор вопроса: Данила

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

       Как в FlexGrid разукрашивать ячейки (одна красной, другая синей, строка снизу зелёной и т.д.). Если в нём нельзя, то где можно и как это пользовать?


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

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

       1.Кто знает как на Visual Basic Script в документе HTML запрограммить чтение данных из файла, лежащего рядом (любые варианты).

    2.Подскажите как передать хотябы переменную. Неплохо если поделитесь простыми примерами с Winsock'om на примере клиент-сервер... или дайте ссылки на общения, статьи, примеры...


    Автор вопроса: Евгений

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

       Как сохранить в таблице Access OLE-объект?


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

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

       Скажите как написать почтовую программу чтобы она умела только отсылать письма. Работа по протоколу POP3 и SMTP. Прошу, приведите код или подскажите где его достать.


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

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

       Как считать значения ячеек в конкретном столбце DataGrid?


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

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

       Кто-нить подскажет как работать с .dbf файлами?

    1.Создание
    2. Добавление записей
    3. Чтение записей из конкретных ячеек таблицы
    4. Обращение к таблице при помощи Recordset или ADO Data Control


    Автор вопроса: Сергей О.

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

       Подскажите как в файлах последовательного доступа или при работе с CommonDialog сохранять файл без появления диалогового окна (как в Word кнопка дискета)


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

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

       Подскажите как писать и использовать DLL на VB.


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

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

       Как средствами Vb можно добавить, изменить, удалить данные в таблице FoxPro


    Автор вопроса: Anatoliy Zhukov

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

       Нужна любая информация по MSMQ. Любый линки. Всё что можно найти в интернете: практически ничего. Милкасофтовский сайт содержит тоже не много, поэтому прошу не умничать и не посылать туда. :)


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

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

       Как в VB.NET выявать апи-функцию SetMenuItemBitmaps? В vb6 выяыв работает, но в net не могу органияовать корректный выяов.




    Ответы:


    Вопрос:

       Существует ли хороший ActiveX для отображения такой штуки: что-то среднее между гридом и диаграммой,
    По вертикали идут позиции, а по горизонтали даты.
    Надо отображать горизонтальные линии соответствующие периодам дат. например:

              1.03 - 1.04 - 1.05 - 1.06
    AAA Х=============Х
    BBB Х================...
    CCC ..=====================Х

    Данные будут браться из БД.

    Ответ:

    Автор ответа: Andrew Stephanoff

    Есть, это VSFlexGrid Control. У меня есть архив (3,5 МБт), а где в инете - не знаю. Если надо -- пиши.


    Вопрос:

       Существует какой-либо контрол для отображение полей БД в виде таблицы, и как им пользовааться. А то использовать несколько ListBox-ов кажется перегибом.

    Ответ:

    Автор ответа: Андрей

    для этого есть конторол Microsoft Flex Grid. В нем гораздо удобней это делать. описание есть на vb.net а сам контрол в стандартной винде.



    Ответ:

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

    Есть такая штука DataGrid называется
    Почти как несколько listbox-ов


    Вопрос:

       В Exel есть форма. 1-я строка(1) и столбец(А) с такими данными: день.месяц.год фамилия имя часы:минуты (это все в одной ячейке А1). Можно ли каким-то обраяом выделить только часы и минуты, скопировав часы в ячейку В1, минуты в С1? Данные каждый день вносятся в первый столбец до 200 строки(А200), накапливаются(1-й день в А1, 2-й в А2 и т.д). Можно решить этот вопрос средствами basic или макросами?

    Ответ:

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

    В ячейке А1 находится занчение: 25.02.2003 Иванов Иван Иванович 09:30
    В ячейке В1 введи формулу: =WTime(A1,1)
    В ячейке C1 введи формулу: =WTime(A1,2)
    При этом напиши функцию на VB:

    Function WTime(s As String, k As Integer)
       If k = 1 Then ' часы
          WTime = Mid(s, Len(s) - 4, 2)
       Else
          WTime = Right(s, 2)
       End If
    End Function


    Вопрос:

       Есть ещё вопрос: как быстро вывести таблицу из базы на экран. Я использую MSFlexGrid. Проблема в том, что 36000 строк появляются примерно через 10 минут. Код такой:

    Set rs = db.OpenRecordset("звонки")
    rs.MoveFirst
    Do Until rs.EOF = True
    MSFlexGrid1.AddItem rs("ID_звонка")
    MSFlexGrid1.Row = MSFlexGrid1.Rows - 1
    MSFlexGrid1.Col = 1
    MSFlexGrid1.Clip = rs("тип_звонка")
    MSFlexGrid1.Col = 2
    MSFlexGrid1.Clip = rs("дата")
    MSFlexGrid1.Col = 3
    MSFlexGrid1.Clip = rs("время")
    MSFlexGrid1.Col = 4
    MSFlexGrid1.Clip = rs("код")
    MSFlexGrid1.Col = 5
    MSFlexGrid1.Clip = rs("номер")
    MSFlexGrid1.Col = 6
    MSFlexGrid1.Clip = rs("направление")
    MSFlexGrid1.Col = 7
    MSFlexGrid1.Clip = rs("длительность")
    MSFlexGrid1.Col = 8
    MSFlexGrid1.Clip = rs("стоимость")
    MSFlexGrid1.Col = 9
    MSFlexGrid1.Clip = rs("валюта")
    rs.MoveNext
    Loop
    MSFlexGrid1.Visible = True
    MSFlexGrid1.Enabled = True

    Есть варианты? Нужно учесть, что данные в базе меняются и выводимую таблицу нужно будет обновлять.

    Ответ:

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

    Это наверно не самый лучший способ, но ускоряет процесс не меньше чем в два раза: перед заполнением данных я скрываю решетку (MSFlexGrid1.visible=false) а после того, как она заполнена всем необходимым снова ее показываю



    Ответ:

    Автор ответа: Andrew Stephanoff

    Используй лучше Microsoft DataGrid Control и Microsoft DataGrid Control

    установка соединения

    Option Explicit

    Dim cnn As ADODB.Connection

    Private Sub Form_Load()
         cnn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & strPathToDatabase
    End Sub

    чтение данных из рекордсета (используется adodc, но можно использовать и переменную типа Recordset)

    Private Sub SetTable()
       Adodc1.ConnectionString = cnn.ConnectionString
       Adodc1.RecordSource = "SELECT field1, field2 FROM table1 WHERE field0='" &
    strParametr & "';"
       Adodc1.Refresh
       Set DataGrid1.DataSource = Adodc1
       DataGrid1.Refresh
    End Sub

    при изменении данных в таблице просто вызываешь снова эту процедуру, либо, если данные менялись у тебя в программе в объекте Recordset, заново указываешь источник строк и обновляешь:

       Set DataGrid1.DataSource = Adodc1
       DataGrid1.Refresh

         Это тоже не самый быстрый вариант: на Celeron-800 под Win200 соединение с таблицей, содержащей 32 тыс. строк устанавливается секунд где-то за 10, но зато потом работает довольно шустро.
         У меня есть другой контрол - VideoSoft VSFlexGrid Control. В нем реализовано очень много дополнительных функций, которых нет ни в MSFlexGrid, ни в MSDataGrid. Но насчет быстродействия на больших таблицах я его не проверял. Если хочешь попробовать (а он того стоит) могу намылить (архив весит 3,5МБт).



    Ответ:

    Автор ответа: Дмитрий Державец

    Попробуйте заполнить так:

    Sub fgRefresh()
    Dim row As Double
    fg.Clear
    With fg
    'Задаем колонки и шапку
         .Cols = 4
         .FixedCols = 2
         .Rows = 2
         .FixedRows = 1
         .TextMatrix(0, 2) = "Фотография"
         .ColWidth(0) = 0
         .ColWidth(1) = 300
         .ColWidth(2) = .Width - 400
         .ColAlignment(2) = 1
         .ColWidth(3) = 0

         qry = "select * from imgs where type = " & cmb.ItemData(cmb.ListIndex) & " and id > 0"
         If Not DM_OpenRecordSet(rst, qry) Then Exit Sub
         If rst.EOF Then Exit Sub
         .Rows = rst.RecordCount + 1
         r = 0
    'и вот пощло заполнение - должно быть намного быстрее
         While Not rst.EOF
         r = r + 1
         .TextMatrix(r, 0) = rst.Fields(0).Value
         .TextMatrix(r, 2) = rst.Fields(2).Value
         .TextMatrix(r, 3) = rst.Fields(3).Value
         If rst!Id = NewId Then
         row = r
         End If
         rst.MoveNext
         Wend
    End With
    End Sub



    Ответ:

    Автор ответа: Рафаиль

    Сразу никто не выводит такой массив. даже Jet 4.0 ;^)

    Действуй так -> сначала выводи столько записей сколько помещается на экране, то есть 24 первые строки (например) (супербыстро!)
    Потом отлавливай, при нажатиях клавиши вниз рассчитывай и выводи следующие 24 записи * счетчик количества нажатий также надо рассчитывать и переход вверх, можно отлавливать мышь. Идея в целом такова, отбирать не более Х строк, помещающихся на экране, все остальные все равно на экране не видны...


    Вопрос:

       Вот такая тупая ситуация... На форме есть filelistbox, в нём отображаются файлы, находящиеся в какой либо папке. Так вот после удаления файла никак не могу сделать чтобы сабж обновил список. Делал после удаления вот так:

    fileListBox.path = SomeCatalog

    где SomeCatalog - папка, содержащая данные файлы. Раньше делал подобное, а сейчас подзабыл как...

    Ответ:

    Автор ответа: Артем Кривокрисенко

    Попробуй
    filelistbox.refresh


    Вопрос:

       Подскажите пожалуйста, как преобразовать фаил. То есть открыть *bmp и сохранить как *jpg ???

    Ответ:

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

    По этому поводу был контрол на www.vbrussian.com



    Ответ:

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

    Есть такая бесплатная библиотека GflSDK на сайте www.xnview.com. Там и примеры её применения.




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

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

    наверх


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

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