Лекция 3: 2 Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox). Не могу найти меню Разработать (Develop)>Links и т.д. |
Опубликован: 04.07.2006 | Доступ: свободный | Студентов: 5581 / 687 | Оценка: 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 ) флага страны проживания после нахождения страны проживания.
Последовательность действий:
- Создать на форме элементы управления, данные на рис. 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 (используемых для вывода результатов),
- 3 командные кнопки, см. рис. 2.8:
- ввести код, затем стартовать проект,
- в диалоговом режиме ввести национальности (для этого созданы 16 текстовых пoлей), сделать щелчок на кнопке "Nationalitaet-Massiv", затем - на кнопке - "Massiv-List",
- ввести в поле 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