РЕКОМЕНДУЕМ - ИНВЕСТИРОВАНИЕ В ИНТЕРНЕТЕ - ОТ 0,1 ДО 2 % В ДЕНЬ, ПРОВЕРЕНО.


При условии регистрации по этой ссылке, рекомендации и консультации для Вас бесплатны danilclub@mail.ru



Е-книги
Практическое пособие по созданию WEB-сайтов для начинающих
Самоучитель по Webдизайну
Самоучитель по интернет- программированию
Самоучитель по работе в Internet
Статьи
Спам
Интернет
Железо
Мобилы
Безопасность
Сетевые технологии
Программирование
Вебдизайн
Вебстроительство
Скрипты
Раскрутка
Flash
Photoshop
Windows, Soft
Linux
Описание игр
Другие
Бизнес-идеи
Электроника и техника
Малый бизнес
Интернет-бизнес
Моя ферма
Раскрутка сайтов
Технологии бизнеса
Руководства
Юмор
Введение
Вовочка
Законы Мерфи
КВН
Компъютерные
Нигеры
Поэзия
Пор-чик Ржевский
Тёща
Чукча
Школа
Штирлиц
Разные
Избранные
Пособия
Смешные истории


Rambler's Top100
Rambler's Top100


Обзор некоторых особенностей элементов управления библиотеки FM20.DLL.

Давайте откроем эту библиотеку и внимательно изучим... В данной статье я хочу познакомить Вас с библиотекой FM20.DLL. Не то чтобы Вы ее не знали, скорее всего, открывали, видели, что она повторяет стандартные элементы управления, и забывали про нее.

Откуда же берется эта библиотека? Ответ прост: это элементы управления из VBA ( Visual Basic for Application ). Сама по себе библиотека, конечно, великовата - 1,05 Mb. И прежде чем просто включать ее в исходники своего приложения десять раз подумаешь: окупает ли данный объем, то, что она предоставляет из себя. А предоставляет она несколько больше чем стандартные элементы управления VB.

Давайте откроем ее и исследуем еще раз. Создайте новый проект StandardEXE. Далее меню: Project/Components ... В диалоговом окне выберем Microsoft Forms 2.0 Object Library. То, что появилось у нас на левой панели инструментов, практически один к одному повторяет стандартный набор. Это Frame Label
CommandButton
TextBox
ListBox
ComboBox
CheckBox
OptionButton
ScrollBar
Image

Ага, вот пошли и отличия:

ToggleButton
TabStrip
SpinButton
MultyPage

Давайте "покопаемся" в них. Для просмотра некоторых эффектов, расположите на форме картинку (свойство Picture ), лучше фотографию.

Элемент 1 - CommandButton.

Размещаем на форме и устанавливаем свойство BackStyle = 0 ( fmBackStyleTransparent ). У Вас были до этого прозрачные кнопки? Кстати, прозрачность здесь поддерживается очень хорошо. Зайдите в свойство Picture и выберите любую иконку - нормальное отображение "вырезанной" иконки на фоне прозрачной кнопки. А свойство PicturePosition - говорит само за себя (расположение иконки на кнопке с различных сторон от надписи). И еще 2 необычных для кнопки свойства: AutoSize и WordWrap. Действуют они абсолютно так же как и для стандартного Label, но в общем-то эффект неожиданный.

Так же необходимо обратить внимание на события данного элемента управления. Некоторые стандартные - отсутствуют, но зато появилась пара новых:CommandButton1_BeforeDragOver и CommandButton1_BeforeDropOrPaste, название которых объясняет их работу. Кстати, эти два события имеются в наличии практически у всех контролов данной библиотеки.

Элемент 2 - Label.

Чего-то неожиданного ждать от простой надписи не приходится, и все же: Наличие свойств Picture и PicturePosition ,как и у CommandButton позволяет вставлять картинку. А свойство SpecialEffect превращает лейбл в панели с различными видами окантовки (так может это все-таки Panel,а не Label?).

Элемент 3 - TextBox.

Сразу же обращают на себя внимание два свойства: AutoSize и WordWrap. Есть ли необходимость в раздвижке текстового поля по мере ввода в него текста - не знаю, но свойства такие у него существуют и работают :)

Свойство TextAlign работает точно так же, как и у RichTextBox, т.е. текст выравнивается именно так, как указано в свойстве.

Естественно, присутствует наличие прозрачности и различных видов рамок(свойства BackStyle и SpecialEffect ).

Интересный эффект несет свойство AutoWordSelect. Если оно установлено в True, то при установке курсора всередине слова и расширении выделения, происходит захват выделением всего слова.

И еще одно свойство AutoTab. Так же служит больше для удобств пользователя, чем программиста. При значении True, происходит автоматическое переключение фокуса на следующий элемент управления при достижении количества символов, определяемых в свойстве MaxLenght. Образцом реализации этого свойства служит инсталляционная программа Windows или Office, в том месте, где имеются несколько полей, куда надо вводить серийный номер. После ввода пятой цифры/буквы происходит самостоятельное перемещение курсора в следующее текстовое поле.

Добавлены два метода Copy и Cut, соответственно копирующие или вырезающие выделенный текст в буфер обмена ( Clipboard ). В помощь им существует свойство CanPaste (только для чтения). CanPaste будет True, если содержимое можно буфера обмена можно вставить в данный элемент управления. И будет False - если нельзя (например, картинку в текстовое поле).

Элементы 4 и 5 - CheckBox и OptionButton.

Как и у вышеуказанных элементов поддерживают свойства прозрачности, окантовки, автоизменения размеров.

Свойство GroupName позволяет, минуя контейнеры (типа Frame или PictureBox ) объединять данные элементы управления в различные группы, что особенно актуально для OptionButton.

NB! В отличие от стандартных ЭУ данные CheckBox и OptionButton НЕ ПОДДЕРЖИВАЮТ свойство Style. Для этого используется элемент ToggleButton.

Элемент 6 - ScrollBar.

Чем отличается от стандартного? Тем, что он один, а не два ( VScroll и Hscroll ). Но зато имеет свойство Orientation, где мы можем указать, как его расположить.

Кстати, мы можем заняться его раскраской. За цвет всего контрола отвечает свойство BackColor, а за цвет треугольничков на кнопках - ForeColor.

NB! Очередная недоделка Microsoft! Изменениераскраски на элементе происходит только после изменения какого-либо другогосвойства, или запуска всего проекта.

Еще два (бесполезных?) свойства. Первое - Delay.Отражает время в миллисекундах между щелчком на контроле и началом обработкисобытия. Второе - ProportionalThumb. Интересуется,как отображать размер бегунка: пропорционально области прокрутки илификсированного размера.

Элемент 7 - Image.

Особых различий по сравнению со стандартным Image, я не нашел. В этом плане мне более перспективнымпредставляется Label из этой же библиотеки, которыйможет еще выводить и надписи.

NB! Смотри NB! к 6 элементу.

Элемент 8 - ListBox.

