Как разработчики должны справляться с таким количеством комбинаций конфигурации GUI? - PullRequest
24 голосов
/ 01 мая 2010

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

  1. XP и Vista и Windows 7.
  2. 32 бит и 64 бит.
  3. С Темами и без.
  4. С и без Aero.
  5. При 96 и 120 и, возможно, пользовательских DPI.
  6. Один или несколько мониторов (экранов).
  7. У каждой ОС свой предпочтительный шрифт.

Боже мой! Что должен сделать скромный маленький разработчик приложений для Windows? (

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

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

Ответы [ 7 ]

6 голосов
/ 01 мая 2010

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

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

1 голос
/ 02 мая 2010

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

1 голос
/ 02 мая 2010

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

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

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

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

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

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

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

а) Delphi 2010 приносит что-то новое в таблицу, чтобы помочь в этой ситуации?

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

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

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

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

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

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

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

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

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

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

1 голос
/ 02 мая 2010

Я тоже являюсь скромным разработчиком 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

// рассчитать используя продукт и тему

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.

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

0 голосов
/ 02 мая 2010

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

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

0 голосов
/ 01 мая 2010

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

0 голосов
/ 01 мая 2010
  • Delphi 2010 предоставляет встроенную поддержку Unicode.
  • Delphi 2010 содержит элементы управления Windows Vista / Seven.
  • На данный момент нет 64-битного компилятора Delphi.
  • У вас не должно быть проблем с обработкой точек на дюйм и отслеживанием вопросов с помощью Delphi 7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...