antarey Опубликовано 3 апреля, 2014 Поделиться Опубликовано 3 апреля, 2014 (изменено) Помогите разобраться в вроде элементарной задаче. Для андроида хочу сделать меню. Есть 3Д форма - на ней 3 TLayer3D Layer3D1->Align = Left Layer3D2->Align = Client Layer3D3->Align = None На Layer3D2 поместил тулбар а на него уже спид бутон Вот код Layer3D3->Visible = ! Layer3D3->Visible; if (Layer3D3->Visible) { Layer3D2->SendToBack(); Layer3D3->BringToFront(); ListBox1->ApplyStyleLookup(); ListBox1->RealignContent(); } else { Layer3D3->SendToBack(); } Мое меню Layer3D3 с листбоксом появляется, но не могу нажимать на итемы если Layer3D2->Visible = false; то итемы нажимаются Что я не доделываю Project1.zip Изменено 4 апреля, 2014 пользователем Brovin Yaroslav Отформатировал код Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 4 апреля, 2014 Администраторы Поделиться Опубликовано 4 апреля, 2014 Рабочее решение, сбросить HitTest в False для слоев. Они перехватывают события. Для 3D объектов BringToFront и BringToBack не работают так, как вы ожидаете. Поскольку у 3D объектов это положение зависит от точки наблюдения. Вместо этого в вашем случае нужно использовать ось Z. Зачем для 2D интерфейса использовать 3D форму? Это не оправдано. Отмечу, что выбор использования 2D или 3D формы зависит от вашего варианта использования. Например: 2D форма. Когда преобладающая часть контролов - это 2D контролы. Чтобы использовать 3D объекты, используйте встроенные TViewPort3D. Если нужны 3D эффекты в редких случаях, то проще на момент создания эффекта добавить в корень формы TViewPort3D с TLayer3D, затем перенести туда все ваши контролы. выполнить эффекты и восстановить обратно. В этом случае не будет и проблем с нажатием в 3D форме. 3D форма. Все тоже, что и в 2D форме только со знаком минус. Andrey Efimov 1 Ссылка на комментарий
0 antarey Опубликовано 4 апреля, 2014 Автор Поделиться Опубликовано 4 апреля, 2014 как раз из за эффектов и выбирал 3д - у 2д нет возможности реализовать переворот по оси Y, я игрался со свойством RotationAngle.Y. Чтобы не нарушать правил скажите да или нет, если да то создам новую тему - есть возможность в 2д режиме реализовать переворот по оси Y без заморочек с TViewPort3D с TLayer3D? что-то мне кажется что будет мерцание в момент переноса контролов Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 4 апреля, 2014 Администраторы Поделиться Опубликовано 4 апреля, 2014 Посмотрите пример ControlsDemo, внизу есть кнопка, которая переводит интерфейс в 3D и крутит его. После возвращения переводит его обратно в 2D. Да и обратите внимание на отсутствие мерцания. Andrey Efimov 1 Ссылка на комментарий
0 antarey Опубликовано 4 апреля, 2014 Автор Поделиться Опубликовано 4 апреля, 2014 клас, спасибо Ссылка на комментарий
Вопрос
antarey
Помогите разобраться в вроде элементарной задаче. Для андроида хочу сделать меню.
Есть 3Д форма - на ней 3 TLayer3D
На Layer3D2 поместил тулбар а на него уже спид бутон
Вот код
Мое меню Layer3D3 с листбоксом появляется, но не могу нажимать на итемы
если
то итемы нажимаются
Что я не доделываю
Project1.zip
Изменено пользователем Brovin YaroslavОтформатировал код
Ссылка на комментарий
4 ответа на этот вопрос
Рекомендуемые сообщения