Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.09.27;
Скачать: CL | DM;

Вниз

«Интерфейс пользователя» → 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;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.013 c
2-1248303203
Кошкин
2009-07-23 02:53
2009.09.27
Textout


15-1248562850
Художник
2009-07-26 03:00
2009.09.27
Помогите перевести код на паскаль


3-1227613048
samalex
2008-11-25 14:37
2009.09.27
Вытащить сообщение Exception IB в Delphi


1-1216112189
Трин
2008-07-15 12:56
2009.09.27
Нет эффекта от переключения раскладки


8-1197569017
NaRuTo
2007-12-13 21:03
2009.09.27
Мерцания на TImage