Подтвердить что ты не робот

Как разработчики справляются с таким количеством комбинаций конфигурации GUI?

В настоящее время любое достойное настольное приложение Windows должно хорошо работать и хорошо выглядеть при следующих условиях:

  • XP и Vista и Windows 7.
  • 32 бит и 64 бит.
  • С темами и без них.
  • С Aero и без него.
  • В 96 и 120 и, возможно, пользовательских DPI.
  • Один или несколько мониторов (экранов).
  • Каждая ОС имеет свой собственный предпочтительный шрифт.

О, мой! Что нужно сделать маленькому разработчику настольных приложений Windows?: (

Я надеюсь получить поток, начинающийся с предложений о том, как справиться с этой дилеммой GUI.

Во-первых, я на Delphi 7.
a) Вносит ли Delphi 2010 что-то новое в таблицу, чтобы помочь в этой ситуации?
б) Должны ли мы выбрать набор компонентов послепродажного обслуживания и полагаться на них для решения всех этих проблем?
c) Должны ли мы пойти с двигателем скин-машины после продажи?
d) Возможно, более удобным графическим интерфейсом в HTML-формате является путь. Можем ли мы сделать относительно сложное графическое приложение с HTML, которое не требует использования браузера? (предпочитайте держать форму на основе)
e) Должны ли мы просто свалиться и прописать каждый из этих сценариев и бросить курить? " f) И, наконец, как в мире мы должны протестировать все эти условия?

4b9b3361

Ответ 1

На данный момент я хотел бы ответить только на один вопрос:

f) Используйте виртуальные машины и (если возможно) автоматизированные тесты. Я знаю, что это большая работа, но вы никогда не пожалеете.

Ответ 2

Я тоже скромный разработчик Windows (D7), гораздо более заинтересованный в решении проблем с пользователями приложений с вертикальным рынком, чем справиться с недостатками M $.

Я собрал компонент, чтобы справиться со всеми этими проблемами, а также еще несколько.

Насколько я знаю, все части были в общественном достоянии, и я приписывал их там, где это возможно.

Вот некоторые из свойств:

тип TAppEnvironment = класс (TComponent)

частным

{ Private declarations }

//управление средой

FEnvError              : TEnvError;          // environment error code
FEnvErrorMsg           : string;             // environment error message
FEnvLocalComputerName  : string;             // name of the client computer
FEnvCurrentUserName    : string;             // logged-on user
FEnvCurrentUserAdmin   : Boolean;            // is logged-on user Admin?
FEnvProduct            : string;             // windows edition
FEnvProductFlavour     : string;             // windows flavour (Home/Pro)
FEnvBuildNumber        : string;             // windows build number
FEnvServicePack        : string;             // windows service pack
FEnvThemeActive        : Boolean;            // Windows Theme active

//calc с использованием продукта и темы

FEnvTitleHeight        : integer;            // window title height
FEnvMenuHeight         : integer;            // window menu height
FEnvStatusHeight       : integer;            // window status bar height
FEnvBorderHeight       : integer;            // window border height
FEnvMainHeight         : integer;            // main menu window height
FEnvMainWidth          : integer;            // main menu window width
FEnvHeightAdjust       : integer;            // window height adjust
FEnvWidthAdjust        : integer;            // window width adjust
FEnvLocalPath          : string;             // App exe home folder
FEnvAppFolderName      : string;             // application name less extension
FEnvAppFileVersionStr  : string;             // like 6.0.0.4567
FEnvAppFileVersion     : TFileVersion;       // HiVersion, LoVersion, etc.

И некоторые утилиты:

function EnvironmentReady : TEnvError;
function GetLocalComputerName : string;             // network needs this
function GetAppFolderName : string;
function BuildNumber : Integer;
procedure GetFileInfo(const AFileName: string; var RFileInfo: TFileInfo);
function GetLocalPath : string;
procedure getEnvWindowAdjust(bar : TStatusBar);
function setAppFileVersionStr : string;
function GetFileTime(const FileName: string): LongInt;
function initEnvironment : Boolean;
function exitEnvironment : Boolean;
function AlreadyRunning : Boolean;
function specialBuild : Boolean;

У меня есть функция для правильной сортировки каждой формы, используя FEnvTitleHeight и т.д.

Все немые пути пользователя также генерируются в зависимости от версии Windows.

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

Ответ 3

Отличный вопрос.

Я разрабатываю свое приложение уже более 10 лет, начиная с Delphi 2, 3, а затем 4, а затем остаюсь там и жду много лет для перехода на Delphi 2009 потому что Unicode был обязательным. Я снова обновляюсь, когда выйдет 64-разрядная версия.

Итак, я запустил гамму операционных систем: Windows 98, Windows 2000, XP, Vista и теперь 7. Каждый из них немного нарушает ваш пользовательский интерфейс, но Delphi очень хорошо разбирается в этом. В какой-то момент вы должны решить, что больше не сможете поддерживать более старую ОС и перейдете в Unicode наконец, вырезать Windows 98 из моего поддерживаемого списка.

Как правило, я обнаружил, что основной Delphi дает вам лучшую поддержку пользовательского интерфейса. Возможно, некоторые пакеты сторонних поставщиков предоставляют больше, но их несоответствия представляют собой более сложные проблемы, чем их преимущества. Минимизируйте другие пакеты, где вы можете.

Единственная цель, с которой я столкнулся, - это перейти на программу Windows Vista Logo, а в последнее время - программу Windows 7, а Microsoft предоставляет много информации о том, какими должны быть стандарты, которые связывают ваши условия с 1 по 7 в вашем вопросе. Но получить программу Delphi для использования манифеста и пройти через обручи Microsoft было, в конце концов, не стоило хлопот и стоимости для меня, тем более, что моя несовместимая программа отлично работала на Vista и 7.

Сохранение моей программы и поддержание того же интерфейса в Windows XP, Vista и 7 при разработке на 64-битной машине Vista означает, что я использую Microsoft Virtual Machine, когда мне это нужно. Мне сказали, что моя программа также работает над Wine, так что другая тестовая машина.

Теперь отвечая на ваши вопросы:

a) Помогает ли Delphi 2010 что-нибудь новое в этой таблице?

Да. Каждая версия добавляет новые компоненты VCL, которые были добавлены в новую ОС. например Добавлен новый пользовательский интерфейс Windows 7.

b) Должны ли мы выбрать набор компонентов послепродажного обслуживания и полагаться на них, чтобы решить все эти проблемы?, и c) Должны ли мы пойти с движком скинов послепродажного обслуживания?

Как я уже говорил выше, я думаю, что лучше сделать это в Delphi, чем в стороннем пакете.

d) Возможно, больше GUI типа html - путь. Можем ли мы сделать относительно сложное приложение gui с html, которое не требует использования браузера? (предпочитайте держать его на основе формы)

Мое приложение похоже на текстовый процессор с богатым текстом. Я посмотрел на набор редакторов на основе HTML, и есть несколько, но я не думаю, что это способ пойти на настольное приложение. Если вы хотите использовать веб-приложение, вам будет лучше работать с .NET и Prism.

e) Должны ли мы просто свалиться и прописать каждый из этих сценариев и отказаться от этого?

Сначала перейдите на Delphi 2010. Вы обнаружите, что Delphi сама справится с большинством этих ситуаций.

f) И, наконец, как в мире мы должны протестировать все эти условия?

Выполнение этого - большая задача, даже с виртуальными машинами. Что вам нужно сделать, так это открыть бета-версию и получить столько разных пользователей в разных средах, чтобы протестировать вашу программу для вас. Затем вы будете обрабатывать все среды, которые наиболее важны для ваших пользователей.

Теперь, если вы считаете, что совместимость пользовательского интерфейса в разных средах Windows жесткая, просто подождите, пока Embarcadero не придумает свою версию Delphi, которая будет компилироваться для Mac. Ваш текущий пользовательский интерфейс будет казаться тривиальным по сравнению с тем, чем он станет.

Ответ 4

Для масштабирования форм на нескольких разрешениях/размерах DPI: для этого используется DevExpress LayoutControl. Он гарантирует, что элементы управления в вашей форме всегда будут соответствовать используемому пространству, несмотря ни на что. И это намного больше. Посмотрите их сайт.

Ответ 5

  • Delphi 2010 поддерживает поддержку Unicode.
  • Delphi 2010 содержит элементы управления Windows Vista/Seven.
  • На данный момент нет 64-битного компилятора Delphi.
  • У вас не должно возникнуть проблемы с обработкой dpi и отслеживанием вопросов с Delphi 7

Ответ 6

Delphi делает это довольно легко, но в итоге вы будете запускать свое программное обеспечение на всех версиях Windows и визуально проверить, что все выглядит нормально. Автоматический тест отлично подходит для тестирования функциональности, но косметика может быть проверена только визуально.

Ответ 7

Delphi 2009 предоставил поддержку для тематики (это настройка уровня приложения). Когда вы запускаете приложение Delphi 2009 или выше в Vista/Windows 7, оно меняет окна сообщений на TaskDialogs, поэтому вы можете бесплатно получить некоторые улучшения пользовательского интерфейса.

Мы немного потрудились в Delphi 2009 и Unicode, но это был "технический долг", который нам пришлось заплатить в какой-то момент.

Надеюсь, что это поможет.