Форум: "Прочее";
Текущий архив: 2009.09.27;
Скачать: [xml.tar.bz2];
Вниз«Интерфейс пользователя» → TEdit вместо TLabel Найти похожие ветки
← →
Kolan © (2009-07-25 18:47) [0]Не так давно я предлагал создать конференцию «Интерфейс пользователя», в которой можно было бы обсудить вопросы создания замечательных интерфейсов в Делфи. Так вот, я всё еще хочу.
Попадали ли вы в ситуацию, когда вам нужно отправить, скажем, по почте
текст стандартного сообщения об ошибки (эксепшена)? Иногда это бывает нужно.
Что при этом происходило? — Лично я в подобной ситуации с матом (обязательно)
открывал блокнот, размещал его на мониторе так, чтобы он не закрывал
окно с сообщением об ошибке, набирал её текст в блокноте, а потом
вставлял его в письмо. А все потому, что его нельзя было выделить
мышкой и скопировать.
Если задуматься — проблема гораздо глубже. В действительности,
большая часть текстовой информации в стандартных виндоус-приложениях
недоступна для копирования.
Возьмем, к примеру, форму с данными о должнике из программы «Менеджер кредитов»
— http://www.ksoftware.ru/wiki/_media/images/kcreditsmanager/newdebtor.png
Эту форму можно назвать весьма стандартной, обычной. Небольшая подсказка
вверху, несколько полей с подписями, поясняющими их значение, кнопка,
вот собственно и все.
За много лет все настолько привыкли к тому, что текст в обычном виндоус-приложении
нельзя скопировать, что это кажется нормальным. Что же тут нормального?
— Абсолютно ничего — это идиотизм. Если я вдруг захочу заметить автору
Менеджера кредитов, что у него в предложении «Поля отмеченые звёздочкой (*)
обязательны к заполнению.» не хватает запятой и буквы «н», мне придется
набрать её вручную — это не может не раздражать.
Напрашивается вопрос: почему нельзя сделать так, чтобы текст можно было копировать,
в вебе же это возможно? — Я и сам не знаю. Положительно, я не вижу ни
одной веской причины, которая бы помешала сделать любой интерфейсный
текст выделяемым и копируемым. Возможно раньше, очень-очень-очень давно
это позволяло сэкономить некоторое количество ресурсов; сейчас эта экономия смешна.
Вывод: везде, где это уместно, следует делать интерфейсную текстовую информацию
доступной для выделения и копирования.
Как достичь этого в Делфи? — Очень просто — не используйте компонент TLabel.
Вместо него лучше взять TEdit или TMemo (если строк несколько) и настроить его следующим образом:Color: clBtnFace
BorderStyle: bsNone
ReadOnly: True
У вас получится элемент, который для пользователя будет выглядеть как обычный
TLabel, но текст можно будет выделить и скопировать.
P. S.
#@!, ну почему в инспекторе объектов Делфи нельзя скопировать название
свойства, пришлось набрать Color, BorderStyle и ReadOnly руками.
← →
Юрий Зотов © (2009-07-25 18:51) [1]> Вместо него лучше взять TEdit или TMemo
А еще лучше - TStaticText.
← →
Sergey Masloff (2009-07-25 19:12) [2]Kolan © (25.07.09 18:47)
>Попадали ли вы в ситуацию, когда вам нужно отправить, скажем, по почте
>текст стандартного сообщения об ошибки (эксепшена)? Иногда это бывает >нужно.
>Что при этом происходило? — Лично я в подобной ситуации с матом
А лично я без мата беру и копирую средствами ОС.
Ctrl+Shift+C или Ctrl+C + правая кнопка мышки на диалоговом окне
Дальше извини не читал - лень...
← →
Sergey Masloff (2009-07-25 19:13) [3]Допустим набрать в Notepad текст и попытаться закрыть. Появится стандартный диалог. Делаем что я сказал и получаем
---------------------------
Notepad
---------------------------
The text in the Untitled file has changed.
Do you want to save the changes?
---------------------------
Yes No Cancel
---------------------------
← →
turbouser © (2009-07-25 19:19) [4]
> Sergey Masloff (25.07.09 19:13) [3]
ОГО!!
Такая полезная фишка! Почему я раньше не знал...
Спасибо!
← →
vrem (2009-07-25 19:48) [5]Sergey Masloff
надо же) а откуда это выяснилось?
← →
Inovet © (2009-07-25 20:03) [6]> [5] vrem (25.07.09 19:48)
> Sergey Masloff
> надо же) а откуда это выяснилось?
Да где-то в хелпе было. То что в MessageBox копируется так. Вот автор хочет всю информацию снять из диалога, ну тут уже Alt+PrnScrn есть и с картинками будет.
← →
topS (2009-07-25 20:04) [7]
> Не так давно я предлагал создать конференцию «Интерфейс
> пользователя», в которой можно было бы обсудить вопросы
> создания замечательных интерфейсов в Делфи. Так вот, я всё
> еще хочу.
хоти
а мы здесь с какого боку?
← →
Kolan © (2009-07-25 22:26) [8]Sergey Masloff, круто, я тоже не знал про то, что стандартный диалог можно скопировать, однако если бы вы прочли дальше, то поняли бы, что ваше средство не универсально, так как не работает в не стандартных диалогах.
← →
DVM © (2009-07-25 22:33) [9]
> о поняли бы, что ваше средство не универсально, так как
> не работает в не стандартных диалогах.
Кто мешает в нестандртном (читай своем) диалоге добавить свою такую же функцию.
← →
Kolan © (2009-07-25 23:22) [10]DVM, есть как минимум две веские причины не делать такую функцию копирования в буфер.
1. Такая функция будет невидимой. Последствие этого просты и видны прямо в этой ветки. Двое из восьми комментаторов не знали оCtrl+Shift+C
в стандартных диалогах, причем и я и turbouser, судя по возрасту, работали со всеми популярными версиями Виндоус. Более 15 лет эта функция была мне неизвестна.
2. Реализовать такую функцию для любой формы будет не так-то просто. В случае диалога решения кажется тривиальным, а что делать со сложными формами. Как, например, будет выглядеть скопированная в буфер информация для главной формы Менеджера кредитов (http://www.ksoftware.ru/wiki/_media/images/kcreditsmanager/mainform.png)? Да и писать такую функцию для каждой формы — весьма нудное дело.
← →
DVM © (2009-07-25 23:28) [11]
> Kolan ©
> 1. Такая функция будет невидимой.
Можно сделать видимой в виде кнопки, правда это черезчур и некрасиво.
Описать в справке, причем описать хорошо и сделать в справке отдельный раздел Тех поддержка или что-то в этом духе.
> Более 15 лет эта функция была мне неизвестна.
Мне тоже она стала известна может год назад. Когда узнал очень удивился.
> 2. Реализовать такую функцию для любой формы будет не так-
> то просто. В случае диалога решения кажется тривиальным,
> а что делать со сложными формами.
А ты думаешь юзер будет кропотливо копировать содержимое каждого лабеля руками?
← →
Игорь Шевченко © (2009-07-25 23:38) [12]Kolan © (25.07.09 23:22) [10]
Кругозор расширять - оно вообще рулез
← →
turbouser © (2009-07-25 23:49) [13]
> Kolan © (25.07.09 23:22) [10]
> 1. Такая функция будет невидимой
Без проблем можно сделать "видимой".
1) Добавить в sysmenu
2) Добавить маааленькую кнопку на сам диалог
3)...
← →
turbouser © (2009-07-25 23:51) [14]
> Kolan © (25.07.09 23:22) [10]
> 2. Реализовать такую функцию для любой формы будет не так-
> то просто.
Можно сделать свою форму с каким-то базовым функционалом и остальные в проекте наследовать от нее..
← →
turbouser © (2009-07-25 23:54) [15]И все-таки > создать конференцию «Интерфейс пользователя»
было бы весьма не дурственно
← →
Kolan © (2009-07-25 23:57) [16]DVM, если функция описана только в справке — верный признак того, что она невидима :) А вот предложение с кнопкой не так уж плохо, но как быть с пунктом 2? Еще недостаток кнопки в том, что её придется везде вставлять вручную.
← →
Kolan © (2009-07-25 23:59) [17]turbouser, а что за базовый функционал будет в этой форме?
← →
DVM © (2009-07-26 00:00) [18]
> Еще недостаток кнопки в том, что её придется везде вставлять
> вручную.
Если наследоваться от базовой формы. то не придется.
← →
turbouser © (2009-07-26 00:00) [19]
> Kolan © (25.07.09 23:59) [17]
Любой :) Та же кнопка..
← →
Kolan © (2009-07-26 00:04) [20]turbouser, я имел в виду что будет «в кнопке» и как она будет называться, кстати?
← →
DVM © (2009-07-26 00:05) [21]На мой взгляд, присутствие "левой кнопки" в окне некрасиво. Очень сложно будет сделать надпись на ней или пиктограмму с объяснением того, что она делает.
← →
DVM © (2009-07-26 00:05) [22]
> и как она будет называться, кстати?
SOS
← →
turbouser © (2009-07-26 00:06) [23]
> Kolan © (26.07.09 00:04) [20]
> turbouser, я имел в виду что будет «в кнопке» и как она
> будет называться, кстати?
Ну как что.. Что угодно.. Например копирование текста со всех всех лейблов и
едитов... Называться? Без разницы :)
← →
turbouser © (2009-07-26 00:08) [24]
> DVM © (26.07.09 00:05) [21]
Можно сделать кнопку невидимой и отображать при наведении мышки в правый верхний угол, например. Да много чего можно придумать...
← →
turbouser © (2009-07-26 00:10) [25]Да и кнопка не обязана бросаться в глаза.. вполне достаточно будет сделать маааленькую красную кнопочку. Или сделать маленькую треугольную а-ля RSS
← →
DVM © (2009-07-26 00:10) [26]
> turbouser ©
> и отображать при наведении мышки в правый верхний угол,
> например
Пасхальное яйцо какое то получится :)
← →
turbouser © (2009-07-26 00:12) [27]
> DVM © (26.07.09 00:10) [26]
Да как угодно можно сделать :) Если в справке к софту указать, что "если сделать так и так - то будет от так" - нет проблем..
← →
Kolan © (2009-07-26 00:14) [28]Тому кто будет реализовывать разница есть. «Скопировать текст со всех всех лейблов и едитов» — длинновато, да и не понятно почему в копию должны попадать эдиты, и наоборот, почему не должны.
← →
DVM © (2009-07-26 00:17) [29]
> Kolan ©
Чем дальше. тем я все меньше понимаю зачем это надо и причем тут навороченные окна с таблицами и т.д. Вы такими окнами с гридами эксепшены отображаете? MessageBox оно отолично копируется, а большего для вывода ошиьки и не надо. Ну или сделать одно единственное свое окно для вывода сообщений об ошибках и там сделать кнопку большую красную отправить текст сообщения в буфер обмена.
← →
Kolan © (2009-07-26 00:17) [30]«Если в справке к софту указать, что "если сделать так и так - то будет от так" - нет проблем..», — странно что вы про
Ctrl+Shift+C
в справке же написано, или (вспомнился советский мультик про полцарства: «или не веришь?») вы справку не читали?
← →
Inovet © (2009-07-26 00:18) [31]> [22] DVM © (26.07.09 00:05)
>
> > и как она будет называться, кстати?
>
> SOS
Жопа, пиктограмма такая. Если серьёзно, то, глядя на других уважаемых производителей софта, её не надо делать.
← →
Kolan © (2009-07-26 00:19) [32]Я, DVM, пытаюсь подвести вас к мысли что кнопка — плохое решение и текст должен выделяться любой без всяких ухищрений, к тому же в вебе к этому все давно привыкли и диссонанса не возникнет.
← →
turbouser © (2009-07-26 00:21) [33]
> Kolan © (26.07.09 00:14) [28]
> Тому кто будет реализовывать разница есть.
Мда...
Как сделать - так и будет...
При чем тут
> «Скопировать текст со всех всех лейблов и едитов» — длинновато
?
Я ведь для примера привел "функциональность"
← →
DVM © (2009-07-26 00:24) [34]
> и текст должен выделяться любой без всяких ухищрений
Ну так никто ж не против. Более того так многие и делают. Я например. Или вон MS во многих ее окнах, например "свойства системы - имя компьютера" текст копируется. Не абсолютно любой, а тот который вероятно иногда нужно копировать.
← →
turbouser © (2009-07-26 00:24) [35]
> Kolan © (26.07.09 00:17) [30]
В справке... Не надо сравнивать справку с сотнями топиков и справку с дай бог десятком топиков...
← →
turbouser © (2009-07-26 00:26) [36]
> Kolan © (26.07.09 00:19) [32]
>
> Я, DVM, пытаюсь подвести вас к мысли что кнопка — плохое
> решение и текст должен выделяться любой без всяких ухищрений
Никто не мешает сделать так..Делайте.. Однако пострадает внешний вид.
← →
DVM © (2009-07-26 00:28) [37]
> Однако пострадает внешний вид.
О чего он пострадает то?
← →
turbouser © (2009-07-26 00:31) [38]
> DVM © (26.07.09 00:28) [37]
Курсор будет принимать другой вид при наведении... выделение текста в там, где юзер не привык...
← →
turbouser © (2009-07-26 00:32) [39]Мелочи, конечно... но...
← →
Германн © (2009-07-26 00:41) [40]
>
> У вас получится элемент, который для пользователя будет
> выглядеть как обычный
> TLabel, но текст можно будет выделить и скопировать.
>
Но весьма непривычный для пользователя.
> Попадали ли вы в ситуацию, когда вам нужно отправить, скажем,
> по почте
> текст стандартного сообщения об ошибки (эксепшена)?
Попадал. Именно поэтому убедил директора купить EurekaLog для наших программистов.
> Кругозор расширять - оно вообще рулез
+1 (и +1 в периоде)
А сколько в IDE Delphi есть "горячих сочетаний клавиш", которые ты знаешь? А уж сколько таких сочетаний не знаю я, так это просто огромное количество.
Страницы: 1 2 3 вся ветка
Форум: "Прочее";
Текущий архив: 2009.09.27;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.005 c