윈도우 스토어

RAD 스튜디오 10.3 리오에 추가된 TWindowsStore 컴포넌트를 통해 윈도우 스토어에 등록한 응용 프로그램에서 사용 가능한 추가 기능(Add-on) 목록, 구입한 목록, 트라이얼 모드 처리 등의 기능을 개발할 수 있습니다.

 

TWindowsStore 컴포넌트는 윈도우 플랫폼만 지원하며, VCL과 FireMonkey 프레임워크를 모두 지원합니다.

 

다음 간단한 샘플코드로 기능을 확인해 보세요.

 

사용자가 소유한 응용 프로그램과 애드온 확인

procedure TStoreForm.lbInfoClick(Sender: TObject);
var
  LMsg: string;
const
  //These consts mirrors the name of the Add-Ons ad defined
  //in the MS Windows Store. Using this approach you can “Ask” to the
  //store what the current user has bought.
  //The current user is indentified automatically because the
  //app has been downloaded from the store.
  HENRYFORDQUOTES = 'henryfordquotes';
  SAVETOFILE = 'savetofile';
  SAVEASFAVOURITE = 'saveasfavourite';
begin
  LMsg := '**You current situation**' + sLineBreak;
  LMsg := LMsg + 'You ' + IfThen(WindowsStore1.UserHasBought(HENRYFORDQUOTES),
    'have bought', 'don''t have bought') +
    ' the great Henry Ford aphorisms archive.' + sLineBreak;
  LMsg := LMsg + 'You ' + IfThen(WindowsStore1.UserHasBought(SAVETOFILE),
    'have bought', 'don''t have bought') +
    ' the ability to save aphorisms to file.' + sLineBreak;
  LMsg := LMsg + 'You ' + IfThen(WindowsStore1.UserHasBought(SAVEASFAVOURITE),
    'have bought', 'don''t have bought') +
    ' the ability to save aphorisms as favourite.' + sLineBreak;
  ShowMessage(LMsg);
end;

사용 가능한 추가 기능 확인

procedure TStoreForm.UpdateAvailableProducts;
var
  LProdsCount: Integer;
  I: Integer;
  LRow: TStrings;
begin
  LProdsCount := WindowsStore1.AppProducts.Count;
  for I := 0 to LProdsCount - 1 do
  begin
    LRow := sgAvailableProducts.Rows[I + 1];
    LRow.Add(WindowsStore1.AppProducts[I].StoreId.ToString);
    LRow.Add(WindowsStore1.AppProducts[I].Title.ToString);
    LRow.Add(WindowsStore1.AppProducts[I].Price.FormattedBasePrice.ToString);
    LRow.Add(WindowsStore1.AppProducts[I].ProductKind.ToString);
    LRow.Add(
      WindowsStore1.AppProducts[I].Price.IsOnSale.ToString(TUseBoolStrs.True)
    );    
    LRow.Add(
      WindowsStore1.AppProducts[I].IsInUserCollection
       .ToString(TUseBoolStrs.True)
    );
  end;
end;

트라이얼 모드 제어

procedure TStoreForm.lbTrialInformationClick(Sender: TObject);
var
  LRemainingTrialDays: Integer;
begin
  if WindowsStore1.AppLicense.IsActive then
  begin
    if WindowsStore1.AppLicense.IsTrial then
    begin
      LRemainingTrialDays := WindowsStore1.AppLicense.TrialTimeRemaining.Days;
      ShowMessage(
        Format('You can use this app for %d more days before the trial period ends.',
        [LRemainingTrialDays]));
    end
    else
    begin
      ShowMessage('You have a full license. The trial time is not meaningful.');
    end;

  end
  else
  begin
    ShowMessage('You don''t have a license. The trial time can''t be determined.');
  end;
end;

관련글


윈도우 API, WinRT API 업데이트

윈도우 API 업데이트

최신 윈도우 기능을 추가하기 위한 윈도우 API가 대폭 추가되었습니다.

 

다음 목록은 High DPI 지원을 위해 추가된 새로운 윈도우 API입니다.

AdjustWindowRectExForDpi

AreDpiAwarenessContextsEqual

EnableNonClientDpiScaling

GetAwarenessFromDpiAwarenessContext

GetDpiForMonitor

GetDpiForSystem

GetDpiForWindow

GetProcessDpiAwareness

GetSystemMetricsForDpi

GetThreadDpiAwarenessContext

GetWindowDpiAwarenessContext

IsValidDpiAwarenessContext

LogicalToPhysicalPointForPerMonitorDPI

PhysicalToLogicalPointForPerMonitorDPI

SetProcessDpiAwareness

SetThreadDpiAwarenessContext

SystemParametersInfoForDpi

SetProcessDpiAwarenessContext

SetDialogDpiChangeBehavior

GetDialogDpiChangeBehavior

SetDialogControlDpiChangeBehavior

GetDialogControlDpiChangeBehavior

OpenThemeDataForDpi

GetSystemDpiForProcess

GetDpiFromDpiAwarenessContext

SetThreadDpiHostingBehavior

GetThreadDpiHostingBehavior

GetWindowDpiHostingBehavior

 

그 외에 "펜 입력" 지원을 위해 WM_POINTER_XXX 메시지 관련 API 및 데이터 구조가 업데이트 되었습니다.

 

WinRT 업데이트

RAD 스튜디오 10.3 리오는 WinRT API Object Pascal 해더 선언에 대한 업데이트되었으며 윈도우 10 출시 후 추가된 많은 API에 대한 지원이 포함되었습니다. 해당 API는 RAD 스튜디오 10 시애틀과 동일한 방식으로 아래 파일들에 선언되었습니다.

