Элемент управления Delphi, который может имитировать «Дополнения | Список расширений» Firefox? - PullRequest
6 голосов
/ 04 февраля 2009

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

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

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

alt text

Ответы [ 5 ]

9 голосов
/ 05 февраля 2009

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

альтернативный текст http://img8.imageshack.us/img8/9585/imagen29ox3.png

7 голосов
/ 05 февраля 2009

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

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

3 голосов
/ 04 февраля 2009

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

2 голосов
/ 05 февраля 2009

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

2 голосов
/ 05 февраля 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...