Скруглённый TEdit

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

Я почему спрашиваю. Меня очень не устраивает нынешний лазаревский TPаgeControl, особенно отрисовка под винду заголовков вкладок в нижнем положении. Была мысль попробовать отнаследоваться и делать свой с кошерной отрисовкой.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Vadim, там подгружаемый фон. Загружаешь картинку, выставляешь удобный размер окна и перезагружаешь приложение.
Себе можешь и белочек с бурундуками сделать.

Добавлено спустя 6 минут 4 секунды:
zoltanleo, гемора много. Не, если ты доберешься до исходных компонент-ярлычков и пр... то это достаточно интересный вариант.Сама отрисовка достаточно проста, если понять принцип.
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

Вообще не вижу никаких проблем.
Поместил на форму TBGRAShape. Поставил нужный радиус скругления.
На шейп положил Tedit, убрал рамку и привязал к краям шейпа.
Всё. Шейпом меняю размер Edit`а. За шейп таскаю эту группу куда надо или привязываю к нужному месту.

Изображение
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

sign, А если челу влом ставить лишний пакет и нагромождать компоненты из-за приятных углов? Плюс, шейп увеличивает, зрительно, саму строку. А если тебе захочется вдруг сделать круглыми углы у кнопок? Картинок? У самого окна? Окно-то шейпом не окружишь?

Кстати, в последнее время предпочитаю поменьше использовать всякие компоненты-контейнеры, так как не всегда понятно где они запоганят вид при смене шрифта. Все никак не решусь переписать программу чтобы уменьшить количество всякого хлама в ней.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

sign писал(а):Поместил на форму TBGRAShape.

Ну, да... И вес приложения, при этом, увеличился в 10 раз... :-D
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

sign писал(а):Поместил на форму TBGRAShape

Интересно решение. Но для написания компонента не подойдёт, особенно для несимметричных полигонов :(
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

Лекс Айрин писал(а):sign, А если челу влом ставить лишний пакет и нагромождать компоненты из-за приятных углов? Плюс, шейп увеличивает, зрительно, саму строку.

Делаем верхний и нижний отступы = 1.
Вот пример - стандартные размеры:

Изображение

Лекс Айрин писал(а): А если тебе захочется вдруг сделать круглыми углы у кнопок? Картинок? У самого окна? Окно-то шейпом не окружишь?

http://dropdoc.ru/doc/344285/bgrabitmap---free-pascal-wiki---lazarus
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

sign, да я уже и не то сделал без всяких дополнительных модулей. Причем, имхо, даже легче чем с доп компонентами. Единственный минус, но это уже явно системный, немного неправильно позиционируется форма обрезки для всего окна, но это не критично.

Собственно я говорил не о возможности как таковой, а о самом процессе. В твоем случае надо будет окружить каждый компонент шейпом (кстати, почему именно TBGRAShape, чем тебе не угодил стандартный?), установить для него форму, мне же просто требуется запустить одну процедуру на каждый компонент.
Про размер я и не говорю. Итак программа расплывается как тесто на дрожжах((( даже скомпиленный пример для этой темы весит чуть больше 20 мегабайт, после подчистки хвостов.
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

Лекс Айрин писал(а):В твоем случае надо будет окружить каждый компонент шейпом (кстати, почему именно TBGRAShape, чем тебе не угодил стандартный?), установить для него форму, мне же просто требуется запустить одну процедуру на каждый компонент.

Я использую BGRA компоненты, потому что там значительно больше возможностей.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

sign, а может ты просто не знаешь возможностей стандартных библиотек?
Да и всегда ли они нужны?
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

Я ещё TVirtualStringTree широко использую. Шикарный компонент.
Для показа справочных данных - THtmlViewer.
Для работы с электронными таблицами - uOpenOffice.
Аватара пользователя
VirtUX
энтузиаст
Сообщения: 880
Зарегистрирован: 05.02.2008 09:52:19
Откуда: Крым, Алушта

Сообщение VirtUX »

Я 99% своих компонент отрисовываю с помощью BGRABitmap. Не вижу ничего плохого в том, чтобы приложение выглядело эстетично, а не квадратно)))
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

VirtUX, для этого не обязательно использовать посторонние компоненты. А вот размер, при использовании BGRAxxx увеличивается сильно. Принцип KISS еще никто не отменял)
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

Лекс Айрин писал(а):VirtUX, для этого не обязательно использовать посторонние компоненты. А вот размер, при использовании BGRAxxx увеличивается сильно. Принцип KISS еще никто не отменял)

На самом деле увеличение там на фигушку.
Даже заморачиваться по этому поводу не стоит.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

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