Что сразу бросается в глаза, так это отсутствие свойства Listв окне свойств. Так что заполнение списка возможно только программным путем :(

Отсутствует так же свойство Sort, т.е. сортировкунеобходимо проводить самому :(

Зато меня откровенно порадовало свойство TextAlign -это то, что давно не хватало стандартному списку. Расширено свойство MatchEntry, которое реагирует при попадании фокуса насписок: отыскивает первое слово по первой введенной букве, слову целиком или нереагирует вовсе.

Наконец-то реализовано размещение значений в несколькостолбцов. Хотя, на мой взгляд, несколько заумно. Расположите на форме ListBox и добавьте следующий код:

Private Sub Form_Load()

With ListBox1
 .ColumnCount = 2
 .AddItem "Строка 1, Столбец 1"
 .List(0, 1) = "Строка 1, Столбец 2"
 .List(0, 2) = "Строка 1, Столбец 3"
 .AddItem "Строка 2, Столбец 1"
 .List(1, 1) = "Строка 2, Столбец 2"
 .List(1, 2) = "Строка 2, Столбец 3"
End With

End Sub

Свойство TextColumn, указывает номер столбца,содержимое которого выводится при вызове свойства Text.

Элемент 9 - ComboBox.

Если смотреть с позиций предыдущих элементов управления, то ComboBoxпредставляет собой гибрид ListBox и TextBox, объединяя в себе все их достоинства, ну инедостатки то же :)

Наличие таких свойств как TextAlign, ColumnCount, MatchEntry, List и TextColumn абсолютносоответствует ListBox (см. Элемент 8). А вот наличиесвойств (идентичных в работе TextBox - см. Элемент 3)AutoSize, AutoTab, AutoWordSelect, MaxLenght и даже BackStyle (прозрачность!) + методы Cut,Copy, Paste придаетопределенную изюминку этому контролу. Изиндивидуальных свойств, конечно, надо отметить ListRows.Немало было сломано копий в различных форумах и конференциях, как изменитьвысоту выпадающей части списка. А здесь все просто: отдельное свойство,указываешь количество строк и все. Удобно!

Элемент 10 - "знакомые незнакомцы" - Frame.

Для чего служит Frame в VB? Для двух целей: визуальновыделить часть формы и работать контейнером (чаще всего для OptionButton).Frame из библиотеки VBA так же может выполнять этидве функции. Однако на этом ее возможности не заканчиваются. Frame может работать и как Image,практически полностью поддерживая все его свойства и методы. В том числе и PictureTilling - "размножение" мелких картинок навсе пространство элемента управления. Плюс свойство KeepScrollBarsVisible- автоматическое встраивание полос прокрутки для изображения. Используя еще 4свойства: ScrollHeight, ScrollWidth,ScrollTop, ScrollLeft, Выможете регулировать расположение этих полос прокрутки.

NB! Объявление ScrollHeight, ScrollWidthв коде ОБЯЗАТЕЛЬНО должно располагаться перед ScrollTop,ScrollLeft.

Чего не может данный Frame? Удивительно,но он не может стать прозрачным. Ну не предусмотрели разработчики такогосвойства :(

Ну вот, со стандартными элементами вроде бы разобрались. Осталось еще 4.Нестандартными их назвать можно с натяжкой. В том или ином виде они встречаютсяв других библиотеках.

Элемент 11 - SpinButton.

Чего-то нового, по сравнению с тем, что было в VB4, я не нашел. Элемент прост иэтим изящен, хотя и уступает по возможностям UpDown.

Элемент 12 - ToggleButton ("западающая"кнопка).

Суррогатный заменитель всего-навсего одного свойства у стандартныхCheckBox и OptionButton,свойства Style = 1 (Graphical).В остальном, взял все у стандартной кнопки из этойбиблиотеки.

Элементы 13 и 14 - TabStrip и MultiPage.

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

NB! Для расположения различных элементов на страницах MultiPage,щелкните на элементе правой кнопкой мыши и в контекстном меню выберите Edit. Элемент управления получит другой вид окантовки. Еслитеперь щелкнуть правой кнопкой мыши на ярлыках, то появится возможностьдобавлять, удалять и переименовывать ярлыки.

Основные методы работы с MultiPage производятся черезколлекцию Pages и класс Page(подробнее можно ознакомиться через Object Browser).

Принципы работы с TabStrip можно показать наследующем примере. Разместите на форме TabStrip и 2 PictureBox: Picture1 и Picture2. Раскрасьте вразличные цвета PictureBox, чтобы легче различать.

Private Sub Form_Load()
 Picture1.Move TabStrip1.Left, TabStrip1.Top + TabStrip1.Height, _
 TabStrip1.Width
 Picture2.Move -20000, TabStrip1.Top + TabStrip1.Height, _
 TabStrip1.Width
End Sub

Private Sub TabStrip1_Click(Index As Long)

Select Case TabStrip1.Value
Case 0
 Picture1.Move TabStrip1.Left, TabStrip1.Top + TabStrip1.Height, _
 TabStrip1.Width
 Picture2.Move -20000, TabStrip1.Top + TabStrip1.Height, _
 TabStrip1.Width
Case 1
 Picture1.Move -20000, TabStrip1.Top + TabStrip1.Height, _
 TabStrip1.Width
 Picture2.Move TabStrip1.Left, TabStrip1.Top + TabStrip1.Height, _
 TabStrip1.Width
End Select

End Sub

На этом, пожалуй, краткий обзор библиотеки FM20.DLL можно завершить. В задачи этой статьи не входилоподробное изучение каждого контрола, для этогосуществует хелп по VBA (FM20.CHM). Но думаю, чтоосновную задачу я выполнил - навел Вас на размышления: а так ли уж хороши ЭУ в самом VB? Или действительно хороши? В заключение немногооб общих недоработках:

1. наверно, надо отметить отсутствие у всех вышеуказанных контроловсвойства hDC - хэндла(идентификатора), что значительно сокращает использование API-функций,большинство которых, требуют его.

2. отсутствие ряда контролов, таких как PictureBox, Timer или группы контролов для работы с файлами.

Лирическое отступление.

Для тех, кто всерьез заинтересуется данной библиотекой, рекомендую обратитьвнимание на ряд классов, никак не отраженных ввышеперечисленных контролах (DataObject,NewFont, группа классов HTML). Счастливой охоты!

МихаилЭскин
НОКСТР

    © 2003-2009 Copyright by A. Danilyuk