WinAPI.ApplicationModel.Background.pas Winapi.ApplicationModel.Contacts.pas WinAPI.ApplicationModel.Core.pas WinAPI.ApplicationModel.DataTransfer.pas WinAPI.ApplicationModel.pas Winapi.CommonNames.pas WinAPI.CommonTypes.pas WinAPI.DataRT.pas Winapi.Devices.AllJoyn.pas Winapi.Devices.Bluetooth.Advertisement.pas WinAPI.Devices.Bluetooth.pas WinAPI.Devices.Enumeration.pas Winapi.Devices.Geolocation.pas Winapi.Devices.Midi.pas WinAPI.Devices.pas Winapi.Devices.PointOfService.pas Winapi.Devices.Scanners.pas Winapi.Devices.Sensors.pas Winapi.Devices.Sms.pas WinAPI.Foundation.Collections.pas WinAPI.Foundation.pas WinAPI.Foundation.Types.pas WinAPI.Gaming.pas WinAPI.Globalization.pas WinAPI.GraphicsRT.pas WinAPI.Management.pas Winapi.Media.Devices.pas Winapi.Media.MediaProperties.pas WinAPI.Media.pas WinAPI.Networking.Connectivity.pas WinAPI.Networking.NetworkOperators.pas WinAPI.Networking.pas WinAPI.Networking.Proximity.pas Winapi.Networking.PushNotifications.pas WinAPI.Networking.Sockets.pas WinAPI.Networking.Vpn.pas Winapi.Perception.pas WinAPI.Security.Credentials.pas WinAPI.Security.Cryptography.pas WinAPI.Security.pas Winapi.ServicesRT.pas Winapi.ServicesRT.Store.pas WinAPI.Storage.pas WinAPI.Storage.Streams.pas WinAPI.SystemRT.pas WinAPI.UI.Composition.pas WinAPI.UI.Core.pas WinAPI.UI.Input.Inking.pas WinAPI.UI.Input.pas WinAPI.UI.Notifications.pas WinAPI.UI.pas WinAPI.UI.Text.pas WinAPI.UI.ViewManagement.pas WinAPI.UI.WebUI.pas WinAPI.UI.Xaml.pas WinAPI.WebRT.pas

 

VCL High DPI "Per Monitor V2" 지원

VCL은 이제 "Per Monitor V2"를 지원합니다.

 

Per Monitor V2는 해상도가 다른 여러개의 모니터에서 윈도우 디스플레이 배율을 다르게 설정한 경우 각 모니터 해상도 및 배율에 맞게 화면 및 컨트롤을 표시하는 기술입니다.

 

이 기술은 윈도우 10 크리에이터 업데이트 부터 제공된 윈도우 기술로 RAD 스튜디오가 발빠르게 지원하고 있습니다.

만약, 사용자 환경이 윈도우 10 크리에이터 업데이트하지 않았다면 표준 동작의 API가 호출되도록 호환성을 보장합니다.

 

Per Monitor V2 지원은 IDE의  Project > Options > Application > Manifest 메뉴의 DPI Awareness 항목 중 "Per Monitor V2"(기본 값) 선택 해 설정할 수 있습니다.

manifest_dpiawareness.png

 

 

 

10.3 리오의 업데이트 버전들

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 14387
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13023
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15532
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21064
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22297
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17932
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38228
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173741
214 이 달의 기술자료 - 2017년 11월 file 험프리 2017.10.30 524
213 이 달의 기술자료 - 2018년 08월 file 험프리 2018.07.31 523
212 이 달의 기술자료 - 2017년 06월 file 험프리 2017.05.30 523
211 [앵콜세미나] 사물인터넷 실제 구현하기, DeepDive!: 비콘, 스마트조명, 블루투스 체중계 관리자 2015.08.19 523
210 이 달의 기술자료 - 2015년 12월 file 험프리 2015.11.27 522
209 이 달의 기술자료 - 2019년 02월 file 험프리 2019.01.25 522
208 [FMX] 폼의 높이를 애니메이션으로 변경하기, 툴바를 끌어 폼 이동하기 험프리 2017.09.12 522
207 RAD스튜디오 2020 로드맵 – 자세한 내용을 확인해보세요! (PM들의 코멘터리) 관리자 2020.11.19 521
206 이 달의 기술자료 - 2015년 10월 file 험프리 2015.09.25 521
205 이 달의 기술자료 - 2019년 01월 험프리 2018.12.28 520
204 API로 머신 러닝과 컴퓨터 비전 활용하기 관리자 2021.05.04 519
203 RAD스튜디오 로드맵 - 2019년 8월 관리자 2019.08.13 518
202 이 달의 기술자료 - 2017년 08월 험프리 2017.07.28 514
201 이 달의 기술자료 - 2019년 03월 file 험프리 2019.02.27 513
200 이 달의 기술자료 - 2018년 04월 file 험프리 2018.03.30 513
199 [10.3 리오][업데이트 2] IDE 향상된 기능들 [4] 관리자 2019.08.12 511
198 이 달의 기술자료 - 2016년 01월 file 험프리 2015.12.28 510
197 10.1 베를린 부터는 리본 컨트롤을 겟잇 패키지 매니저에서 설치할 수 있습니다. 험프리 2016.05.27 510
196 데브기어 컴포넌트 컨버터 소개(마이그레이션 자동화 도구) 험프리 2020.01.29 508
195 프로그래밍 언어 인기도 측정의 문제점 file 김원경 2020.03.27 507