2010-04-30 15 views
24

Te dni, każdy przyzwoity aplikacja Windows musi wykonać dobrze i wyglądać dobrze pod następującymi warunkami:W jaki sposób programiści radzą sobie z tak wieloma kombinacjami konfiguracji GUI?

  1. XP i Vista i Windows 7.
  2. 32 bit i 64 bit.
  3. Z motywami i bez.
  4. Z i bez Aero.
  5. Przy 96 i 120 i może niestandardowych DPI.
  6. Jeden lub więcej monitorów (ekranów).
  7. Każdy system operacyjny ma swoją preferowaną czcionkę.

O mój! Co jest mało prawdopodobnym programistą aplikacji do tworzenia aplikacji dla systemu Windows? :(

mam nadzieję dostać wątek rozpoczęty z sugestiami na temat sposobów radzenia sobie z tym GUI dylematu.

Po pierwsze, jestem w Delphi 7.
a) Czy Delphi 2010 przyniesie nic nowego do stołu, aby pomóc w tej sytuacji?
b) Czy powinniśmy wybrać zestaw części zamiennych i polegać na nich, aby rozwiązać wszystkie te problemy?
c) Czy powinniśmy iść z silnikiem do wybierania części zamiennych?
d) Być może lepszym wyjściem jest GUI o typie HTML. Czy możemy stworzyć relatywnie złożoną aplikację GUI z HTML, która nie wymaga korzystania z przeglądarki? (wolą zachować formowanie)
e) Czy powinniśmy po prostu zginąć i zakodować każdy z tych scenariuszy i przestać o tym mówić?
f) Na koniec, jak na świecie mamy sprawdzić wszystkie te warunki?

+0

Trudne pytanie! Czy zaćmienie nie ma idealnie przenośnego systemu? (Windows, Linux, Mac, każdy smak) Jestem coraz przed sobą, ale wydaje mi się, że pamiętam, że miał Java gui. Naprawdę nie jestem pewien co do mojej odpowiedzi, dlatego robię komentarz – Shawn

Odpowiedz

6

Na razie chciałbym odpowiedzieć tylko jedno pytanie:

f) stosowanie maszyn wirtualnych i (jeśli to możliwe) zautomatyzowanych testów. Wiem, że to duża robota, ale nigdy nie będziesz żałować.

0
  • Delphi 2010 wprowadza natywną obsługę standardu Unicode.
  • Delphi 2010 przynosi sterowanie Windows Vista/Seven.
  • Na chwilę obecną nie ma 64-bitowego kompilatora Delphi.
  • should'nt masz problem do obsługi dpi i liczyć monitora pytania z Delphi 7
+2

Delphi nie jest w stanie dobrze obsługiwać różnych czcionek systemowych i ustawień DPI, wykorzystuje układy oparte na pikselach i nie ma odpowiedniego menedżera układu. To także kody sztywne w plikach DFM. – mghie

+1

Oto prawdopodobnie rozwiązanie pytania dpi: http://www.gerixsoft.com/blog/delphi/large-fonts –

0

Delphi sprawia, że ​​dość łatwo, ale w końcu będziesz musiał uruchomić oprogramowanie na wszystkich wersjach Windows i sprawdzić wzrokowo że wszystko wygląda dobrze. Zautomatyzowane testy sprawdzają funkcjonalność, ale kosmetyki można sprawdzać tylko wizualnie.

+0

To tylko częściowo prawda: możesz tylko sprawdzić, czy układ jest OK, patrząc na niego, ale Kiedy podjąłeś tę decyzję, możesz użyć automatycznych testów, aby sprawdzić, czy obecny układ jest taki sam. Jeśli jest inaczej, możesz zostać zauważony i nadal możesz wyglądać, ale jeśli jest taki sam, nie musisz w ogóle na niego patrzeć. –

0

Delphi 2009 wprowadziło obsługę motywów (jest to ustawienie poziomu aplikacji). Kiedy uruchamiasz aplikację Delphi 2009 lub nowszą w systemie Vista/Windows 7, zmienia ona okna komunikatów na TaskDialogs, dzięki czemu uzyskasz kilka ulepszeń interfejsu użytkownika za darmo.

Mieliśmy trochę problemów z przeniesieniem do Delphi 2009 i Unicode, ale był to "techniczny dług", który musieliśmy zapłacić w pewnym momencie.

Mam nadzieję, że to pomoże.

+0

Delphi dodało obsługę motywów Windows w Delphi 7, która uległa poprawie w kolejnych wersjach. –

+0

Yeas, poprzez XPManifest, ale potem został wyjęty, a D2007 ma znacznie lepszy system. – Mmarquee

1

Ja też jestem skromnym programistą systemu Windows (D7) - o wiele bardziej zainteresowanym rozwiązywaniem problemów związanych z aplikacjami na rynku pionowym niż radzenie sobie z problemami M $.

Wykreśliłem komponent, aby poradzić sobie z tymi wszystkimi problemami, a także kilka innych.

O ile mi wiadomo, wszystkie utwory były w domenie publicznej i przyznałem je tam, gdzie było to możliwe.

Są pewne właściwości:

typu TAppEnvironment = class (TComponent)

prywatny

{ Private declarations } 

// zarządzanie środowiskiem

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 

// oblicz za pomocą produkt & motyw

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. 

A niektóre media:

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; 

Mam funkcji do wielkości każdy poprawnie formularz, korzystając FEnvTitleHeight itp

Wszystkie dumb ścieżki użytkownika są również generowane w zależności od wersji systemu Windows .

Nie mam pojęcia, jak zarządzać procesem, ale jeśli ludzie będą chcieli, wrzucę całą rzecz do puli - tak, aby mistrzowie mogli ją przerobić.

+0

Wygląda dobrze! Gdzie możemy go pobrać? – Mawg

+0

Gdzie jest dobre miejsce?Czy można po prostu publikować tekst - kawałki lub wszystkie naraz? Nadal muszę usunąć z niego kod zabezpieczający i naprawić komentarze. Później dzisiaj może. –

1

Doskonałe pytanie.

Pracuję nad aplikacją od ponad 10 lat, począwszy od Delphi 2, 3, a następnie 4, a następnie pozostając tam i czekając wiele lat to upgrade to Delphi 2009, ponieważ Unicode było koniecznością. Ponownie dokonam aktualizacji, gdy wyjdzie wersja 64-bitowa.

Tak więc uruchomiłem gamę systemów operacyjnych: Windows 98, Windows 2000, XP, Vista i teraz 7. Każdy zepsuje twój interfejs, ale Delphi jest całkiem niezły. W pewnym momencie musisz zdecydować, że nie możesz już obsługiwać starszych systemów i przechodzić do Unicode finally cut out Windows 98 z mojej obsługiwanej listy.

Ogólnie stwierdziłem, że Core Delphi zapewnia najlepszą obsługę interfejsu użytkownika. Niektóre pakiety stron trzecich mogą wydawać się, że zapewniają więcej, ale ich niespójności są gorszymi problemami niż mogą być ich korzyści. Zminimalizuj inne pakiety, gdzie możesz.

Jednym z celów interfejsu użytkownika, który miałem, jest przejście do programu logo systemu Windows Vista, a ostatnio do programu Windows 7 i Microsoft does provide a lot of information w sprawie standardów, które powinny odpowiadać warunkom od 1 do 7 w pytaniu. Ale zdobycie programu Delphi w celu użycia manifestu i przejścia przez obręcze Microsoftu było w końcu, nie warte wysiłku i kosztów, szczególnie, że mój niespełniający wymagań program działał dobrze na Vista i 7.

Prowadzenie mojego programu Uruchamianie i utrzymywanie interfejsu użytkownika wyglądającego tak samo w systemach Windows XP, Vista i 7, gdy pracuję na 64-bitowym komputerze z Vistą, oznacza, że ​​używam Microsoft Virtual Machine, kiedy zajdzie taka potrzeba. Powiedziano mi, że mój program działa również na Wine, więc to kolejna maszyna testowa.

Teraz odpowiadając na pytania:

a) Czy Delphi 2010 wnosi nic nowego do stołu, aby pomóc w tej sytuacji?

Tak. Każda wersja dodaje nowe składniki VCL, które zostały dodane do nowego systemu operacyjnego. na przykład Dodano nowe interfejsy systemu Windows 7.

b) Czy powinniśmy wybrać zestaw części zamiennych i polegać na nich, aby rozwiązać wszystkie te problemy ?, i c) Czy powinniśmy zastosować silnik do wybierania części zamiennych?

Jak już powiedziałem, myślę, że lepiej jest zrobić to w Delphi niż w pakiecie 3rd party.

d) Być może jest to bardziej gui typu html. Czy możemy stworzyć stosunkowo złożoną aplikację GUI z HTML-em, która nie wymaga przeglądarki? (wolą zachować formę)

Moja aplikacja jest jak procesor tekstu z tekstem sformatowanym. Przyjrzałem się pakietom edytora opartym na HTML i jest ich kilka, ale nie sądzę, że jest to sposób na zastosowanie aplikacji komputerowej. Jeśli chcesz korzystać z aplikacji internetowej, lepiej byłoby korzystać z .NET i Prism.

e) Czy powinniśmy po prostu zginąć i zakodować każdy z tych scenariuszy i przestać o tym mówić?

Najpierw zaktualizuj do Delphi 2010. Przekonasz się, że sam Delphi poradzi sobie w większości z tych sytuacji.

f) Na koniec, jak na świecie powinniśmy sprawdzić wszystkie te warunki?

Samodzielne wykonanie to duże zadanie, nawet w przypadku maszyn wirtualnych. Musisz mieć otwartą wersję beta i uzyskać dostęp do tylu różnych użytkowników w różnych środowiskach, aby przetestować swój program. Wówczas poradzisz sobie ze wszystkimi środowiskami, które są najważniejsze dla twoich użytkowników.

Teraz, jeśli uważasz, że uzyskanie kompatybilności interfejsu użytkownika w różnych środowiskach Windows jest trudne, poczekaj, aż Embarcadero pojawi się z wersją Delphi, która skompiluje się na Macu. Twoje obecne obawy UI będą wydawać się banalne w porównaniu do tego, czym się wtedy stanie.

1

Do skalowania formularzy w różnych rozdzielczościach/rozmiarach DPI: do tego używamy DevExpress LayoutControl. Zapewnia, że ​​formanty w formularzu są zawsze wyrównane, aby wykorzystać dostępną przestrzeń, bez względu na wszystko. I robi o wiele więcej. Spójrz na their site.

Powiązane problemy