20171

Базовые классы VFP

Лекция

Информатика, кибернетика и программирование

Класс содержит информацию о том как должен выглядеть объект и определяет выполняемые им действия. Объект является экземпляром класса который наследует характеристики класса. При создании объектов приложения вы можете использовать базовые классы Visual FoxProа также создавать новые специальные классы.

Русский

2013-07-25

73 KB

1 чел.

Лекция 3

Базовые классы VFP 

Классы и объекты тесно связаны друг с другом, но тем не менее эти понятия не тождественны. Класс содержит информацию о том, как должен выглядеть объект  и определяет выполняемые им действия. Объект является экземпляром класса, который наследует характеристики класса. При создании объектов приложения вы можете использовать базовые классы Visual FoxPro,а также создавать новые специальные классы.

Большинство используемых классов являются видимыми, некоторые классы используются для объединения объектов и не отражаются в форме. Кроме того, классы объектов могут быть вложенными друг в друга. Класс, который может содержать внутри себя другие объекты, называется контейнером (container class). Вы можете получить доступ ко всем компонентам контейнера, как при создании формы, так и при разработке программы. Примером контейнера является таблица, которая содержит столбцы и надписи к ним.

Каждый базовый класс обладает собственным набором свойств, методов и связанных с ним событий. Минимальный набор свойств, которыми обладают все классы, приведен в таблице 1, а минимальный набор событий в таблице 2.

                                     Таблица 1

Наименование

Описание

Class

Тип класса

BaseClass

Базовый класс, на основе которого создан данный класс

ClassLibrary

Библиотека классов, в которой хранится данный класс

ParentClass

Определенный пользователем класс, на основе которого создан данный класс

                                     Таблица 2

Наименование

Описание

Init

Наступает при создании объекта

Decoy

Наступает при освобождении объекта из памяти

Error

Наступает при возникновении ошибки, связанной с объектом

  1.  Объект LINE - рисует линию, соединяющею левый верхний и правый нижний угол прямоугольника. Чтобы линия шла из правого верхнего угла в левый нижний, выберите свойство Line Slant и измените его значение с «\» на «/». Свойство  BorderStyle - представляет собой вид линии и имеет 7 значений (--, -.-, и т.д.). Только сплошная линия может иметь толщину более чем в один пиксель.
  2.  Объект Label - может занимать одну, или, если свойство WordWrap имеет значение (.Т.), несколько строк

Многие объекты имеют свойство Visible, определяющее их видимость на экране. Если это свойство имеет значение (.F.), то при запуске формы объект виден не будет, хотя на форме он останется. Эта особенность является полезной, если при выполнении формы требуется показать не все объекты, а только нужные в данный момент.

Одним из способов реализации такой формы является создание нескольких перекрывающихся объектов на одном месте, из которых в каждый момент времени виден только один. Например, для ввода адресов клиентов и сотрудников фирмы используется одна и та же форма, и при вводе информации о клиенте должен быть виден текст «Адрес клиента», а для сотрудника - «Адрес сотрудника».

Вы определяете два текстовых объекта с разными текстами и устанавливаете для обоих значение свойства Visible в (.F.)

Создайте флажок с текстом (Сотрудник).

Cвяжите флажок с переменной flag с помощью свойства Control Source. Затем в методе Click флажка пишете следующую процедуру:

Пример 1

If flag = 1

  Thisform. SotrudLabel.Visible = .T.

  Thisform. KLIENTLabel.Visible = .F.

else

Thisform. SotrudLabel.Visible = .F.

Thisform. KLIENTLabel.Visible = .T.

ENDIF

 

По умолчанию VFP присваивает каждому объекту уникальное имя, состоящее из названия класса и порядкового номера.

  1.  Объект  Textbox - в отличие от объекта Label имеет источник данных  - поля таблицы или переменную памяти. Чтобы связать созданное поле с полем таблицы, выберите свойство СоntrolSource. Кроме выше описанного свойства Visible, поля ввода (как и все остальные объекты, имеющие источник данных) имеют свойство Enabled. Когда это свойство имеет значение (.Т.), пользователь может перейти в это поле. Процедура метода When, активизируемая в этом случае, может сделать свои проверки и запретить пользователю вход в поле. Но если свойство Enabled имеет значение (.F.), метод When никогда не будет вызван, а само поле в этом случае м. б. выделено другим цветом (цвета неактивного поля задаются в свойствах Disabled ForeColor и DisabledBackColor). Использование этого свойства вместо Visible позволяет сообщить пользователю о том, что содержимое поля существует, но не может быть выбрано.

Старайтесь определять различные цвета для активного и неактивного объекта. Или же сделайте объект невидимым.

Кроме того, для объектов, имеющих источник данных, можно использовать свойство Read Only. Это означает, что пользователь может просматривать содержимое поля, но не сможет его редактировать.

Свойство Special Effect имеет 2 значения (3D и Plain) для стиля отображения поля : обычный 2-х мерный и «утопленный». Как правило, в форме недостаточно места для длинных поясняющих надписей. Их можно вынести в строку состояния с помощью свойства Status Bar Text. Можно создать краткое пояснение к полю (свойство Tool Tip Text), которое будет появляться ниже курсора мыши. Для отображения пояснений на экране нужно установить свойство Show Tips равным  (.Т.). Для определения значения поля по умолчанию задается свойство Value.

Для размещения поля ввода в экранной форме, а также для большинства других объектов можно использовать построитель. Он позволяет быстро сформировать свойства объекта.

  1.  Объект Edit Box -  поля редактирования - свойства его практически полностью совпадают со свойствами поля ввода. Отличие состоит в использовании свойства Allow Tabs, определяющего может ли пользователь вставлять в редактируемый текст символы табуляции. Если это свойство включено, то для выхода из поля и перемещения на следующий объект  пользователь должен нажимать не Tab, а Ctrl+Tab. В этом случае в форме необходимо разместить соответствующую подсказку.

Объект Command Button - используется для перемещения по таблице, закрытия формы, выхода из приложения. Во всех случаях используется основное событие Click, вызываемое при нажатии на кнопку.

В отличие от многих объектов, кнопки имеют только свой цвет изображения, а цвет фона для них определяется набором цветов Windows и его изменить нельзя. Однако для активных и неактивных кнопок можно использовать разные цвета изображения.

Другой интересной особенностью кнопок является возможность помещать на них растровые изображения с помощью следующих свойств:

Picture - определяет изображение на не нажатой кнопке.

Down Picture - на нажатой

Disabled Picture - на неактивной кнопке.

Каждое из этих свойств определяет свой BMP или DIB - файл, который будет изображен на кнопке. Файл должен быть достаточно маленьким, чтобы полностью поместиться на кнопке. В противном случае лишняя часть файла будет отсечена, поскольку VFP не масштабирует изображения.

  1.  Объект Command Group - используется для объединения в группу связанных по смыслу кнопок. Основным преимуществом применения группы является. возможность написания одного метода обработки для всей группы.

Например, вам нужно создать кнопки, которые создают отчет, направляя его в различные места. Вместо написания процедуры создания отчета для каждой кнопки

имеет смысл объединить кнопки в один объект и написать для него

одну процедуру. В процедуре обработки события группы Clic

K может определить нажатую кнопку, обратившись к свойству Value.

Do case

     Case This. Value = 1

     = messagebox (вывод отчета на экран)

         Case This. Value = 2

= messagebox (вывод отчета в файл)

Case This. Value = 3

= messagebox (вывод отчета на принтер)

ENDCASE

свойство Value содержит номер нажатой кнопки. Кнопки нумеруются автоматически по мере их добавления к группе управления. Кроме этого, необходимо присвоить свойству Button Count общее число кнопок в группе.

Заставить одну из кнопок работать по умолчанию можно, установив ее свойство Default в (.Т.). В форме может быть только одна кнопка по умолчанию. Создать отдельные кнопки по умолчанию в 2-х различных группах нельзя.

  1.  Объект Option Group - основное свойство переключателя - число кнопок Button Count. Его необходимо определить перед началом определения отдельных кнопок можно дополнительно обозначить кнопку по умолчанию, в противном случае по умолчанию будет написана первая из кнопок. Номер кнопки по умолчанию определяется свойством переключателя Value. Изменение этого свойства автоматически изменяет и свойство Value каждой из кнопок. Нажатая кнопка имеет значение Value = 1, отжатая - 0.

Кнопка переключателя может содержать графическое изображение. Для этого нужно изменить свойство Style, присвоив ему значение «graphical».

При этом кнопка переключателя может стать внешне неотличимой от командной кнопки. Основная разница между ними в том, что одна из кнопок переключателя всегда выбрана и изображена в нажатом состоянии. И переключатель и группа кнопок могут быть обрамлены границей.

  1.  Объект Check Box- флажок. Флажок может быть произвольным. Используя свойство Style можно изображать флажок в виде графической кнопки. Такой флажок может содержать как картинку, так и надпись. Отпущенная кнопка соответствует значению 0 (или (.F.)), а нажатая -1 (или (.Т.)). Тип возвращаемого значения (числовой или логический) определяется типом связанной с флажком переменной.

 Значение флажка может быть = 2, что соответствует логическому значению неопределенности (.NULL.). Бывает нужно инициализировать флажки этим значением, чтобы определить, сделал ли пользователь выбор или вообще пропустил флажок. На экране флажок с неопределенным значением выглядит как затемненное поле.

9)Объект Spinners - счетчик, имеющий числовое значение, помещенное в свойство Control Source. Шаг задается в свойстве Increment. Допустимый диапазон значений определяется с помощью свойств Keyboard High Value, Keyboard low Value, Spinner Low Value, Spinner High Value. Как правило, соответствующие свойства для клавиатуры и счетчика имеют одинаковые значения, т.е. пользователь не может ввести число вне заданного диапазона ни вручную, ни с помощью стрелок счетчика.

Если вы присвоите свойству Increment дробное значение, например 0,5, но не замените значения свойства Input Mask (которое представляет собой маску типа «###», означающую 3-х символьное целое число), то счетчик работать не будет. В действительности его значение увеличивается, но затем округляется, чтобы совпадать с маской, т.е. 0,5 округляется до 1, увеличения не происходит.

Значение Input Mask должно также соответствовать граничным значениям счетчика, иначе лишние цифры будут усечены, причем усечение происходит не только на экране. Например, если значение Spinner High Value = 100, но Input Mask определено как «##», счетчик никогда не достигнет значения 100. При превышении числа 99 произойдет переполнение маски. На экран будет выдано «**», а затем счетчик опять станет увеличиваться с 1 до 99.

10)Объект Image- графическое изображение. Свойство Stretch позволяет изменить способ отображения картинки; его значения:

Clip - усeчение картинки для уменьшения ее размера.

Stretch - рисунок растянут с сохранением пропорций.

Zoom - вписывание картинки в размеры объекта без сохранения пропорциональности.

11) Объект ListBox ( список). Для создания списка можно использовать построитель.

Источником данных для списка могут служить: массив, меню, список файлов, значение поля таблицы, структура таблицы. Списки имеют дополнительные свойства, которые отсутствовали у ранее рассмотренных объектов:

  1.  Column Count -определяет заданное число столбцов в объекте
  2.  FirstElement- задает 1 элемент массива, который будет отображаться в списке
  3.  Number of Element- Определяет количество элементов массива, отображаемых в списке

RowSource - указывает источник значений списка ( а СontrolSource- устанавливает источник данных, с которым связан объект).

MultiSelect- определяет, можете ли вы сделать несколько выборов в списке

IncrementalSearce- определяет, позволяет ли объект последовательный поиск ( знаете ли вы в чем его суть)

RowSourceType – тип источника значений

BoundColumn – определяет, какой элемент объекта привязан к свойству Value этого элемента управления.

В дополнении к простому выбору элементов из списка вы также можете предоставить пользователю добавлять элементы в список в диалоговом режиме. Комбинация – "список +  поле ввода".

В VFP есть возможность создавать списки, в которых пользователь выбирает количество отображаемых колонок ( комбинация список + счетчик). Описываете объект Spinner ( счетчик) и в процедуре для события Interactive Change( событие наступает при изменении значения объекта) описываете необходимые действия, т.е. если в счетчик выбирается значение =1, на экране отображается  одно поле, значение =2 - два поля и т.д.

С помощью списка можно делать множественный выбор, для этого свойство MultiSelect должно иметь значение .Т. Выбранные в раскрывающемся списке. Здесь также используется процедура для события InteractiveChange

12) Раскрывающийся список ComboBox. Существуют 2 типа раскрывающихся списков:

1.Drop down combo - редактируемый ( устанавливается по умолчанию)

2.Drop down list - простой

Простой раскрывающийся список работает как обычный список, т.е. не позволяет вводить собственные данные.

13) Объект GRID . Данный объект часто используется в формах с отношением    один- ко-многим, в которых поля ввода отображают данные главной таблиц. А объект - таблица содержит данные подчиненной таблицы. Для создания можно использовать построитель.

ColunmCount- число отображаемых столбцов

Соlunm Order- порядок расположения столбцов

RowHeight - высота каждой строки

ChildOrder - устанавливает активный индекс подчиненной таблицы

LinkMaster - определяет главную таблицу

Record Sourse- задает имя таблицы, которая является источником данных для объекта таблицы.

ControlType - тип объекта, помещаемого в столбце

Каждый из столбцов объекта - таблицы можно сделать видимым или невидимым путем установки флажков. Кроме того можно сделать счетчики в столбцах, используя метод Init ( событие наступает когда объект создан, но еще не выведен на экран).

Объект PageFrame - макет страницы . используется для создания многостраничных форм. Количество страниц задается свойством PageCount .

Например, вы сделали объект- таблицу на первой странице вашей формы. В таблице отображаются записи о всех студентах института :ФИО, курс, группа, факультет. На второй странице будут дополнительные сведения о каком-либо одном студенте.

Чтобы добиться этого, нужно скорректировать свойство Caption для объектов PagePage2 . Для объекта стр.1 -заголовок -весь список, стр.2- дополнительная информация.

На первой странице создайте таблицу, на второй - поля ввода, адрес, год рождения, рейтинг.

Когда вы щелкните по заголовку весь список отобразится таблицей, когда щелкните дополнительно - отображаются данные об одном студенте.

При переходе на страницу формы необходимо перевести значения отображаемых в ней данных. Для этого можно использовать события Activate каждой страницы объекта PageFrame. Процедура обработки этого события:

-screen.ActiveForm.Refresh( )

VFP позволяет работать с несколькими одновременно открытыми копиями одной и той же формы. Например, вам нужно прервать ввод данных в одну форму из-за отсутствия информации месте ввода неполной записи или потери данных можно выйти из текущей формы и открыть другую .

В управляющей форме сначала определяется новое свойство типа массив, который будет содержать все копии формы, причем  использование массива позволяет не ограничивать число этих копий и не определять его значения. (Свойство устанавливается  в значение.NULL., что резервирует место под первую копию). В каждой копии формы можно создать свое собственное окружение с помощью свойства DATASESSION ( определяет , может ли объект выполняться и иметь среду окружения) изменив его значение на 2 . В результате разные экземпляры формы не смогут одновременно использовать один и тот же файл.

15) Чтобы сделать активными сразу несколько открытых форм, их объединяют в набор форм -  объект FORMSET . Преимущества использования набора форм над вызовами отдельных форм команды DO FORM :

  1.  Если используемая таблица определена на уровне набора форм , то у всех форм синхронизируются указатели текущей записи.
  2.  Все формы можно показывать и прятать одновременно.
  3.  Вместо подбора координой форм методом проб и ошибок все формы можно вручную визуально расположить на экране.

Для создания набора форм необходимо создать первую форму, которая войдет в этот набор. Для добавления следующих форм выберете в меню Form опцию Add New Form . Уже существующую форму добавить к набору нельзя.

В методе одной из форм набора доступ к свойству другой формы этого же набора производится таким образом

This Form. Label1.Caption = This Form Set. Form 2.Text 3. Value. Т.е. значение текстового блока  Text3 в форме 2 текущего набора форм присваивается заголовку текстового объекта Label1 текущей формы.

При запуске набора форм будем использовать в каждой форме последовательность переключения между объектами по клавише Tab .

Порядок перехода между формами определяется порядком их добавления к набору. Когда пользователь завершает ввод в одну форму, управление передается следующей. Если пользователь достигает последнего объекта формы, управление передается на первый объект той же формы. Эти два процесса протекают независимо друг от друга до тех пор, пока один из объектов одной из форм не установит свойство TerminateRead  в .Т. ( и при этом свойство формы WindowType =2 или 3) или не выполнит команду :ThisFormSet.Release (Эта команда освобождает все формы набора ).

16) Объект OLEBoundControl -(OLE объект данных ). Этот объект позволяет вместить содержимое поля  типа General в вашу форму для редактирования. Свойства этого объекта:

CONTROLSOURSE  указывает в какой таблице и в каком поле  храниться OLE объект .

AUTOActivate - определяет , по какому событию должен быть активизирован для редактирования объекта. По умолчанию оно устанавливается = Double Click , другие допустимые опции:

GotFocus  cобытие наступает при переходе на объект. Может также вызываться программными средствами.

Stretch - размещение в границах объекта : Clip ( обрезаться) , Stretch ( не соблюдает пропорцию) , Isometric ( соблюдаются пропорции).

17) Объект OLE Container Control - OLE объект управления не нуждается в связи с таблицей VFP . Этот объект позволяет добавить в форму функциональные возможности текстовых процессоров , электронную таблицу и др. OLE - серверов без дополнительных затрат, связанных с хранением OLE - объектов в таблицах FoxPro. Многие приложения из комплекта MS-OFFISE позволяют вам передавать объекты из одного приложения в другое. Контейнеры OLE позволяют добавить такую же функциональность и приложениям VFP .

Вы можете редактировать содержимое OLE - объекта, не покидая оболочку клиента OLE. Меню VFP просто заменяется на меню OLE- сервера.

18) Объект Timer - обрабатывает данные системных часов, н-р, можно выводить данные через определенные промежутки времени.

19) Объект Separator - используется при создании пользовательских панелей инструментов для разбиения инструментов на группы.

20) Объект Control - создает управляющий объект, который может содержать другие защищенные объекты. Н-р, созд. Объект из 2х списков и 2х кнопок, затем включили его в форму, этими списками и кнопками нельзя будет манипулировать в индивидуальном порядке ни на этапе разработки, ни на этапе выполнения.

21) Объект Custom - создает пользовательский объект, не имеющий визуального представления. Н-р, используется для сохранения состояния срелы и установки собственных параметров и для восстановления среды. Используется для выполнения стандартных операций, не требующих отображения на экране, одним из таких примеров является класс, используемый для запуска приложения.

 При создании данного класса нельзя размещать в классе объекты интерфейса, но можно определить новые свойства и методы, используемые в приложении.

Например, можно создать свойства, содержащие имя базы данных приложения, имя основного меню приложения и заголовок основного окна приложения.

 В методе Init описываются требуемые для инициализации приложения параметры Set, открывается база данных, используемая в приложении.   В методе Destroy (событие выполняется, когда освобождается экземпляр объекта), описываются действия, выполняемые при выходе из приложения; т.е. закрывается база данных и завершается обработка событий командой Clear events. Для запуска основного меню приложения определяется новый метод Do и в нем описывается запуск основного меню:

  Do<имя меню>

  Read events - активизация меню.

 

  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.  

jjjjjjjhbfdhjhf


 

А также другие работы, которые могут Вас заинтересовать

79732. Учет затрат на производство и калькулирование себестоимости продукции 105.5 KB
  Учет затрат на производство и калькулирование себестоимости продукции Задачи учета затрат на производство и калькулирование себестоимости продукции. Варианты учета затрат. Характеристика учет и распределение затрат вспомогательных производств. Методы учета затрат на производство продукции и калькулирование себестоимости продукции.
79733. Учет издержек обращения 60 KB
  Учет издержек обращения Задачи и классификация издержек обращения Учет транспортных расходов Учет расходов связанных с товарными запасами Учет расходов связанных с основными средствами Учет расходов на оплату труда и социальные нужды. Учет издержек обращения относящихся к реализованным товарам Задачи и классификация издержек обращения Издержки обращения – это затраты материальных денежных и трудовых ресурсов связанные с переводом товаров из сферы производства в сферу потребления. Издержки обращения относятся к категории затрат...
79734. Учет реализации товаров в организации оптовой торговли 43 KB
  Учет реализации товаров в организации оптовой торговли Формы оптовой реализации товаров Учет реализации в момент оплаты товаров. Учет реализации в момент отгрузки товаров. Учет реализации товаров транзитом Формы оптовой реализации товаров Различают две основные формы оптовой реализации товаров: реализация товаров со складов складской оборот; реализация товаров транзитом транзитный оборот. Реализация товаров транзитом в свою очередь применяется как с участием так и без участия оптового предприятия в расчетах.
79735. Учет собственного капитала 46.5 KB
  Учет собственного капитала Учет уставного капитала. Учет резервного капитала Учет добавочного капитала Учет уставного капитала Собственный капитал состоит из уставного капитала добавочного и резервного капитала резервных фондов и нераспределенной прибыли. Для характеристики той чисти собственного капитала размер которой указывается в учредительных документах используют понятие уставный капитал складочный капитал уставный фонд паевой фонд. Все эти виды собственного капитала учитываются на счете 85 Уставный капитал. Сальдо этого...
79736. Учет товарных потерь 52.5 KB
  Учет товарных потерь Нормируемые и ненормируемые потери Взаимозачет недостатков одних товаров излишками других Отражение в учете сумм недостач хищений и потерь от порчи ценностей Учет товарных потерь вследствие естественной убыли Товарные потери при транспортировке Нормы естественной убыли на складах Резерв на списание естественной убыли Нормируемые и ненормируемые потери Товарные потери возникают при транспортировке хранении и отпуске товаров. К ненормируемым относятся потери от боя брака и порчи товаров а также потери по...
79737. Учет финансовых результатов 93.5 KB
  Учет прибыли убытков предприятия. Распределение прибыли. Учет прибыли убытков предприятия Финансовый результат хозяйственной деятельности предприятия определяется показателем прибыли или убытка формируемым в течение календарного хозяйственного года. Формирование итогов годового финансового результата осуществляется накопительным путем в течение всего года на счете 80 Прибыли и убытки виде его свернутого остатка отражающего либо прибыль по кредиту счета либо убыток по дебету счета.
79738. Бухгалтерский учет банковских кредитов 106 KB
  Любое предприятие, получив в банке кредит, должно, во-первых, правильно выбрать источник списания затрат на оплату процентов за пользование ссудой, и во-вторых, достоверно отразить в учете и отчетности сумму возникшего перед банком обязательства.
79739. Бухгалтерский учет выпуска готовой продукции 76 KB
  Бухгалтерский учет выпуска готовой продукции Методика расчета фактической себестоимости отгруженной продукции на счете. Методика расчета фактической себестоимости отгруженной продукции с использованием учетных цен Методика использования фактической себестоимости по прямому принципу без использования учетных цен Речь идет о решении организации применять или не применять счет...
79740. Бухгалтерский учет материалов 107.5 KB
  Аналитический текущий учет материальных ценностей можно вести: либо в оценке по учетным ценам, либо в оценке по фактической средней себестоимости. На малых предприятиях, где количество наименований материалов невелико