![]() Если Вы видите здесь эту рекламу, значит увидят и Вашу рекламу... |
Нестандартный интерфейс - просто! ОкончаниеВ прошлый раз мы закончили разговор об элементах интерфейса кнопках и переключателях. Сегодня перейдем к надписям. К сожалению, стандартный компонент Label сильно ограничен в части оформления. Нет возможности создавать объемные надписи, надписи с тенью и т.п. Попробуем обойти эти препятствия. Можно, конечно вместо надписей вставлять картинки, это отменит все ограничения. Проблема только в том, что картинки, чаще, имеют большой объем, и, включая слишком большое их число в проект, вы рискуете "раздуть" свою программу до невообразимых размеров. Выход есть, самое простое - комбинировать два объекта Label. Как это делается: помещаем Label1 на форму, цвет текста, например, делаем темно-серый (Gray). Label2 помещаем на форму поверх первого, свойство "прозрачность" должно быть включено (Transparency = True), и цвет текста делаем синий (Navy), при этом необходимо, чтобы элементы были сдвинуты друг относительно друга на 1 - 3 пикселя по вертикали и по горизонтали. Таким способом мы получаем эффект объемного текста. Тень делается примерно также, только цвет тени должен быть несколько светлее, например, светло-серый (Silver). Создавая тень, можно увеличить размер ее шрифта - получится еще естественнее. С надписями на этом, пожалуй, закончим. Идея, надеюсь, ясна - комбинация двух и более компонентов Label с применением различных свойств для "верхней" и "нижней" надписи. Теперь, наверное, о самом главном - формы. Приступим. Для начала необходимо избавиться от заголовка и границ формы - именно они придают программе заурядный вид. В свойствах формы, свойство BorderStyle меняем на bsNone. Теперь форма не имеет ни границ, ни заголовка. Необходимо придумать свой заголовок. Это может быть либо Label, либо Shape, либо Image. Допустим, вы выбрали Image - нарисовали заголовок в графическом редакторе и поместили его в форму. Кроме украшательной и информационной функции заголовок окна предназначен для "перетаскивания" окна на "рабочем столе". Для того чтобы реализовать эту функцию, в обработку события MouseMove нашего заголовка вставляем следующие строки:
const int SC_DRAGMOVE = 0xF012; В этой процедуре осуществляется "захват" мыши программой и прием программой системных сообщений о перемещении ее окна. Основное сделано, осталось добавить кнопки свертывания, восстановления и закрытия окна. Кнопки были описаны ранее и, думаю, не составит труда использовать их. Скажу лишь, что свернуть окно программы можно командой
Application->Minimize(); Вот в основном и все. Достаточно просто и эффективно при этом. Ну, а для тех, кто решил пойти дальше, поговорим об окнах не прямоугольной формы. Хочется предупредить, что различные круглые, с дырками и причудливой формы окна уместны далеко не в каждой программе. Итак, для того, чтобы изменить форму окна программы мы воспользуемся функцией Windows API SetWindowRgn(hWnd, hRgn, bRedraw), где hWnd - дескриптор окна, hRgn - дескриптор региона, bRedraw - флаг перерисовки. Окно у нас уже есть (Form1), а вот регион необходимо создать. В обработчике события формы FormCreate объявляем переменную типа HRGN, она будет называться hRegion: HRGN hRegion; Далее можно воспользоваться несколькими функциями для создания региона:
CreateEllipticRgn - создает регион формы эллипса; Мы создадим регион формы эллипса. Далее, за объявлением переменной, пишем строки: hRegion=CreateEllipticRgn(0, 0, 200, 100); Здесь первые два значения - координаты верхнего левого угла, другие значения - координаты нижнего правого. Итак, создан регион формы эллипса, шириной в 200 пикселей, высотой в 100. Далее присваиваем нашему окну форму этого региона: SetWindowRgn(Handle, hRegion, TRUE); Вот, в принципе и все. Осталось запустить программу и откорректировать размеры эллипса до необходимых вам. Надеюсь, приведенные примеры помогут начинающим программистам в создании красивых, неординарных в оформлении программ и дадут толчок к разработке собственных "нестандартных" элементов интерфейса. Сайт автора: http://www.ldbsoft.nm.ru/
|
Copyright © "Internet
Zone", info@izcity.com
Копирование и использование данных материалов разрешается только в случае указания на журнал "Internet Zone", как на источник получения информации. При этом во всех ссылках обязательно явное указание адреса вэб-сайта http://www.izcity.com/. При наличии у копируемого материала авторов и источника информации - их также нужно указывать, наряду со ссылкой на нас. Подробнее условия использования материалов смотрите здесь. |