Анимация
JavaScript
|
Главная Библионтека что сокращает время разработки программы и облегчает обучение пользователей. Панель инструментов имеет несколько специфических свойств. Object.Movable [ = lExpression] Определяет, может ли панель инструментов перемещаться пользователем во время выполнения программы. Если параметр lExpression принимает значение .T. (по умолчанию), то панель инструментов может перемещаться. Если .F., то объект не может быть перемещен пользователем. Object.Sizable = lExpression Определяет возможность изменения размеров панели инструментов. По умолчанию параметр lExpression равен .T., и размеры панели инструментов могут быть изменены пользователем. Если параметр lExpression будет равен .F., то сделать этого будет нельзя. ToolBar.Docked [= lExpression] Возвращает логическое значение, с помощью которого можно определить, встроена панель инструментов в рамку окна Visual FoxPro (.T.) или нет (.F.). Если используется параметр lExpression, то свойство возвращает результат сравнения возвращаемого значения и параметра lExpression. Если вы хотите поэкспериментировать со свойствами панели инструментов, задавая команды из окна Command, то вам поможет следующий образец, который обеспечивает доступ к панели инструментов, добавленной к форме при ее проектировании. ? SCREEN.ActiveForm.Parent.Office toolbar1.Docked При добавлении панели инструментов к форме создается набор форм, поэтому для ссылки на него, как на объект более высокого уровня, используется указатель Parent. nPosition = ToolBar.DockPosition Определяет положение панели инструментов в окне Visual FoxPro. Параметр nPosition может принимать следующие значения: -1 - панель инструментов не может быть встроена; 0 - встроена в верхнюю рамку; 1 - в левую; 2 - в правую; 3 - в нижнюю. На панели инструментов можно размещать специальный объект - Separator, который помещает пробел между элементами управления. Это позволяет визуально создавать на панели инструментов группы элементов управления, так как по умолчанию размещаемые на панели инструментов элементы управления следуют вплотную друг за другом. Универсальными объектами в Visual FoxPro для создания компонентных элементов управления, включающих несколько отдельных объектов, являются объекты Control и Container. Об отличиях между этими объектами мы уже рассказывали. Невизуальные объекты Объект Custom создает единственный в Visual FoxPro невизуальный объект, исключая уже упоминавшиеся объекты Container и Control, которые выполняют специфические функции объединения других элементов управления. Этот объект удобно использовать для создания и последующего запуска стандартных, часто используемых процедур, при создании которых не требуется визуализация объекта. В качестве примера использования объекта Custom рассмотрим следующий пример, в котором мы создадим пользовательский класс, зашифровывающий пароль. Пароль может храниться в таблице с данными о доступе пользователей к элементам системы в зашифрованном виде. После ввода пароля пользователем хранимый пароль расшифровывается и сравнивается с введенным. В приводимой программе создается форма, в которой в поле, расположенное в левом верхнем углу, вводится пароль. Вводимые символы скрыты, и их число отображается звездочками. Нажмите кнопку "Зашифровать", и вы увидите в нижних полях формы слева зашифрованное значение, а справа введенное. Успехов в шифровании! *** Пример использования объекта Custom для шифрования пароля frmPwdForm = CREATEOBJECT("PwdForm") && Создаем форму. frmPwdForm.Visible = .T. READ EVENTS * Описываем класс формы DEFINE CLASS PwdForm AS FORM Caption = "Шифрование пароля" * Добавляем объект в форму для формирования пароля ADD OBJECT CustPassword AS Pass Word Height = 130 Width = 350 Autocenter = .T. * Добавляем текстовое поле для ввода пароля ADD OBJECT txtText1 AS TextBox WITH ; Height = 25, ; Left = 25, ; Top = 20, ; Width = 125, ; PasswordChar = "*", ; Name = "txtText1" * Добавляем текстовое поле для вывода * зашифрованного пароля ADD OBJECT txtText2 AS TextBox WITH ; Height = 25, ; Left = 25, ; Top = 72, ; Width = 125, ; Readonly = .T., ; Name = "txtText2" * Добавляем в форму кнопку для вызова процедуры * шифрования, * которая содержится в cmdCommand1.Click ADD OBJECT cmdCommand1 AS CommandButton WITH ; Top = 20, ; Left = 200, ; Height = 29, ; Width = 125, ; Caption = "Зашифровать", ; Name = "cmdCommand1" * Добавляем в форму текстовое поле для вывода введенного * пароля ADD OBJECT txtText3 AS TextBox WITH ; ControlSource = ; "THISFORM.custPassword.cUnencrypted", ; Height = 25, ; Left = 200, ; ReadOnly = .T., ; Top = 72, ; Width = 125, ; Name = "Text3" * Процедура, выполняемая после набора пароля PROCEDURE txtText1.LostFocus THISFORM.custPassword.Encrypt It(TRIM(THIS.Value)) THISFORM.txtText2.Value =; THISFORM.custPassword.cEncrypted THISFORM.cmdCommand1.SetFocus ENDPROC * Процедура, выполняемая при нажатии на кнопку * "Зашифровать" PROCEDURE cmdCommand1.Click THISFORM.custPassword.Decrypt It(THISFORM.custPassword.; cEncrypted) THISFORM.Refresh THISFORM.txtText1.SetFocus ENDPROC * Процедура, выполняемая при выходе из формы PROCEDURE DESTROY CLEAR EVENTS ENDPROC ENDDEFINE * Описываем класс объекта Custom DEFINE CLASS Pass Word AS Custom Height = 17 Width = 100 Name = "Password" * Добавляем для создаваемого объекта свои свойства cUnencrypted = "" cEncrypted = "" * Процедура выполнения шифрования пароля PROCEDURE Encrypt It PARAMETERS cPassword cEncrypted password = " " * Запускаем цикл по количеству введенных в пароле * символов FOR i = 1 TO LEN(cPassword) cLetter = SUBSTR(cPassword, i, 1) cEncrypted password = cEncrypted password + ; CHR((ASC(cLetter)*2)+5) && Заменяем && введенный символ NEXT i THIS.cEncrypted = cEncrypted password ENDPROC * Процедура расшифровки пароля PROCEDURE Decrypt It PARAMETERS cPassword cUnencrypted password = " " FOR i = 1 TO LEN(cPassword) cLetter = SUBSTR(cPassword, i, 1) cUnencrypted password = cUnencrypted password + ; CHR((ASC(cLetter)-5)/2) NEXT i THIS.cUnencrypted = cUnencrypted password ENDPROC ENDDEFINE В Visual Basic вместо одного универсального невизуального объекта используется достаточно большое число специализированных невизуальных объектов. Опишем те, которые наиболее часто используются при построении пользовательского приложения. Объект App определяет или задает такие параметры, как заголовок приложения, путь к исполняемому файлу и его имя, имя файла контекстной справки и т. д. Этот объект имеет только свойства и не имеет ни событий, ни методов. Объект ClassModule содержит свойства, которые управляют поведением класса так же, как программа может описывать свойства и методы класса. В приложении вы можете использовать этот объект как контейнер для программного кода, который описывает свойства и методы созданного вами класса. Объект ClassModule похож по своему поведению на форму, но без визуального интерфейса. Объект Clipboard обеспечивает доступ к системному буферу обмена. Этот объект используется для работы с текстом и графикой, содержащейся в буфере обмена, и с его помощью можно обеспечить пользователю возможность копировать, вырезать и вставлять данные в приложении. Объект Collection - коллекция - представляет собой набор объектов, к которому можно обращаться как к единому целому. Обычно в колекцию помещают группу однотипных объектов (членов коллекции), а затем обращаются к ним по номеру, который объект занимает в коллекции. Но в принципе, в коллекции могут быть объединены и объекты разного типа. Размещение объектов в коллекции позволяет выполнять необходимые действия одновременно над всеми объектами, обращаясь только к одному объекту Collection. Объект создается точно так же, как и другие объекты, например:/p> Dim oCollect1 As New Collection Объекты в коллекцию могут быть добавлены с помощью метода Add и исключены из нее с помощью метода Remove. Объекты OLE 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [ 41 ] 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |