Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1248515578
Palladin
2009-07-25 13:52
2009.09.27
Права группы на директорию, FreeBSD 7


2-1248408135
nomad000
2009-07-24 08:02
2009.09.27
выгрузить данные в xml


2-1248330602
JohnKorsh
2009-07-23 10:30
2009.09.27
Как средствами Dilphi создать точку восстановления?


15-1248903094
Petr V. Abramov
2009-07-30 01:31
2009.09.27
может, я старею? (:


15-1248820391
DillerXX
2009-07-29 02:33
2009.09.27
экспортировать плейлисты из библиотеки винампа





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский