Элемент управления Delphi, который может имитировать список дополнений | список расширений Firefox?

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

Я думаю, что хорошим современным подходом является то, как Firefox отображает установленные расширения (снимок ниже).

Мой вопрос о том, как легко создать такой графический интерфейс в Delphi (win32)? Используете ли вы какие-либо компоненты, имитирующие такое поведение, или мне просто нужно будет закодировать это с помощью панелей? (IMO очень громоздкая работа, которую я хотел бы избежать - логика выбора, изменение размеров и т.д...)

альтернативный текст


person utku_karatas    schedule 04.02.2009    source источник


Ответы (5)


Вы можете сделать что-то подобное (не совсем) со стандартными компонентами; TDBCtrlGrid, TSpeedButton,...

http://img8.imageshack.us/img8/9585/imagen29ox3.png

person Germán Estévez -Neftalí-    schedule 05.02.2009
comment
Изображение больше недоступно! - person Andriy M; 08.02.2014
comment
Извиняюсь. Он был на бесплатном сервере и срок его действия истек. Отмечу на следующий раз. :-( - person Germán Estévez -Neftalí-; 14.02.2014

Если вы используете Delphi 2007 или Delphi 2009, вы можете сделать что-то подобное, используя TCategoryButtons (со страницы палитры компонентов «Дополнительно»). Перетащите его в форму и щелкните правой кнопкой мыши, чтобы отобразить всплывающее меню, а затем нажмите «Редактор категорий…». Добавьте категорию с полученным диалоговым окном, установите его заголовок и, при необходимости, настройте содержащиеся в нем элементы. Не совсем то же самое, но это может сделать то, что вам нужно.

Вы также можете использовать диалог с TTreeView (если у вас есть категории объектов) или TListView для эмуляции диалога Delphi 2007 Projects->Options. Щелчок по элементу в TreeView или ListView отображает соответствующую страницу TPageControl для настройки объекта.

person Ken White    schedule 04.02.2009
comment
Спасибо, Цезарь. Наконец-то дошли руки настроить OpenID, чтобы я мог отвечать на вопросы здесь. ‹g› Иногда скрывался, но ненадолго. - person Ken White; 05.02.2009
comment
Это кажется жизнеспособным выбором в D2007 и выше. Хотя, к сожалению, у меня его нет. Спасибо. - person utku_karatas; 05.02.2009
comment
В будущем было бы неплохо указать, какую версию Delphi вы используете; это помогло бы людям узнать, какие решения могут быть приемлемыми. :-) - person Ken White; 05.02.2009

Использование TFrame для каждого элемента списка и размещение их всех с выровненным верхом в TScrollBox может сработать. Также см. TDBCtrlGrid, который делает что-то подобное в сочетании с наборами данных.

person Lars Truijens    schedule 04.02.2009
comment
Спасибо, Ларс, я пошел в том же направлении, что и Нефтали. - person utku_karatas; 05.02.2009

Я во многом согласен с Ларсом, но я бы использовал рамку для каждого элемента вместо панели. Это будет отдельный файл, и вы получите для него простую поддержку во время разработки.

person Vegar    schedule 04.02.2009

Это можно сделать с помощью существующих элементов управления Delphi.

Например, в элементе управления TCustomListBox вы можете создать собственное событие OnDrawItem для рисования собственного элемента списка. Вам также необходимо создать свой собственный OnMeasureItem, чтобы изменить высоту элемента.

В некоторых случаях это очень ограничено, поэтому, если вы хотите больше свободы, вам придется делать это с нуля.

person Drejc    schedule 04.02.2009
comment
Это именно то, чего я избегал :-) Спасибо! - person utku_karatas; 05.02.2009