2008-10-01 2 views
2

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

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

alt text http://xrw.bc.ca/download/so/q.gif

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

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

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

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

ответ

6

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

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

alt text http://17slon.com/krama/expand-mmx-1.png

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

alt text http://17slon.com/krama/expand-mmx-2.png

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

alt text http://17slon.com/krama/expand-mmx-3.png

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

0

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

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

+0

чем вы для вашего комментария. Я не пробовал TBitBtn. Я думаю, я должен больше поговорить с менеджером проекта и маркетингом. – 2008-10-01 23:06:58

1

У меня есть неприязнь к нетрадиционным решениям, подобным этому.

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

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

Удачи!

+0

Благодарим вас за ответ. я разделяю вашу озабоченность и рассматриваю дизайн, который я назвал «неприятным запахом». это те парни в маркетинге! ;-) – 2008-10-01 22:44:32

+0

@ Onnodb- Иногда речь идет о доступном пространстве экрана. Вы должны учитывать также пользователей с разрешениями 1024x768 пикселей. Для больших приложений с большим количеством элементов управления сложно разместить все кнопки, принадлежащие одному модулю/функциональности/разделу на экране. – Ampere 2015-01-13 14:54:20