Ищу способ иметь "кнопку наведения", чтобы расширить раздел - PullRequest
2 голосов
/ 01 октября 2008

У меня есть панель управления потоками, в которую я добавляю дополнительные элементы во время выполнения, в зависимости от того, решили ли они показать все элементы. это все работает отлично; расширение контролируется кнопкой панели инструментов.

Беда в том, что мы хотим, чтобы пользователь мог навести курсор мыши на знак "+", чтобы развернуть раздел.

alt text

Первоначально я посмотрел на TSpeedButton (OnMouseEnter), но даже когда он "плоский", прямоугольник фокусировки все еще отображается, и поэтому глиф не центрируется. Основная проблема этого решения - его внешний вид.

тогда я посмотрел на создание потомка TImage. это немного "нетрадиционно", но это сработало бы. в OnMouseEnter или OnClick он будет переключать внутренний логический флаг «Расширенный», а затем загружать соответствующее изображение из ресурса. мне не нравятся нетрадиционные решения, подобные этому.

Мне нужно добавить его на несколько разных экранов, так что, вероятно, для меня целесообразно иметь / создавать компонент для этого. У меня есть JVCL, но я не вижу ничего подходящего.

спасибо за ваши комментарии / помощь!

Ответы [ 3 ]

6 голосов
/ 02 октября 2008

Мне всегда нравился подход, используемый ModelMaker Code Explorer .

Например, когда вы добавляете новый метод, некоторые редко используемые материалы отображаются свернутыми («Опции и директивы» на рисунке ниже).

alt text
(источник: 17slon.com )

Когда вы наводите курсор на текст, вы замечаете, что это на самом деле плоская кнопка. (За исключением того, что это не так - я полагаю, что Геррит делает здесь какую-то магию рисования).

alt text
(источник: 17slon.com )

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

alt text
(источник: 17slon.com )

Состояние этой кнопки переключения сохраняется между сессиями. Таким образом, даже если вы перезапустите Delphi, в следующий раз вы вызовете «Добавить метод», панель «Параметры и директивы» будет отображаться точно так же, как вы оставили ее в последний раз.

1 голос
/ 02 октября 2008

Мне не нравятся нетрадиционные решения, подобные этому.

За последние несколько лет я стал несколько подозрительнее относиться к нетрадиционным UI решениям, которые вы, похоже, создаете здесь. Почему бы просто не использовать кнопку, которую пользователь должен нажать ? Похоже, это гораздо чаще встречается в программном обеспечении, которое я использую, будь то MS Office или утилиты программирования. Кроме того, я бы сделал кнопку несколько больше: на скриншоте действительно кажется крошечной мелочью, на которую нужно навести курсор мыши. О, хорошо, и если я призываю вас посоветовать, что вы все равно не просили, почему бы не дать ему ">>" в качестве заголовка вместо "+"? И если вы добавите текстовую подпись с мнемоникой, это будет фактически доступно с клавиатуры. Все это должно сделать ваш интерфейс лучше и понятнее. Я думаю.

Я прошу прощения за то, что не ответил на ваш вопрос, но я надеюсь, что вы потратите 2 минуты, думая, действительно ли ваши пользователи предпочтут это решение: -)

Удачи!

0 голосов
/ 02 октября 2008

На самом деле, я думаю, что использовать TImage в этой ситуации довольно условно. Я видел, как многие люди предлагали использовать TImage, когда ни TButton, ни кто-либо из его партнеров не имели должного контроля над тем, что пытался сделать разработчик.

Вы пробовали TBitBtn? Я думаю, что когда вы избавляетесь от текста, он центрирует любое изображение, с которым вы его связали. Я только что проверил в Delphi 6, все, что я установил на этом компьютере, и у него было событие MouseMove.

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