Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MB6REFRU.pdf
Скачиваний:
10
Добавлен:
13.02.2015
Размер:
3.83 Mб
Скачать

Функция StyleAttr( )

Функция StyleAttr( )

Назначение:

Возвращает значение одной из компонент стиля оформления объекта: Pen, Brush, Font, или Symbol.

Синтаксис:

StyleAttr( style , attribute )

style L величина, выражающая стиль (величина типа Pen, Brush, Font или Symbol); attribute L цельночисленный код, управляющий результатом функции

Величина, полученная в результате:

Целое число или строка, в зависимости от значения параметра attribute.

Описание:

Функция StyleAttr( ) извлекает из величины типа Pen, Brush, Symbol или Font определенную компоненту.

Все типы в MapBasic являются сложносоставными. Например, определение стиля Brush состоит из трех компонентов: pattern, foreground color и background color. При вызове функции Style4 Attr( ), параметр attribute контролирует, какой из атрибутов возвращается.

Параметр attribute должен являться одним из кодов, показанных в нижеследующей таблице. Коды в левом столбце (например, PEN_WIDTH) определены в файле стандартных определений MAPBASIC.DEF.

Если параметр style является значением Pen, используйте одно значение из таблицы:

Значение attribute

Результат StyleAttr( ):

BRUSH_PATTERN

Целое число (Integer), атрибут стиля Brush,

 

задающий номер штриха.

BRUSH_FORECOLOR

Целое число (Integer), атрибут стиля Brush,

 

задающий RGBLкод цвета штриха.

BRUSH_BACKCOLOR

Целое число (Integer), атрибут стиля Brush,

 

задающий RGBLкод цвета фона штриха или L1,

 

если фон прозрачный.

FONT_NAME

Атрибут стиля Font, задающий строку с именем

 

шрифта.

FONT_STYLE

Целое число (Integer) от 0 до 7, атрибут стиля Font

 

(0 = простой, 1 = жирный, и т.д.); см. Предложение

 

Font для более подробной информации.

FONT_POINTSIZE

Целое число (Integer), атрибут стиля Font,

 

задающий размер шрифта в точках.

 

Замечание: Если текстовый объект принадлежит

 

таблице, а не Отчету, то размер будет равен 0 и

 

высота букв будет определяться текущим

Справочник MapBasic

559

Функция StyleAttr( )

 

масштабом Карты.

FONT_FORECOLOR

Целое число (Integer), атрибут стиля Font,

 

задающий RGBLкод цвета символов строки.

FONT_BACKCOLOR

Целое число (Integer), атрибут стиля Font,

 

задающий RGBLкод цвета фона строки или L1, если

 

фон прозрачный. Если стиль шрифта включает

 

кайму, то задает RGBLцвет каймы.

Значение attribute

Результат StyleAttr( ):

PEN_WIDTH

Целое число (Integer), атрибут стиля Pen,

 

задающий ширину линии в точках.

PEN_PATTERN

Целое число (Integer), атрибут стиля Pen,

 

задающий номер вида линии.

PEN_COLOR

Целое число (Integer), атрибут стиля Pen,

 

задающий RGBLкод цвета линии.

PEN_INTERLEAVE

Логическое: TRUE если стиль пересекающихся

 

линий.

PEN_INDEX

Целое число (Integer), представляющее индекс

 

линии из библиотеки линий.

SYMBOL_KIND

Целое число (Integer), тип символа: 1 L символ Map

 

Info версии 3.0; 2 L символ шрифта TrueType; 3 L

 

символ из растрового файла.

SYMBOL_CODE

Целое число (Integer), атрибут стиля Symbol,

 

задающий номер символа. Используется для типа

 

символа версии MapInfo 3.0 и TrueType.

SYMBOL_COLOR

Целое число (Integer), атрибут стиля Symbol,

 

задающий RGBLкод цвета символа.

SYMBOL_POINTSIZE

Целое число (Integer) от 1 до 48, атрибут стиля

 

Symbol, задающий размер символа в пунктах.

SYMBOL_FONT_NAME

Строка (String), имя шрифта TrueType, который

 

используется как библиотека символов.

SYMBOL_FONT_STYLE

Целое число (Integer), задающее написание

 

символа TrueType (0 = нормальное написание, 1 =

 

жирное, и т.д.). Смотрите описание предложения

 

Symbol.

SYMBOL_ANGLE

Действительное число (Float), угол поворота

 

символа TrueType.

SYMBOL_CUSTOM_NAME

Строка (String), имя растрового файла.

SYMBOL_CUSTOM_STYLE

Целое число (Integer), задающее стиль для

 

растрового символа (0 = нормальное, 1 = показать

 

фон и т.д.). Смотрите предложение Symbol.

560 Справочник MapBasic

Функция StyleAttr( )

Ошибки:

ERR_FCN_ARG_RANGE, если неправильно значение аргумента.

Пример :

Воспользуемся функцией CurrentPen( ) для того, что бы узнать, какой установлен сейчас стиль линии в MapInfo, затем с помощью функции StyleAttr( ) узнаем толщину линии в пикселах.

Include ”mapbasic.def” Dim cur_width As Integer

cur_width = StyleAttr(CurrentPen(), PEN_WIDTH)

Смотрите также :

MakePen( ), MakeBrush( ), MakeFont( ), MakeSymbol( ) Pen( ), Brush( ), Font( ), Symbol( )

Справочник MapBasic

561

Оператор Sub...End Sub

Оператор Sub...End Sub

Назначение:

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

Синтаксис:

Sub subroutine [ ([ByVal] parameter As var_type [, ... ]) ] statement_list

End Sub

где

subroutine – имя процедуры; parameter – имя параметра процедуры;

var_type – стандартный в MapBasic тип переменных (например, Integer) или сложноL определенный тип, заранее объявленный оператором Type;

statement_list – список (от 0 и более) операторов процедуры.

Предупреждение:

Вы не можете использовать оператор Sub... End Sub в окне MapBasic.

Описание:

Оператор Sub... End Sub описывает процедуру в MapBasic. Как только subLпроцедура определена, к ней можно обращаться из любой другой части программы оператором Call.

Каждая процедура, задаваемая оператором Sub... End Sub, должна быть заранее объявлена оператором Declare Sub.

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

Параметры для подпрограммы задаются списком через запятую, где каждый параметр определяется следующим образом:

[ByVal] parameter As var_type

где parameter – имя параметра. Каждое такое определение параметра процедуры должно быть уникально.

Если при определении параметра процедуры ключевое слово ByVal не участвует, то это значит, что параметр определен ссылкой ("by reference"). То есть программа, вызывая процедуру, параметры которой заданы ссылкой, должна использовать только имена переменных в качестве параметров вызова. Вы не можете передавать константы или выражения (такие как "Москва") ссылкой. Впоследствии, если subLпроцедура изменила значения этих параметров, то также изменятся значения переменных, использовавшихся как параметры вызова в операторе Call. Таким образом, параметр, передаваемый ссылкой, позволяет не только доставлять значение из вызывающей процедуры, но и возвращать значение обратно в этом же параметре.

562

Справочник MapBasic

Оператор Sub...End Sub

Если при объявлении использовалось ключевое слово ByVal, то параметр процедуры определен для передачи процедуре значением ("by value"). Программа, вызывая процедуру, параметры которой заданы значением, может использовать как имена переменных, так и константы или выражения в качестве параметров вызова. Однако, если изменить значение такого параметра в теле процедуры, новое значение нельзя будет вернуть в вызывающий модуль. Параметр, определенный как "значение", не может передавать массивы, значения переменных сложного типа, созданного оператором Type и объявленных в предложении Alias.

SubLпроцедура может обрабатывать массивы. В списке параметров массив объявляется с помощью пустых скобок, следующих за именем переменной. В следующем примере в процедуре "ListProcessor" объявлен в качестве параметра массив целых величин "items".

Sub ListProcessor(items( ) As Integer)

При вызове такой процедуры оператором Call параметром вызова должно быть имя массива переменных целого типа без круглых скобок.

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

Предложение Exit Sub заканчивает работу subLпроцедуры.

Пример:

Процедура Cube возводит число в куб (в третью степень) и возвращает результат. Процедура имеет два параметра: первый для возводимого степень вещественного числа, второй для результата.

Declare Sub Main

Declare Sub Cube(ByVal original As Float, cubed As Float)

Sub Main

Dim x, result As Float

Call Cube(2, result)

' переменная result теперь имеет значение: 8 (2 x 2 x 2) x = 1

Call Cube(x + 2, result)

' переменная result теперь имеет значение: 27 (3 x 3 x 3) End Sub

Sub Cube (ByVal original As Float, cubed As Float)

cubed = original ^ 3 End Sub

Смотрите также:

Call, Declare Sub, Dim, Exit Sub, Function... End Function, Global

Справочник MapBasic

563

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]