윈도우 스토어

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 50168
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 47969
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 50900
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 55835
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 65875
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 51475
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 80697
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 211445
443 생산성을 끌어올려줄 겟잇(GetIt)의 최신 컴포넌트들 관리자 2021.01.18 858
442 [시애틀] 블루투스 LE를 지원하는 디바이스에서 비콘 광고데이터를 발생할 수 있습니다. file Humphery 2015.10.06 858
441 [발표자료] 20190214 델파이 24주년 기념 세미나: 델파이 앱 현대화 방안 - 다양한 데이터 서비스 연동하기 file 관리자 2019.02.15 858
440 [10.3 리오][업데이트1] 새로운 IDE 생산성 도구: 북마크 & 탐색기 관리자 2019.02.22 856
439 [10.4 시드니][업데이트 2] What's NEW! 신기능 자세히 보기 관리자 2021.02.26 855
438 [델파이 샘플 코드] 안드로이드, iOS, OSX, 윈도우, 리눅스, HTML5 관리자 2019.11.13 855
437 도커(Docker) 제대로 활용하기 험프리 2020.02.07 854
436 [10.4 시드니][업데이트 2] RAD스튜디오 10.4.2 자동 설치(SILENT INSTALLER) 관리자 2021.03.02 853
435 이 달의 기술자료 - 2016년 05월 file 험프리 2016.04.26 853
434 [도서/PDF/소스코드] 델파이 Begin...End - 20장. 인디 컴포넌트를 이용한 프로그래밍 관리자 2019.08.20 849
433 [업데이트][패치][10.2.3] RAD스튜디오 10.2.3 패치와 새로운 기술 정보들 관리자 2018.04.24 848
432 [고객 사례- 건설, 임베디드DB] GivenHansco 의 콘크리트 건설 사업 솔루션 (Keystone) file 관리자 2016.11.03 848
431 [시애틀] 안드로이드 서비스 앱을 만들 수 있습니다. Humphery 2015.09.07 848
430 RESTful 마스터-디테일 데이터를 사용하는 클라이언트 애플리케이션을 TRESTResponseDataSetAdapter를 사용하여 개발하기 file 험프리 2020.03.03 846
429 [도서/PDF/소스코드] 델파이 Begin...End - 부록 관리자 2019.08.20 846
428 [RAD Studio 10.4 패치1 ] C ++ 디버깅과 누락 파일 패치 – 패치를 설치하는 새로운 방법! file 김원경 2020.06.01 845
427 [발표자료] 20160624 소개합니다, RAD서버 관리자 2016.06.27 845
426 [10.3 리오] 기타 컴파일러, 데이터, RTL 개선사항 험프리 2018.12.06 841
425 이 달의 기술자료 - 2021년 06월 file 험프리 2021.05.27 840
424 엔터프라이즈 커넥터로 VCL 애플리케이션에서 '구글 시트' 데이터 조회 및 편집하기 험프리 2019.10.04 840