Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Русский_Проект: Изучение Visual Basic


Информационный Канал Subscribe.Ru Новый модный поиск - www.lycos.ru

Русский_Проект: Рассылка Разбор прошлого задания
Задачки
Функции Windows API

Разбор прошлых заданий

Надежда Жигальская (nadya@...) обратила внимание, что решение задачи в позапрошлом задании выполняет лишние операции. Напомним условие. Определить, сколько существует вариантов дать сдачу 27 рублей монетами в 1, 2 и 5 рублей так, чтобы общее количество монет было равно 10
В самом деле, если общее количестов монет равно 10, то строчку 4 можно заменить на For k = 0 To 10
1 ' Пусть i - 5 руб. j - 2 руб. k - 1 руб
2 For i = 0 To 5
3 For j = 0 To 10
4  For k = 0 To 25
5 a = i * 5 + j * 2 + k * 1
6 b = i + j + k
7 If a = 27 And b = 10 Then Debug.Print i, j, k '
8 Next k, j, i
Кстати, умение отбрасывать лишние операции является очень важным фактором при решении подобных задач. В реальности приходится пользоваться гораздо более сложными вычислениями. И при неэффективном алгоритме компьютер просто зависнет, либо придется ждать очень много времени для выполнения задачи. Большое спасибо Надежде!

Теперь разберем задачу на факториал из прошлой рассылки
И снова Надежда Жигальская в числе первых прислала свое решение

Dim N, fact As Double
Dim i As Integer
N = Text1.Text
fact = 1
For i = 1 To N
  fact = fact * i
Next i
Print fact
Другое решение, присланное Socr@t (socrat86@...), выполнено в виде рекурсивной функции
Private Function fact(zn As Byte) As Double
    If zn = 0 Then fact = 1: Exit Function
    fact = fact(zn - 1) * zn
End Function

Задачки

Рубрика для любителей решать задачки.
Продолжаем изучать комбинаторику. На сайте выложена первая часть статьи. (http://rusproject.narod.ru/article/combinatorika.htm")
Немного изменим задачу. Мы знаем как вычислять количество перестановок. Но иногда нужно получить эти перестановки. Например, в разных журналах печатаются кроссворды, где выделены некоторые клеточки. Из букв, которые вписаны в эти клеточки нужно составить ключевое слово. Предположим, даны 5 букв: a, b, c, i, s. Составьте программу, позволяющую получить все возможные варианты. Ваши решения принимаются только с комментариями!
Решения задачи можете присылать по адресам vbasic@rambler.ru или wwwind@aport.ru

Функции API: Сообщения

Сообщение TVM_SETBKCOLOR

Const TVM_SETBKCOLOR = 4381&

Сообщение TVM_SETBKCOLOR устанавливает цвет фона в TreeView

Возвращаемое значение
Сообщение TVM_SETBKCOLOR возвращает предыдущий цвет элемента управления. Если возвращается -1, то элемент управления использует системный цвет

Пример

' Установим для фона TreeView синий цвет
' Расположите на форме элемент TreeView
' (Project-Components-Microsoft Windows Common Controls 6.0)

Private Sub Form_Load()

Dim nodX As Node

Set nodX = TreeView1.Nodes.Add(, , "R", "Root")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C1", "Child 1")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C2", "Child 2")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C3", "Child 3")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C4", "Child 4")
nodX.EnsureVisible
End Sub

Private Sub Command1_Click()

Dim lngStyle As Long

' Меняем цвет фона
Call SendMessage(TreeView1.hWnd, _
    TVM_SETBKCOLOR, _
    0, _
    ByVal RGB(0, 0, 255))

' Меняем стиль окна, чтобы изменения вступили в силу
lngstyle="GetWindowLong(TreeView1.hWnd," GWL_STYLE)
Call SetWindowLong(TreeView1.hWnd, _
    GWL_STYLE, _
    lngStyle - TVS_HASLINES)
Call SetWindowLong(TreeView1.hWnd, GWL_STYLE, lngStyle)
End Sub
Полный текст с описанием этой функции вы найдете в справочнике по функциям Windows API

Не стесняйтесь, высылайте ваши предложения по адресу vbasic@rambler.ru
Посетите сайт Русский_Проект, где вы найдете другую интересную информацию
Давайте делать рассылку вместе! Удачи!



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное