Access 2002

Вызовы функций


Запрос всей этой информации у Windows осуществляется через вызовы функций API DeviceCapabilities, которые операционная система, в свою очередь, запрашивает у драйвера принтера.

Программный код, предназначенный для сбора информации о возможностях принтера, получается довольно большим и сложным. Поскольку он всегда одинаков, мы решили написать его в виде отдельного класса с именем PrinterCapa- bi 1 ities. Его без труда можно включить в любое приложение, а уж пользоваться им — одно удовольствие. Создайте объект класса, укажите, какое устройство вас интересует, — и в вашем распоряжении будет целый ряд свойств, отражающих возможности устройства. Все они перечислены в  9.4.

Как следует из  9.4, одни свойства класса Pri nterCapabi 1 i ti es возвращают лишь отдельные значения, тогда как другие — целые массивы или структуры данных PointAPI. Поэтому при обращении к этим свойствам будьте внимательны, чтобы получаемые результаты соответствовали вашим ожиданиям.

Цикл For Each. Next не работает со свойствами, возвращающими массивы структур PointAPI (в частности, со свойствами Resolutions и PaperSizes). Он воспринимает только те свойства, которые возвращают массивы строк или чисел.

Существует два способа работы со свойствами класса Pri nterCapabilities, возвращающими массивы. Во-первых, можно объявить динамический массив нужного типа и присвоить ему значение свойства (как в предыдущем примере). Чтобы пройтись по его элементам, вам понадобится цикл от верхней границы массива (возвращаемой функцией LBound) до нижней (UBound). В цикле For. .Next нельзя работать непосредственно со свойством: такой код просто не будет откомпилирован. Альтернативой ему является цикл. Он проще, но работает медленнее. Впрочем, поскольку шагов в этом цикле сравнительно мало, а запускать его много раз подряд вы не станете, скорость его выполнения не имеет особого значения Код с использованием цикла For Each. Next приведен ниже.

Комментарии закрыты