Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2012, 18:30   #1
eagleoriginal
 
Регистрация: 26.06.2012
Сообщений: 8
По умолчанию Эффект плавного увеличения Элементов как Highslide

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

Самый яркий пример это Highslide.
Прошу меня понять правильно. Задача не по деревянному открыть диалоговое окно, а сфокусировать пользователя на некотором контроле или группе контролов, и с легкостью отпустить его взгляд, когда он тыкнет мышкой вне активной области(на затемненую) чтобы вернуться в главную форму.

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

Я пользусь XE2. ПРоект уже сделан с помощью VCL. Fire Monkey которые однажды посоветовали не есть решение, поскольку это платформа, и сырая.

http://highslide.com/ - вот желанные примеры того, во что хотелось бы превращать приложения на делфи.

Заранее спасибо.
eagleoriginal вне форума Ответить с цитированием
Старый 26.06.2012, 18:46   #2
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию

Понимание того, что мобильные платформы отличаются от настольных - отсутствует?

По теме - ну, если уж так хочется затенения, то (первое, что приходит в голову) сделай пустую форму, поставь ей Color := clBlack, AlphaBlend := 128, размер и положение - как у формы, с которой производится вызов диалогового окна. При вызове диалога сначала показываешь эту форму, а затем - диалог.
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
ych_del вне форума Ответить с цитированием
Старый 27.06.2012, 11:30   #3
eagleoriginal
 
Регистрация: 26.06.2012
Сообщений: 8
По умолчанию

ych_del благодарю за совет. Спорить насчтет дифференцированности платформы не стану. Хотя сначала даже написал расширенный ответ, но из-за проблем с нетом он потерялся.
Скажу только что в пример я привел WEB приложение. Категория программирования, где дизайнерам дано больше свободы и волеизъявления нежели дизайнерам на десктопах. (Как совет прочтите Алана Купера "Психбольница в руках пациентов").
Отсюда вывод, что все сделанное на десктопах сделано как могли, а не как надо.

Поэтому вопрос относительно готовых контролов для приблжения функциональности десктопа к Вебу или мобилке остается открытым.
eagleoriginal вне форума Ответить с цитированием
Старый 27.06.2012, 20:58   #4
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Можно скопировать изображение формы, наложить черный полупрозрачный квадрат, и нарисовать например на TPanel.
Скрин

В примере, при нажатии на изображение, оно "выезжает" на передний план. Вместо изображения может быть что угодно.

PS В коде есть утечка памяти.
Вложения
Тип файла: zip Popup.zip (2.48 Мб, 32 просмотров)

Последний раз редактировалось kangreon; 27.06.2012 в 21:09.
kangreon вне форума Ответить с цитированием
Старый 27.06.2012, 22:04   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

на мой взгляд тяжелый(компонент как окно(объект ОС)) интерфейс не подходит для этого(почти все видимые такие).
с легким интерфейсом(примеры таких компонентов это TLabel, TImage, они не имеют окна) это было бы просто и без костылей..
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.06.2012, 10:41   #6
eagleoriginal
 
Регистрация: 26.06.2012
Сообщений: 8
По умолчанию

Окно не является тяжелым ни в коем случае само по себе. Поскольку окно это только метафора отрисованой облсти в Графическом адаптере.

Однако же рисовать окно действительно не лучший вариант. Я избрал путь трех Окон.
Модуль правда еще не готов. Но принципописать могу.
Основное Окно(Owner) - Полупрозрачное окно - Окно содержашее необходимые контролы - сами обозрваемые контролы(Image, Any Frame и так далее).
Вот такой вот трехслойный пирог. Основная пробелма которая у меня возникла это таскать их все вместе. Поскольку хочется получить модуль который не меняет основные обработчики событий главного окна, и действует предельно деликатно со всеми данными которые были до него в програме.

Пример выложу вечером.
eagleoriginal вне форума Ответить с цитированием
Старый 28.06.2012, 16:01   #7
eagleoriginal
 
Регистрация: 26.06.2012
Сообщений: 8
По умолчанию

Так ну есть маленький примерчик.
Что хочу заметить.
Часто подобные примеры сопровождаются бурными осужденями, чо при растягивании формы вылезают костыли промаргивания и т.д.
Хочу заметить, что если один пользователь на 30 начнет это делать, то это вреоятнее программист интересующийся - как же это сделал ктото другой. пользователю абсолютно до фени.
Также я пока не заморачивался на эффекте плавного появления. Поскольку это лишь немного элементная база. И она должны быть доведена до совершенства. Чтобы не тормозить работу пользователя(ну как это было в первых айпадах).

Однако у меня всеже есть вопросы по Этому идиотскому Винапи. Которое делает "все за нас", и на кторое у меня пока нету времени -
1. как сделать форму MosTop но только для приложения? Или как жестко контролировать ZOrder в приложении?
Вложения
Тип файла: zip TestHighSlideProj.zip (789.1 Кб, 27 просмотров)

Последний раз редактировалось eagleoriginal; 28.06.2012 в 16:35.
eagleoriginal вне форума Ответить с цитированием
Старый 28.06.2012, 17:15   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Окно не является тяжелым ни в коем случае само по себе. Поскольку окно это только метафора отрисованой облсти в Графическом адаптере.
нее, там еще Z-order есть, и многое многое иное.

не путайте окно с формой.(к примеру если в вашем примере открыта только начальная форма, то я вижу 6 окон(форма+пять кнопок))

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

вы сами видите что пришлось городить ради этого.

а теперь к делу.
SetWindowPos посмотрите.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.06.2012, 17:25   #9
eagleoriginal
 
Регистрация: 26.06.2012
Сообщений: 8
По умолчанию

SetWindowPos - что с ним. Проблема в том, что за меня система меняет взаимное расположение окон.

Насчет тяжелых и простых. ОКОН.
То что каждая кракозябра это окно я в курсе. Каждая является слоем при отрисовке. Для видяшки, то это пылинка. Сами понимаете примитивное смешивание двух текстур. В софтверном варианте ничего не рисуется уже давно.
Поэтому сделав несколько слоев я не сильно усложнил работу системы.
Имея метафору я подазумевал, что на самом нижнем уровне лежит выделенный буфер в видяшке. И который будет потом наложен на Десктоп по правлам смешивания.
eagleoriginal вне форума Ответить с цитированием
Старый 28.06.2012, 17:31   #10
eagleoriginal
 
Регистрация: 26.06.2012
Сообщений: 8
По умолчанию

И кстати Пепел Феникса это серьезная проблема. Я применил модуль в приложении с фреймами. И они стали уходит назад за фремы при перемещении или растягивании Главного Окна.
Как не давать окну уходить окну назад и вообще менять свой ZOrder относительно своего Owner окна?
eagleoriginal вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эффект увеличения изображения dacorp JavaScript, Ajax 2 30.06.2011 15:00
статья - Эффект плавного затемнения Pblog Обсуждение статей 3 28.04.2011 15:50
Как мне в визуальном программировании написать программу увеличения масштаба и уменьшения до исчезновения Надежда.. Мультимедиа в Delphi 3 29.12.2008 19:28