определить элемент управления страницей как док-панель jvcl docserver.custom. Является ли это возможным?

введите здесь описание изображенияУ меня есть основная форма с левой панелью, а в центре формы у меня есть страница control.. и я пытаюсь пристыковать другие формы к элементу управления страницей, как я видел на примере, сделанном Алистером Кристи; дело в том, что перетаскивание форм в pagecontrol лениво; Я обнаружил, что док-сервер JVCL и док-клиент JVCL помогут мне в этом. Дело в том, что я хочу назначить управление страницами док-серверу JVCL в качестве пользовательской док-панели, но я не знаю, как это сделать: вот код, который я написал для события oncreate mainform

procedure Tform1.FormCreate(Sender: TObject);  
begin  
  jvdockserver1.CustomDockPanel := jvpagecontrol1;  
end;  

не могли бы вы мне помочь? Забыл упомянуть, что я новичок в программировании и использую Delphi XE2;


person Cristian Vasuica    schedule 27.03.2012    source источник
comment
здесь, в stackoverflow, есть еще несколько интересных вещей JvDocking: «уведомление delphi jvdockserver jvdockclient для отстыковки плавающего клика»> stackoverflow.com/questions/9068016/   -  person Warren P    schedule 27.03.2012


Ответы (1)


Серверный компонент JVCL Docking может принимать только PANEL в качестве места для стыковки, либо одну из встроенных, либо пользовательскую TPanel, которую вы помещаете в свою форму во время разработки. Однако библиотека Jedi Docking создаст для вас элементы управления страницей, если вы этого захотите. Тем не менее, это должен быть тот, кто управляет ими, потому что эти элементы управления могут быть перемещены (вы или какой-либо другой код jvdocking).

Итак, если вы хотите, чтобы некоторые вкладки были видны, вам не следует пытаться использовать свой собственный элемент управления страницей, вместо этого вы должны использовать демонстрацию Docking In Code в качестве примера, который поставляется с JVCL, в папке jvcl\examples\JvDocking\DockingInCode.

Вот как выглядят вкладки, которые система JvDocking создает для вас, используя CustomDockPanel, где настраиваемая док-панель прикрепляется к TPanel, а затем JvDocking автоматически «создает элемент управления страницей» для вас, когда вам это нужно:

введите здесь описание изображения

Обратите внимание, что страницы создаются или уничтожаются системой стыковки, а основная работа по управлению вкладками выполняется библиотекой JvDocking, а не вами.

Главное, что вам нужно сделать, это использовать этот код из MainFm.pas:

tabHost := ManualTabDock( ctrl, newDocFm1,  newDocFm2);
person Warren P    schedule 27.03.2012
comment
P-> во-первых, спасибо, Уоррен, за такой быстрый ответ: я снова загрузил примеры для док-библиотеки jvcl, и вот что: я скомпилировал проект выше в delphi xe2, и это то, что я получаю, когда я нажимаю кнопку tabdock : ManualTabDock: Ttabhost не создан. Ваш стиль стыковки может не поддерживать стыковку с вкладками. У вас есть еще одна хорошая док-библиотека, которая могла бы помочь мне сделать то же самое? - person Cristian Vasuica; 28.03.2012
comment
Стили стыковки, которые работают с Tab Dock, включены в Jedi VCL. Ваша проблема в том, что вы не добавили в форму компонент Docking Style. Вы можете прочитать документацию, если она у нас есть (ИЗВИНИТЕ! Там ее немного), но если вы будете следовать примерам и заметите, что стиль стыковки JvDockVIDStyle и различные другие поддерживают стыковку вкладок. Используйте демонстрацию стыковки в коде в качестве начального кода. Определенно это работает в XE2, я только что проверил это. - person Warren P; 25.04.2012
comment
П---› привет, Уоррен; я открыл проект из JvDocking под названием Docking_in_Code: все параметры на панели с выравниванием по левому краю (Sibling DOck, Cojoined Dock) работают, но когда я нажимаю Tab Dock, это сообщение, которое я получаю ManualTabDock: Ttabhost не создан. Ваш стиль стыковки может не поддерживать стыковку с вкладками — рисунок над вашим . возможно проблема может быть в следующем: у меня установлено только update2 для xe2; я должен установить update4 вместо этого? - person Cristian Vasuica; 25.04.2012
comment
Скорее всего, у вас есть недействительная или очень СТАРАЯ копия JVCL. ЕСЛИ НЕТ, то задайте новый вопрос. - person Warren P; 28.04.2012