(Продолжение, начало см. в МК № 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
<link href="mycssfile.css" rel=stylesheet>
Такая строка вставляется в гипертекст в разделе
.Для удобства просмотра HTML-текста с применением стилей в МайКомПаде используйте соответствующий плагин — Web Browser Preview (— Web Browser Preview (http://www.vb.kiev.ua/dwns/plugins).
(Продолжение следует)
