(Сергею Орлику, если он вдруг сюда заглянет — не сердитесь )
Эта ветка создана для борьбы с "борландизмами" в интерфейсе.
Борландизмы — несущественные, но заметные отклонения от стандартов интерфейса Windows, вызванные применением библиотеки VCL.
Примечание: Кроме VCL-ных, нестандартно выглядят также приложения, основанные на кросс-платформенных библиотеках (GTK, Tcl, Java) — но это можно понять и невозможно исправить.
Сообщения в эту ветку желательно писать в формате "Название проблемы — Проблема — Решение".
Краткое содержание будущих серий:
Кнопки с картинками
MessageBox
Выбор директории
TTrackBar
...
Проблема:
В VCL нет диалога для выбора папки. Поэтому зачастую для решения этой задачи используют закладку с говорящим именем "Win3.1" и ваяют чего-нибудь такое:
В то время, как приличный диалог выбора папки Windows должен выглядеть так:
Решение:
Использовать функцию WinAPI SHBrowseForFolder.
Вопрос:
Как бы мне создать эдакий trackbar в котором вместо широкой белой полоски с ползунком была бы тонкая линия?
Ответ:
В примере создается компонент, унаследованный от TTrackbar который переопределяет метод CreateParams и убират флаг TBS_ENABLESELRANGE из Style. Константа TBS_ENABLESELRANGE обьявленна в модуле CommCtrl.
Пример:
uses CommCtrl, ComCtrls;
type TMyTrackBar = class(TTrackBar)
procedure CreateParams(var Params: TCreateParams); override;
end;
procedure TMyTrackBar.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style := Params.Style and not TBS_ENABLESELRANGE;
end;
var
MyTrackbar : TMyTrackbar;
procedure TForm1.Button1Click(Sender: TObject);
begin
MyTrackBar := TMyTrackbar.Create(Form1);
MyTrackbar.Parent := Form1;
MyTrackbar.Left := 100;
MyTrackbar.Top := 100;
MyTrackbar.Width := 150;
MyTrackbar.Height := 45;
MyTrackBar.Visible := true;
end;
Проблема:
MessageBox(Text, Caption, Flags) показывает диалог, который чуть-чуть отличается от стандартного — ровно настолько, чтобы пользователь ничего не заметил, но почувствовал легкий дискомфорт.
Сравните:
Борланд:
Windows:
(дело не в названиях кнопок)
Решение:
Использовать функцию WinAPI MessageBox(HWND, text, caption, type);
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Проблема: ЗХ>В VCL нет диалога для выбора папки. Поэтому зачастую для решения этой задачи используют закладку с говорящим именем "Win3.1" и ваяют
ЗХ>Решение: ЗХ>Использовать функцию WinAPI SHBrowseForFolder.
или SelectDirectory
Здравствуйте, softland, Вы писали:
S>Уточняющий вопрос. Вы считаете использовать картинки на кнопках неправильным вообще, или конкретно на Ok и Cancel?
imho: вообще, т.е. либо кнопка с картинкой, либо она с текстом, а и то и другое на одной кнопке — порнография
Здравствуйте, Odi$$ey, Вы писали:
OE>imho: вообще, т.е. либо кнопка с картинкой, либо она с текстом, а и то и другое на одной кнопке — порнография
Очень смелое и безальтернотивное утверждение
Если мы отвлечёмся от общеупотребимым приложений и следовательно от таких команд как "open", "send", а рассмотрим скажем программу для отображения каротажной информации при бурении скважины , то отсутствие подписей на кнопках делает время освоения программы существенно большим. Ссылки на то, что прикладные программы используются конкретным пользователем с утра до вечера и он очень быстро привыкает к конкретному интерфейсу, для меня не проходят, т.к. это лишь мнение. У меня совсем другой опыт, и многим моим пользователям приходится использовать сразу несколько программ. При этом перерыв в использовании может быть больше месяца, а этого хватит для забывания.
Может надо иметь возможность настройки стиля отображения кнопки, например как в IE.
Здравствуйте, softland, Вы писали:
S>Если мы отвлечёмся от общеупотребимым приложений и следовательно от таких команд как "open", "send", а рассмотрим скажем программу для отображения каротажной информации при бурении скважины , то отсутствие подписей на кнопках делает время освоения программы существенно большим.
Как альтернативу можно использовать кнопку с изображением и всплывающей текстовой подсказкой при наведении.
А скорость вспоминания интерфейса после перерыва... все зависит от изображений. Главное — правильно одобранная метафора
Здравствуйте, softland, Вы писали:
S>Здравствуйте, Odi$$ey, Вы писали:
OE>>imho: вообще, т.е. либо кнопка с картинкой, либо она с текстом, а и то и другое на одной кнопке — порнография S>Очень смелое и безальтернотивное утверждение S>Если мы отвлечёмся от общеупотребимым приложений и следовательно от таких команд как "open", "send", а рассмотрим скажем программу для отображения каротажной информации при бурении скважины , то отсутствие подписей на кнопках делает время освоения программы существенно большим. Ссылки на то, что прикладные программы используются конкретным пользователем с утра до вечера и он очень быстро привыкает к конкретному интерфейсу, для меня не проходят, т.к. это лишь мнение. У меня совсем другой опыт, и многим моим пользователям приходится использовать сразу несколько программ. При этом перерыв в использовании может быть больше месяца, а этого хватит для забывания. S>Может надо иметь возможность настройки стиля отображения кнопки, например как в IE.
Тут речь немного о другом, никто не говорит что тебе нужно использовать кнопки ТОЛЬКО с картинками, посмотри программы-монстры например офис, там все такие кнопки имеют только надписи, и это по моему правильно, а картинку нужно выводить только на тулбарах, и конечно с надписью, но и что бы надпись отключить можно, например когда пользователь уже сможет работать визуально, тем самым он сэкономит пространство на экране.
ЗЫ: А от бормалеевской кнопки закрыть(точнее от картинки) меня просто корежит, если такую увижу программу сразу деисталю, нечего им делать на моем компе.
Здравствуйте, Odi$$ey, Вы писали:
S>>Уточняющий вопрос. Вы считаете использовать картинки на кнопках неправильным вообще, или конкретно на Ok и Cancel?
OE>imho: вообще, т.е. либо кнопка с картинкой, либо она с текстом, а и то и другое на одной кнопке — порнография
... кроме использования таких кнопок на тулбаре!!!
Здравствуйте, softland, Вы писали:
S>Уточняющий вопрос. Вы считаете использовать картинки на кнопках неправильным вообще, или конкретно на Ok и Cancel?
Здравствуйте, retalik, Вы писали:
ЗХ>>Проблема: ЗХ>>Вот такие прелестные кнопочки: ЗХ>>- признак домашней самоделки.
R>А как насчет таких? R>
Ну, awicons — это вообще отдельная история; про его юзабилити (как плохих, так и хороших аспектах) можно книгу писать
Конкретный ответ на вопрос — мне эти картинки кажутся лишними. Не могу придумать им логического обоснования — и с эстетической точки зрения тоже не кажутся необходимым элементом.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Проблема: ЗХ>MessageBox(Text, Caption, Flags) показывает диалог, который чуть-чуть отличается от стандартного
Здравствуйте, wildwind, Вы писали:
ЗХ>>Проблема: ЗХ>>MessageBox(Text, Caption, Flags) показывает диалог, который чуть-чуть отличается от стандартного
W>Имеется в виду MessageDlg() ?
И он тоже. Когда я еще писал на Билдере, я использовал это:
[q] TApplication.MessageBox
Displays a specified message to the user.
function MessageBox(const Text, Caption: PChar; Flags: Longint = MB_OK): Integer;
Description
Use MessageBox to display a generic dialog box a message and one or more buttons. Caption is the caption of the dialog box and is optional.
[q]
но это однохренственно.
это мы, Зверьки!
FAQ — це мiй ай-кью!
Re[2]: Кнопки с картинками
От:
Аноним
Дата:
24.03.05 08:32
Оценка:
Здравствуйте, retalik, Вы писали:
R>Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>>Проблема: ЗХ>>Вот такие прелестные кнопочки: ЗХ>>- признак домашней самоделки.
R>А как насчет таких? R>
Ужасный интерфейс. Я бы купил, но из-за нестандартности не стану. Что мешало сделать стандартный SDI/MDI с хорошим оформлением?
Я знаю, что здесь этот продукт в почете. Что ж, кричу: "Король голый".
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Проблема: ЗХ>В VCL нет диалога для выбора папки. Поэтому зачастую для решения этой задачи используют закладку с говорящим именем "Win3.1" и ваяют чего-нибудь такое: ЗХ> ЗХ>В то время, как приличный диалог выбора папки Windows должен выглядеть так: ЗХ>
ЗХ>Решение: ЗХ>Использовать функцию WinAPI SHBrowseForFolder.
Гадкая функция, а окно — еще гаже. Лучше сделать самоделку — окно File Open приспособить для папок, как это сделано в студии.
Ребята, в натуре невозможно этим деревом пользоваться. Пусть МС засунет его своим дезигнерам обратно в одно место.