Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Пример проекта с двумя формами. Проект Переводчик.





       
   
 

 

Создайте новый проект. На форму поместите элемент класса ListBox (элемент со списком), командную кнопку и надпись (см. левый рисунок). Добавьте в проект еще одну форму с помощью команды меню Проект/Добавить форму. На второй форме разместите текстовое поле, надпись и две командные кнопки. Можете разместить на форме для красоты, какую–нибудь картинку, как на рисунке справа. Свяжите с процедурами обработки событий элементов форм нижеследующий код. С помощью окна макета разместите обе формы на экране так, как нужно вам. Лучше всего, чтобы они были одна под другой. Сохраните проект в своей папке под именем Переводчик. Изучите код программы. Запустите программу и посмотрите, как она работает.

Код в Форме Словарь

 

1. Option Explicit

2. Dim Значение As String

3. Private Sub Command1_Click() 'закрывает первую форму

4. End

5. End Sub

 

6. Private Sub Form_Load()

7. List1.AddItem ("Cat"), 0

8. List1.AddItem ("Cut"), 1

9. List1.AddItem ("Apple"), 2

10. List1.AddItem ("Door"), 3

11. List1.AddItem ("Map"), 4

12. List1.AddItem ("Window"), 5

13. List1.AddItem ("Cap"), 6

14. List1.AddItem ("Tee"), 7

15. End Sub

 

16. Private Sub List1_DblClick()

17. Select Case List1.ListIndex

18. Case 0

19. Значение = "Кот"

20. Case 1

21. Значение = "Вырезать"

22. Case 2

23. Значение = "Яблоко"

24. Case 3

25. Значение = "Дверь"

26. Case 4

27. Значение = "Карта"

28. Case 5

29. Значение = "Окно"

30. Case 6

31. Значение = "Чашка"

32. Case 7

33. Значение = "Чай"

34. End Select

 

35. Load Form2

36. Form2.Label1 = List1.Text

37. Form2.Text1 = Значение

38. Form2.Show

39. End Sub

 

Код в форме Перевод

40. Option Explicit

41. Dim Печать As String

42. Private Sub Command1_Click() 'скрывает и закрывает вторую форму

43. Form2.Hide

44. Unload Form2

45. End Sub

46. Private Sub Command2_Click()

47. Cls

48. Печать = MsgBox("Напечатать исходное слово и его перевод?", vbOKCancel, "Запрос на печать")

49. If Печать = 1 Then

50. Printer.Print ""

51. Printer.FontName = "TimesNewRomanCyr"

52. Printer.FontSize = 18

53. Printer.FontBold = True

54. Printer.Print Label1.Caption

55. Printer.FontBold = False

56. Printer.Print Text1.Text

57. Printer.EndDoc

58. End If

59. Печать = MsgBox("Напечатать окно с переводом?", vbOKCancel, "Запрос на печать")

60. If Печать = vbOK Then

61. Form2.PrintForm

62. End If

63. Print Form1.List1.List(Form1.List1.ListIndex)

64. End Sub

 

При загрузке формы в строках 7-14 формируется список. К объекту List методом AddItem (добавить элемент) добавляются элементы, и каждому из них присваивается индекс, чтобы его можно было идентифицировать в списке. В строке 2 описана строковая переменная Значение. В строках 16-39 (в процедуре запускаемой по двойному щелчку по элементу списка) с помощью конструкции Select.. Case…EndSelect анализируется индекс элемента списка и его перевод на русский язык присваивается переменной Значение. В строках 35-38 загружается вторая форма (ее имя Form2, а надпись в заголовке Перевод), ее элементу надписи присваивается значение элемента списка первой формы, т.е. исходное иностранное слово (строка 36), а в текстовое поле заносится переменная Значение (строка 37). После этого вызывается метод Show (показать) для второй формы. Таким образом, во второй форме оказывается исходное слово и его перевод. Далее разумно попытаться напечатать исходное слово и перевод или вторую форму полностью. За эти операции отвечает кнопка Command2 с надписью "Печать" во второй форме. В строке 41 кода для второй формы описана строковая переменная Печать, которая будет принимать значения, возвращаемые функцией MsgBox. Она описана как строковая, а функция возвратит значение типа Integer (целое), но благодаря "интеллектуальности" VB преобразование типов будет выполнено правильно и незаметно для нас. Вообще говоря, такие эксперименты лучше не ставить. Если вы точно не знаете, значение какого типа вернет выражение, то не описывайте тип переменной стоящей слева от оператора присвоения и она получит по умолчанию универсальный тип Variant. Если в окне сообщения, выведенного функцией MsgBox, пользователь нажмет кнопку ОК, то функция вернет переменной Печать константу с именем VbOK, равную единице. Поэтому можно выполнить проверку двояко: на 1 или на имя константы (строки 49 и 60). В строке 48 запрашивается разрешение на вывод исходного слова и его перевода на принтер. В случае ответа ОК (т.е. 1), выполняется код в строках 49 – 58, если же в окне сообщения пользователь нажал кнопку Cancel (отмена), то функция MsgBox вернет константу VbCancel и эти строки не будут выполняться.

В строке 50 печатается пустая строка с помощью метода Print объекта Printer. В строках 51 – 53 устанавливаются параметры шрифта для печати, как свойства объекта Printer (имя шрифта, размер, жирность). В строке 54 печатается значение свойства Caption объекта Label1 второй формы. Как мы помним, – это исходное иностранное слово. Далее, в строке 55 отменяется жирность и в строке 56 печатается значение свойства Text объекта Text1 второй формы (т.е. перевод). В строке 57 вызывается метод EndDoc, который заканчивает сеанс работы с объектом Printer. Хочу еще раз отметить, что мы работаем не с физическим принтером, стоящим на вашем столе, а с объектом Printer, определенном в VB. Этот объект умеет понимать нас, и сам разбирается с физическим печатающим устройством. В этом огромное преимущество Windows, а в старых ОС программисту приходилось самому организовывать практически весь процесс печати.

Далее, в строке 59 выдается запрос на печать второй формы целиком. Если пользователь отвечает ОК, вызывается метод PrintForm для формы Form2 (строка 61) и форма печатается целиком, так как мы ее видим на экране. Строка 63 введена в программу в учебных целях и выводит исходное слово в левом верхнем углу второй формы. Проследим интересные моменты процесса отладки программы на примере этой строки.

Закончите выполнение программы и перейдите в режим конструктора. Щелкните правой кнопкой мыши на кнопке второй формы с надписью "Печать" и выберите команду Показать код. Если этой формы нет на экране, дважды щелкните по ее имени в окне объектов вашего проекта, и она появится. В серой вертикальной полосе напротив строки 63, щелкните мышью и там появится жирная коричневая точка и вся строка станет коричневой. Это значит, что мы установили в программе точку останова при выполнении программы. Как только программа дойдет до этого места, VB откроет окно кода в режиме отладки и подсветит строку желтым цветом. Запустите программу. Дважды щелкните на слове "Door" в списке слов первой формы. Откроется окно второй формы с переводом. Нажмите в ней кнопку с надписью "Печать" два раза и оба раза откажитесь от предложения напечатать слово или окно. После этого VB откроет окно отладки. Наведите указатель мыши на слово Form1, стоящее до скобок в этой строке. Вы увидите что-то похожее на Form1.List1.List(Form1.List1.ListIndex) и = "Door". Это означает, что метод Print собирается вывести на форму слово из списка первой формы. Наведите мышь на любое слово в скобках. Вы увидите что-то вроде Form1.List1.ListIndex = 3. Это означает, что индекс этого слова будет равен 3. Так как это слово "Door", то результат всего выражения также будет "Door". Щелкните по коричневой точке, и она пропадет. Точка останова удалена, и программа больше не будет на ней останавливаться. Вот таким образом (он не единственный!) можно контролировать ход выполнения программы и даже узнавать значения, которые принимают свойства или переменные в процессе выполнения программы. Другой, из возможных способов еще проще – вставляйте в сомнительных местах функцию MsgBox, чтобы она выводила нужные вам данные, как это было показано в различных примерах.

И последнее, что хотелось бы отметить в этом примере. Везде в тексте программы (кроме куска кода, реализующего печать) сделаны явные обращения к формам по их имени (Form1 или Form2), и нигде не использовалось краткое обращение Me. Этого стиля надо придерживаться, так как порой трудно бывает сказать, какая из форм является активной в данный момент и, следовательно, к какой форме будет относиться обращение Me (т.е. к какому активному объекту). Тоже можно сказать и об элементах интерфейса. Например, и первая, и вторая форма содержат элементы с именем Label1 и Text1. Если мы просто запишем имя элемента, то будет не ясно, какую же форму мы имеем ввиду? Поэтому в подобных случаях необходимо использовать полную нотацию при обращении к свойствам объектов. Если вы так уж желаете использовать сокращения, то надо, по крайней мере, явным образом передать фокус нужному элементу или форме с помощью метода SetFocus. Например, Form1. SetFocus.

В этом примере мы рассмотрели работу с несколькими формами, организацию важного для практики процесса печати, функцию MsgBox возвращающую значение, ознакомились с методом Hide для формы.

 

 

Пример 10

Date: 2016-07-25; view: 230; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию