CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2002 ГОД

Мышление в стиле Visual Basic

Андрей ГОНЧАРОВ ag@ukr.net

(Продолжение, начало см. в МК № 6, 9——10, 19, 25, 27, 29—30, 33, 36—38, 45, 48, 3, 6—7, 12—13 (125, 128—129, 138, 144, 146, 148—149, 152, 155—157, 164, 167, 174, 177—178, 183—184))10, 19, 25, 27, 29—30, 33, 36—38, 45, 48, 3, 6—7, 12—13 (125, 128—129, 138, 144, 146, 148—149, 152, 155—157, 164, 167, 174, 177—178, 183—

Старая тема: CSS

Самое время, Читатель, вспомнить о таблицах стилей в MCP. Как все, вероятно, помнят, MCP (МайКомПад) предлагает усеченную версию таблиц стилей (CSS). Основную инициативу я предлагаю Вам проявить самостоятельно  — ничто не мешает Вам дополнить процедуру —Add класса StyleSheet (и аналогичным образом отредактировать класс Style) такими свойствами-аргументами как linkColor, linkFontFace и, наверное, какими-нибудь hover-атрибутами для определения поведения текста, помеченного стилем по тем или иным соображениям  — короче говоря, классы —Style и StyleSheet я отдаю Вам на растерзание.

Наверняка не все читатели знакомы с принципами каскадных таблиц стилей в документах HTML. Немного ранее я слегка их коснулся этой темы, потому сейчас на ней застревать нет смысла. Подробнее об использовании будет далее (в статье о генерировании HTML и форматировании исходных кодов), а пока рассмотрим, каким образом можно реализовать генерирование такой таблички в коде Visual Basic  6.

Напомню, что основным набором стилей (коллекцией) является StyleSheet. Класс Style содержит все необходимые свойства для описания минимального набора свойств CSS-стиля. В процедуре Add класса StyleSheet эти свойства повторяются, причем добавление нового стиля в набор происходит путем создания временного объекта objMember. Здесь же описываются его свойства, исходя из такого же набора свойств класса Style (внутренняя объектная переменная objMember является его экземпляром  — это метод, которым пользуется мастер создания классов ClassBuilder).

Уголок Литературного Редактора. С позволения читателя привожу цитату из моей переписки с автором, отчасти в качестве оправдательного аргумента за синтаксически неразборчивый фрагмент, отчасти как забавный пример коммуникативной неудачи. Вопрос касался местоименных конструкций предыдущего абзаца и их управления, а также несколько настораживающей избыточности дефиниций этого самого objMember (то он «временный объект», то «объектная переменная», то «метод»  — и все это разные сущности). Для ясности я счел нужным сделать приписку, быть может, не вполне корректную с этической точки зрения, но, как мне казалось, достаточную, чтобы подчеркнуть прагматику вопроса: —

«Признаюсь по секрету, я не программист. Думаю, в данном случае это скорее плюс, чем минус, поскольку благодаря этому я в состоянии оценивать, так сказать, «удельную прозрачность» текста независимо от того, насколько отчетливо я понимаю этот текст и насколько я в состоянии следовать предложенным инструкциям. От меня этого не требуется, я всего лишь литредактор. Как литредактор я давно подметил, что ряд Ваших мест почти непроницаемы для читателя, не знакомого с темой, причем отнюдь не из-за специализированности текста, а просто из-за недобросовестного проговаривания материала. Если в живом общении этот недостаток с лихвой компенсируется (психологический выигрыш, приятное слуху бормотание ламера, пытающегося задавать корректные вопросы и  пр.), то в публикации подобные места так и остаются открытыми язвами в смысловой ткани. Простите за критику…»

Ответ пришел незамедлительно:

«Во-первых, в таком деле, как публикации, критика со стороны редактора  — нормальное явление, посему сегодня-завтра опишу Вам более подробно процесс добавления элемента в набор (—Collection)... Функция Add, возвращающая специфический для ситуации тип данных (ака Объект) предусматривает создание экземпляра  — от этого никуда не деться. Бейсик есть Бейсик, есть регламентные вещи, от которых не уйти. Более того, VB не является 100-процентно Объектно-Ориентированным языком, многое в нем реализовано как имитация во имя удобства. Кроме того, выигранное удобство иногда весьма сомнительно. Другими словами, если вы удивляетесь бессмысленности кода в —Add, то остальные приколы (в частности, Закупоренность Бейсика в контексте интерфейсов  — у вас нет доступа ко многим функциям, доступным в C++) Вас повергнут в шок. Вообще-то ClassBuilder делает всю грязную работу за Вас (причем не худшим образом. Плохой визард не был бы включен в дистрибутив. Функция —Add в том варианте, в котором я ее преподнес читателям, мною не изменялась, разве что немного была приукрашена  — суть осталась та же) — этот процесс был описан еще на стадии «зачатия» цикла. Возможно, есть смысл описать все это снова В СТАТЬЯХ???— суть осталась та же) —

В общем, не сегодня так завтра опишу вам лично. Если вдруг редакторы посчитают необходимым, можно опубликовать эту оправдательно-объяснительную записку в журнале (т.  е. газете)...»

Вот такой вот разговор получился. От дальнейших попыток докопаться до своей рутинной и неказистой истины я отказался, от комментариев тоже воздерживаюсь. Есть род текстов, к которым простому смертному лучше не притрагиваться  — без поста и молитв (. — без поста и молитв :-)

Выход из Уголка.

После создания коллекции мы можем использовать ее компоненты (элементы набора) и их свойства путем перечисления по счетчику (это самый удобный, на мой взгляд, метод): StyleSheet(i).Свойство, где i — счетчик типа Integer. Почему Integer? Потому что Long забирает намного больше памяти, да и лимитов Integer`а вполне хватает для тривиальной таблицы стилей, даже самой большой в мире: грубо говоря, «потолок» для типа Integer  — что-то около тридцати тысяч (.— что-то около тридцати тысяч :-)

Синтаксис CSS

Синтаксические раскладки CSS весьма просты и не должны вызвать у Вас каких-либо затруднений: вначале указывается имя стиля, после чего в фигурных скобках  — набор описывающих этот стиль критериев: начертание шрифта (Font-Family), размер (Font-Size), цвет (Color). Это описание обычного текста, помеченного стилем. Однако в тексте может оказаться, например, гиперссылка — тогда браузер обязательно исказит ее отображение в соответствии со своими установками. Так, для IE это синий для «свежих» гиперссылок и лиловый для посещенных. Конечно, для кого-то это не представляется особой проблемой, однако сама идея использования стилей в документах предполагает оформление текста в обход каких-то default-параметров. Это первый побудительный мотив. Второй — особенности национального трафика: Интернет по-прежнему является «территорией», где нет места расточительству ресурсов — текстовый файл размером в 100 К загружается целую вечность. К сожалению, не всегда технологические уловки в состоянии сломить противостояние отечественных АТС и различных ограничителей трафика. Речь, однако, не об этом, а об упрощении разметки Интернет-страниц путем задания некоторых свойств Body-сегменту такой страницы. Например, указание — набор описывающих этот стиль критериев: начертание шрифта (Font-Family), размер (Font-Size), цвет (Color). Это описание обычного текста, помеченного стилем. Однако в тексте может оказаться, например, гиперссылка — тогда браузер обязательно исказит ее отображение в соответствии со своими установками. Так, для IE это синий для «свежих» гиперссылок и лиловый для посещенных. Конечно, для кого-то это не представляется особой проблемой, однако сама идея использования стилей в документах предполагает оформление текста в обход каких-то default-параметров. Это первый побудительный мотив. Второй — особенности национального трафика: Интернет по-прежнему является «территорией», где нет места расточительству ресурсов — текстовый файл размером в 100 <base class  = MyBodyStyle> в разделе <head> приведет к тому, что весь Body-сектор будет помечен стилем MyBodyStyle. А указание свойств «якорей» (Anchor) в разделе <style> оформит каждый такой «якорь» так, как это нужно Вам  — нет необходимости описывать каждый раз цвет, шрифт и другие атрибуты. Это ли не экономия ресурсов? —Три: использование CSS существенно экономит время на существенные изменения в дизайне сайта  — предположим, на сервере хранится порядка сотни страниц (динамические, статические — неважно!), все они оформляются согласно некоторой таблице стилей путем указания ссылки на содержащий ее файл. Значит, изменив параметры в стиле, можно изменить за один раз весь сайт.— предположим, на сервере хранится порядка сотни страниц (динамические, статические —

Идем далее. Для каждого стиля можно описать такие параметры, как link и hover. Это как раз то, о чем я говорил. Если стиль называется MyBodyStyle, то описание ссылки для этого стиля будет следовать за MyBodyStyle:link  — в фигурных скобках. Следовательно, для события MouseOver (аналогия... в JavaScript это зовется по-иному)  — —MyBodyStyle:hover. Здесь и в предыдущем можно упомянуть либо все параметры стиля, либо некоторые. Можно также указать Text-decoration:none во избежание подчеркивания ссылок в браузере при наведении мыши (hover) или в целом для его отображения на странице (link).

Пример, приведенный ниже, иллюстрирует самый примитивный способ оформления стиля MyBodyStyle:

Реализация

В МайКомПаде реализована процедура InsertCSS (она вынесена в отдельную процедуру в связи с соображениями по поводу будущей макро-автоматизации текстового редактора). Единственное, на чем я бы хотел заострить внимание  — это функция определения цвета исходя из его индекса в списке. GetColor возвращает либо символьные эквиваленты типа —maroon, gold, heaven или black, либо #ffcc00, #ffffff, #000000  — все зависит уже от Вас. Принцип прост до безобразия: Select Case Index (где Index  — аргумент, переданный функции). Помните, что свойство StyleColor объекта Style  — числовое. Далее совсем просто: используя перебор возможных вариантов, присваиваем нужное значение результату работы функции.

Возможно, когда-нибудь будет реализовано считывание стилей из файлов, и даже переход по связующей ссылке на файл CSS  — тогда логично было бы сохранять и читать стили из таких файлов, выводя их списки вообще в другом окне, а также предусматривать добавление в этот список пользовательских цветов. Однако эту тему мы рассмотрим в публикации о —Color  Picker`е...

Для того чтобы описать «текст по умолчанию», достаточно создать аналогичную таблицу для Body, причем точка перед соответствующей лексемой не ставится, как не ставится и перед другими встроенными объектами HTML-страницы  — —A, HR, P... Завораживает?

Вот, собственно, процедура InsertCSS, вынесенная в модуль:

Примечание: Для простоты я для каждого стиля указал отсутствие подчеркивания и прочих эффектов  — —Text-decoration:none; первый индекс стиля в наборе  — —1 (единица); таблица стилей, если она внедрена в текст самой страницы, должна быть помещена между тэгами <style> и </style> до начала сектора <body>. Если есть внешний файл CSS, то связь страницы с ним прописывается следующим образом:

Такая строка вставляется в гипертекст в разделе <head>.

Для удобства просмотра HTML-текста с применением стилей в МайКомПаде используйте соответствующий плагин  — Web Browser Preview (— Web Browser Preview (http://www.vb.kiev.ua/dwns/plugins).

(Продолжение следует)

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © sector.biz.ua 2006-2015 design by Vadim Popov