Опубликован: 04.07.2006 | Доступ: свободный | Студентов: 5582 / 686 | Оценка: 4.11 / 3.96 | Длительность: 11:08:00
Лекция 2:

Управление ходом выполнения программ. Примеры типовых алгоритмов

Практическая работа 16. Оператор LIKE - сравнение элементов массивов со строкой, введeнной в диалоговом режиме; элемент управления Timer

Задание: создать в диалоговом режиме 4 массива национальностей, проживающих в 4-х странах (рис. 2.8, в центре вверху), затем вывести в массив ListBox из 4-х элементов (рис. 2.8, слева в центре). Ввести в диалоговом режиме одну из 10 - 16 национальностей (введeнных ранее), для ввода использовать текстовое поле (рис. 2.8, слева). С использованием оператора LIKE найти страны проживания этой национальности. Обеспечить вывод результатов поиска в поля меток (рис. 2.8, 4 поля метки слева внизу). Обеспечить перемещение (использовать элемент управления Timer ) флага страны проживания после нахождения страны проживания.

Последовательность действий:

  1. Создать на форме элементы управления, данные на рис. 2.8; соответствующие идентификаторы приведены в коде, данном ниже:
    • 3 командные кнопки, см. рис. 2.8:
      • Command1 (Caption = Vergleichen (Muster)),
      • Command2 (Caption = Nationalitaet-Massiv),
      • Command3 (Caption = MassivList),
    • 4 массива элементов TextBox: (Text1(0) - Text1(3)), (Text2(0) - Text2(3)), (Text3(0) - Text3(3)), (Text4(0) - Text4(3)) для ввода национальностей, рис. 2.8 вверху в центре,
    • массив ListBox из 4-х элементов для вывода 4-х масивов национальностей, слева в центре,
    • 4 объекта Image, в качестве значений свойства Picture использовать символы флагов 4-х стран (файлы *. ico),
    • 4 поля Label для вывода результатов, см. рис. 2.8: 2-ой столбец слева внизу,
    • несколько меток для надписей, см. рис. 2.5,
    • элемент управления TextBox (Text5) для ввода искомой национальности, рис. 2.5, выше полей Label (используемых для вывода результатов),
  2. ввести код, затем стартовать проект,
  3. в диалоговом режиме ввести национальности (для этого созданы 16 текстовых пoлей), сделать щелчок на кнопке "Nationalitaet-Massiv", затем - на кнопке - "Massiv-List",
  4. ввести в поле Text5 одну из ранее введённых национальностей, далее сделать щелчок на кнопке "Vergleichen (Muster)". После выполнения поиска стартуют процедуры TimerК_Timer (), см. код и рис. 2.8
(General) (Declarations)
Option Compare Text
Dim res As Boolean
Dim muster As String ' описание шаблона для оператора Like 
' zeile - описание вводимой строки для сравнения с шаблоном
' (оператор Like)
Dim zeile As String 
Dim i As Integer, j As Integer
' х1 - х4 - переменные, обеспечивающие старт процедур 
' TimerК_Timer(),
Dim x1 As Variant, x2 As Variant, x3 As Variant, x4 As Variant
Dim deu(4) As String 
' deu(4) - grossb(4) - массивы национальностей, проживающих в 
' соответствующих 4-х странах
Dim oest(4) As String, span(4) As String, grossb(4) As String

' создание массивов национальностей, проживающих в 4-х 
' странах: deu(4) - grossb(4) (кнопка Nationalitaet-Massiv)
Private Sub Command2_Click()
For i = 1 To 4
deu(i) = Text1(i - 1).Text: oest(i) = Text2(i - 1).Text
span(i) = Text3(i - 1).Text: grossb(i) = Text4(i - 1).Text
Next i
End Sub
' вывод в массив элементов ListBox элементов массивов 
' национальностей, см. рис. 5.4: командная кнопка Caption = 
' MassivLIST
Private Sub Command3_Click()
For j = 1 To 4
List1(0).List(j - 1) = deu(j): List1(1).List(j - 1) = oest(j)
List1(2).List(j - 1) = span(j): List1(3).List(j - 1) = grossb(j)
Next j
End Sub

' выполнение поиска - использование оператора Like; старт
' процедур, обеспечивающих перемещение флагов
Private Sub Command1_Click() 
' ввод в диалоговом режиме искомой национальности
zeile = Text5.Text
For i = 1 To 4
' в качестве шаблона используется массив, 
' просматриваемый в цикле
muster = deu(i) 
' переменной типа Boolean присваивается возвращае-
' мое значение
res = zeile Like muster 
' если переменная res есть True, то вывести название 
' страны, где проживает национальность "zeile", вводимая в
' диалоговом режиме; далее определяется код х1: (Asc(x1)),
' что обеспечивает выполнение процедуры Timer1_Timer() (см.
' ниже), иначе - просматривать массив далее
If res Then Label11 = "Deutschland": x1 = Label11: x1 = Asc(x1): GoTo 301
Next i
' если res всегда есть False, то вывести поясняющий текст: 
' " Deutschland - Nein" - "В Германии не проживает"
Label11.Caption = "Deutschland - Nein"

' блоки 301 - 303 работают аналогично вышеописанному

301 For i = 1 To 4
muster = oest(i): res = zeile Like muster
If res Then Label12 = "Oesterreich": x2 = Label12: x2 = Asc(x2): GoTo 302
Next i
Label12.Caption = "Oesterreich - Nein"

302 For i = 1 To 4
muster = span(i): res = zeile Like muster
If res Then Label13 = "Spanien": x3 = Label13: x3 = Asc(x3): GoTo 303
Next i
Label13.Caption = "Spanien - Nein"

303 For i = 1 To 4
muster = grossb(i): res = zeile Like muster
If res Then Label14 = "Grossbritan.": x4 = Label14: x4 = Asc(x4): GoTo 304
Next i
Label14.Caption = "Grossbritanien - Nein"
304 End Sub

' 4 процедуры ниже обеспечивают перемещение флагов стран 
' проживания национальности, вводимой в диалоговом режи-
' ме (cм. процедуру Command1_Click()). Процедуры стартуют 
' после того, как определены переменные х1 - х4, т.е. найдена 
' страна
Private Sub Timer1_Timer()
Image1.Left = Int(80 * Rnd * x1): Image1.Top = Int(90 * Rnd * x1)
End Sub

Private Sub Timer2_Timer()
Image2.Left = Int(80 * Rnd * x2): Image2.Top = Int(90 * Rnd * x2)
End Sub

Private Sub Timer3_Timer()
Image3.Left = Int(80 * Rnd * x3): Image3.Top = Int(90 * Rnd * x3)
End Sub

Private Sub Timer4_Timer()
Image4.Left = Int(80 * Rnd * x4): Image4.Top = Int(90 * Rnd * x4)
End Sub
Оператор LIKE (Где проживает национальость : ?)

Рис. 2.8. Оператор LIKE (Где проживает национальость : ?)
Константин Новков
Константин Новков

Лекция 3: 2

Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox).

Не могу найти меню Разработать (Develop)>Links и т.д.

антонина квасова
антонина квасова