134 / 133 / 22
Регистрация: 29.08.2012
Сообщений: 353
|
||||||
1 | ||||||
Изменение размера формы fsNone24.05.2013, 23:12. Показов 2297. Ответов 10
Метки нет (Все метки)
Доброго времени суток.
Уважаемые, помогите решить задачку. пытаюсь реализовать по своему интерфейс аля фотошоп с отклеивающимися панелями(в моем случае фрэймы), сам процесс отклеивания реализовал через отдельную форму(все фрэймы расположены на главной форме, в случае "отклеивания" для каждой есть отдельная пустая форма, formstyle=fsNone, заголовок и "системные кнопки" отрисованы через панель со скинами, непосредственно на фрэйме), перемещение формы за панель честно спер в интернетах, а вот изминение размеров этой формы сделать не могу, пока в общем случае пытаюсь "придумать сам", через mouse(Down|Move|Up) при таком вот коде:
а также подскажите пожалуйста по вытекающему вопросу, как реализовать "рамку формы", чтобы она отрисовывалась при изминении размера, если размеры назначать непосредственно форме - сильно мерцает. заранее благодарен.
0
|
24.05.2013, 23:12 | |
Ответы с готовыми решениями:
10
Изменение размера формы Изменение размера формы Изменение размера формы Изменение размера формы |
134 / 133 / 22
Регистрация: 29.08.2012
Сообщений: 353
|
|
25.05.2013, 11:37 [ТС] | 2 |
Добавил исходник на чистом проекте, и я перепутал у формы BorderStyle=bsNone
0
|
Супер-модератор
|
|
25.05.2013, 12:05 | 3 |
Почему выбран TFrame, а не TForm, которой можно сделать Dock/UnDock, и с которой всё делается гораздо проще?
А уж если положить на главную форму TDockTabSet, то вообще получается вот такая история: Вытягиваешь за заголовок:
1
|
134 / 133 / 22
Регистрация: 29.08.2012
Сообщений: 353
|
||||||
25.05.2013, 12:22 [ТС] | 4 | |||||
я пробовал с формами, у меня постоянно наровят вылезти артефакты в виде заголовка формы, решается путем ручной отрисовки как и сейчас с фрэймом, при отстыковке выхватывал эксепшены, сейчас уже не вспомню какие, но побороть не смог, стыковал так
0
|
Супер-модератор
|
|
25.05.2013, 12:30 | 5 |
Вот ты и получил "приятнее" в виде изменения размера фрейма
Как хочешь, я всегда делаю с формами, если и вылазят артефакты - то только по моей собственной вине, пишешь правильно - они пропадают... Доставляй себе "приятное" дальше. Это не последнее, с чем у тебя будут проблемы на фреймах. Добавлено через 2 минуты А AlphaSkins тут вообще ни к селу ни к городу, у тебя ж новая версия Дельфи? Project->Options->Application->Appearance зайди...
0
|
134 / 133 / 22
Регистрация: 29.08.2012
Сообщений: 353
|
|
25.05.2013, 12:47 [ТС] | 6 |
А вот слона то я и не заметил, спасибо, пойду читать.
Добавлено через 1 минуту 2009, нет Appearance
0
|
134 / 133 / 22
Регистрация: 29.08.2012
Сообщений: 353
|
||||||
29.05.2013, 00:40 [ТС] | 7 | |||||
UI, если не сложно, подскажи пожалуйста по DockTabSet, в инете не могу ничего путного найти, пытаюсь разобраться, но не все получается, вот мой код:
Кликните здесь для просмотра всего текста
на первой форме стот панель(Panel3), на ней DockTabSet2(alTop), под ней, там же на панели 3 - Panel2(alClient, она же DestinationDockSite) у меня следующие неприятности: 1 перемещение формы как-то очень сильно тормозит, DoubleBuffered не помогает. 2 как правильно отобразить содержимое таба, при стыковке форма сворачивается в таб, а вот как развернуть програмно не понимаю 3 мелочи, впринципе видимо где то забыл свернуть панель, и сам разобраться смогу, но переодически панель остается видимой.
0
|
Супер-модератор
|
|||||||||||||||||||||||||||||||
29.05.2013, 11:07 | 8 | ||||||||||||||||||||||||||||||
Сообщение было отмечено volvo как решение
Решение
Ev1l, значит, так... Рассказываю все по порядку, может, и еще кому пригодится...
Для начала - с основной формой, той, на которую будут пристыковываться другие. Кликните здесь для просмотра всего текста
1. Кладем на форму TDockTabSet, и две панели. Первая, которую я назвал DockPanel - это именно та панель, с которой будет работать TDockTabSet, то есть, на ней и будут отображаться пристыкованные формы. Вторая - названная DockPositionPanel - расположена на первой, и изначально невидима. У этой панели другая задача: она будет в момент протягивания формы над DockPanel показывать, как будет пристыковываться форма, сверху, снизу, слева или справа, поэтому ее цвет надо выставить в отличный от дефолтного, чтобы это было видно.
Разумеется, настраиваем компоненты: DockTabset.DestinationDockSite = DockPanel DockTabset.TabPosition = tpLeft DockTabset.Style = tsModernPopout DockTabset.Visible = false // Пока нет пристыкованных форм, нечего и показывать... 2. Стандартная обработка OnDockOver/OnDockDrop для DockPanel:
procedure TForm1.DockTabSet1TabAdded(Sender: TObject);
Теперь переходим ко второй форме, которую будем стыковать Кликните здесь для просмотра всего текста
1. Настраиваем
DragKind = dkDock DragMode = dmAutomatic 2. Для того, чтобы сделать красивое перемещение формы, воспользуемся специальным классом: TDragDockObjectEx. Унаследуемся от него, и переопределим некоторые методы на свой вкус:
Всё, получаем приятное глазу перетягивание/пристыковку формы. На всякий случай присоединил еще и проект (создан на XE2), если вдруг забыл здесь упомянуть о каком-то свойстве, и из-за этого программа будет работать не так, как ожидается - можно посмотреть в исходниках. P.S. У этого проекта осталась одна проблема: при отстыковке формы прямоугольник уходит влево, в не отображается там, где находится мышь. Чуть позже попробую избавиться от этого...
2
|
134 / 133 / 22
Регистрация: 29.08.2012
Сообщений: 353
|
|
29.05.2013, 11:30 [ТС] | 9 |
Огромное спасибо.
У меня остался только один вопрос по этой теме, как перехватить управление кнопкой "скрепка"(допустим, я хочу чтобы в таб сет она не пряталась, а сразу отстыковывалась на текущее положение, и возврашалась в исходноеное состояние /*кнопка в состояние прилеплена*/ когда снова пристыковывается на панель)?
0
|
134 / 133 / 22
Регистрация: 29.08.2012
Сообщений: 353
|
|
29.05.2013, 12:50 [ТС] | 11 |
Ясно, спасибо.
0
|
29.05.2013, 12:50 | |
29.05.2013, 12:50 | |
Помогаю со студенческими работами здесь
11
Изменение размера\положения кнопок при resize формы Изменение размера формы при переходе на другую вкладку Изменение размера формы под пространство занимаемое компонентами на ней. Изменение размера формы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |