Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr
  • RAD 스튜디오 버전별 신기능:
    12 아테네

    12.0 아테네 VCL과 파이어몽키

       (0 reviews)

    << 위로 이동 (최신 버전 포함 모든 버전)

    RAD 스튜디오 12.0 아테네 "새 기능 한글 요약본: VCL 과  파이어몽키 변경" 입니다.
    12.0 아테네의 모든 새 기능,  강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New (영문 보기, 한글 자동 번역 보기) 와 관련 페이지를 보기 바랍니다.

    12.0 아테네 새 기능 요약 - VCL 과  파이어몽키 변경

    VCL

     

    VCL

    RAD 스튜디오 12.0은 VCL 라이브러리에서 많은 중요한 향상이 제공된다.

    HighDPI와 스타일을 위해 재작업된 MDI

    RAD 스튜디오 12.0은 VCL MDI(다중 문서 인터페이스, Multi Document Interface) 지원을 대폭 재작업했으며, MDI 마법사가 생성하는 코드를 업데이트했다. 또한, 새 MDI 탭-방식 폼 아키텍처를 제공한다. 이 새 방식을 위해 새 TFormTabsBar 컨트롤이 제공된다.

    MDI_tabs.png

    이 장에서는 특정 향상 몇 가지와 남아있는 약점 몇 가지를 나열한다.

    MDI 자식 윈도우를 위한 맞춤 테두리

    이제 MDI 자식 폼(child form)은 새 현대식 평면 테두리를 윈도우 10과 11 시스템에서 가질 수 있다.구체적으로는:

    • 테두리에는 시스템 크기와 스크롤 막대가 있는 시스템 영역이 있다(VCL 디자이너에서와 같다).
    • 테두리는 고정된 기본 시스템 색상을 사용하며, clBtnFace 색상 그리고 이와 유사한 밝은 회색/어두운 회색 색상과 호환되는 색상을 사용한다. 이 색상은 MDI 클라이언트 영역에서 주로 사용된다.
    • 테두리는 윈도우 10과 11 시스템에서 동일하게 보이고 동일하게 작동한다.
    • 최소화 상태에서는 폼 DPI를 사용하여 사용자 지정 프레임을 그린다. 그 이유는 시스템 프레임이 오직 기본(primary) 모니터의 DPI 크기만 사용하기 때문이다. 
    • 비활성화된 테두리 아이콘은 그려지지 않는다 (VCL 스타일에 사용되는 것과 동일한 해법이다). 예를 들어 biMinimize 값이 BorderIcons 안에 없으면, 최소화 버튼이 표시되지 않는다.
    • 새 전역(global) 설정이 추가되어, 자식(child) 창 테두리 처리를 비활성화하는데 사용된다: TStyleManager.ChangeChildFormSystemBorder. 이렇게 하면, 위의 변경들을 자식 테두리 쪽에서 비활성화한다.
    • 이 해법은 PerMonitorV2 High DPI를 지원한다.

    부모가 할당된 윈도우 폼을 위한 맞춤 테두리

    테두리가 있는 폼(form)은 WM_NCActivate 메시지를 가져오고 처리해야 한다. 하지만 운영 체제는 이를 부모 폼과 함께 윈도우로 보내지 않는다. 이 시나리오가 작동하도록 하기 위해, 우리는 부모 컨트롤 안에서 해당 폼을 활성화하는 것을 에뮬레이트해야 했다. 이를 통해 High-DPI 그리고 PerMonitorV2 지원과 관련된 모든 문제를 해결했다. 또한 VCL 스타일에도 변경 사항을 추가했다.

    세부 사항:

    • TWinControl 클래스를 위한 TWinControlHandler 클래스와 TChildMessageHandler 클래스를 도입하여 TCustomForm 클래스에서 사용할 수 있도록 했다. 이는 MDI 자식 폼과 부모 속성이 할당된 폼에서 사용자 지정 테두리를 가질 수 있도록 지원한다.
    • 최소화 상태는 MDI 자식들에게 있는 제한과 동일한 제한이 있다. 사용자는 새 TFormTabsBar 컨트롤을 사용하여 최소화된 폼을 숨기고 관리할 수 있다.
    • 폼은 부모 컨트롤 안에서 하나의 컨트롤로 작동한다. 컨트롤 위에 있는 촛점(focus)는 개별 폼 안에 있는 것이 아니라 최상위 부모 폼 안에 있다.
    • 이러한 폼 생성 및 초기화는 구체적(specific)이다 (Visible 속성은 기본적으로 False여야 하며, 부모와 초기 배율을 지정하는 것은 다양한 상황에 맞게 수작업으로 수행).
    • 폼에는 MDI 하위 항목과 같은 현대적인 테두리를 가진다.
    • 폼은 부모 컨트롤 안에서 최대화될 수 있으며 그 크기를 변경할 수 있다.
    • 부모 폼 위에서 자식 폼 활성화/비활성화를 완전히 에뮬레이션하도록 추가되었다.

    IFormVisualManager 인터페이스와 TCustomForm 클래스의 VisualManager 프로퍼티

    폼(들)을 관리하는 새 컨트롤을 추가히기 위해, 아테네 12.0에서는 새로 IFormVisualManager 인터페이스가 만들어졌다. 여기에 들어 있는 메소드(들)은  TCustomForm 클래스와 통합되어 메시지와 액션을 폼으로부터 얻을 수 있어서 폼(들)을 관리한다.

    또한 12.0 버전에는 새 TCustomForm.VisualManager 프로퍼티가 있다. 이 프로퍼티의 타입은 IFormVisualManager이므로, 그 인터페이스를 구현하기 위해 필요한 메서드(들)을 가지고 있다.

    일반적인 목표는 개발자들이 자신들의 비주얼 매니저 컨트롤(들)을 만들 수 있도록 하는 것이다. 즉, 상속받은 컨트롤 안이나 또는 TFormTabsBar 컨트롤 안에 구현된 것과 같은 컴포넌트 안에서 IFormVisualManager를 구현하면 된다.

    TFormTabsBar 컨트롤

    RAD 스튜디오 12.0 아테네에는 새 FormTabsBar 컨트롤이 추가 되었다. 이것은 현대식 탭-기반 UI 안에서 자식 폼(들)을 호스팅하기 위한 전체적이고(universal) 바로 사용할 수 있는 해법이다. 이것은 기존 MDI 애플리케이션을 현대화하는 길을 열어준다. 하지만, VCL을 사용해 완전히 새로 애플리케이션을 만들 때에도 사용할 수 있다.

    이 새 FormTabsBar 컨트롤은 IFormVisualManager로부터 상속을 받았으며, TForm과 TScreen 클래스(들)과 함께 작동하고, Screen.Forms로부터 모든 폼(들)을 반영할 수 있다 한다 (메인 폼과 컨트롤의 부모 폼을 대신한다). 이 새 컨트롤들은 MDI 폼(들)과 함께 동작할 수 있을 뿐만 아니라 부모가 할당된 SDI 폼(들)과도 함께 작동할 수 있다. 테두리가 있을 수도 있고 없을 수도 있다. 이 컨트롤(들)은 메인/부모 폼으로 지성될 수 있다. 따라서 자식 폼(들)에 의해 자동으로 사용된다. 또한, TFormTabsBar에는 AcceptMode 프로퍼티와 OnAcceptForm 이벤트가 있어서 받아들이려는 폼(들)을 이 컨트롤에 맞출 수 있다.

    추가 상세 사항:

    • 각 TForm은 하나의 Tab으로 TFormTabsBar에게 추가될 수 있다. 그 시점은 폼의 핸들(Handle)이 생성될 때이다. 이 핸들이 파괴될 때, 이 탭은 제거된다.
    • 이 컨트롤은 폼을 보이게 하기와 보이지 않게 하기를 할 수 있다. 탭을 클릭할 때, 해당 폼은 보여지고 활성화된다.
    • TFormTabsBar는 최소화된 폼들(MDI와 SDI)을 숨길 수 있다. 또한 탭을 클릭했을 때 그 폼들을 복구하고 활성화 할 수 있다. 이 기능은 부정확한 시스템 동작(과 최소화된 폼 크기)를 피할 수 있도록 만들어졌다
    • 보이지 않거나 최소화된 폼(들)은 해당 폼이 현재 보이지 않는다고 이 컨트롤 안에 표기할 수 있다. 
    • 시스템 윈도우 메뉴를 탭 또는 아이콘 영역에서 오른쪽 클릭을 하여 호출한다.
    • 탭(들)을 드래그 할 수 있다. 따라서 사용자들은 이 컨트롤 안에 있는 어떤 탭이든 위치를 바꿀 수 있다.
    • 탭의 폭을 조정할 수 있다. 고정된 너비 값 또는 폼의 캡션에 따라 너비가 자동 계산되도록 할 수 있다 (자동 계산인 경우에는 탭 너비의 Min과 Max를 정의해야 한다). 또한 힌트를 사용할 수 있도록 하는 프로퍼티가 있어서, 캡션이 길어서 잘리는 경우에 표시할 수 있도록 한다.
    • 탭에는 닫기 버튼이 있다. 이 버튼은 TForm.Close 메서드를 호출한다.
    • 이 컨트롤에는 특별한 버틀을 보여줄 수 있다. 이 버튼은 모든 탭들을 불러서 그 중에 하나를 빠르게 선택할 수 있도록 한다.
    • 이 컨트롤은 촛점(focus)와 키보드 지원이 된다. 하지만, 하지만, 오직 Tab 키를 통해 촛점을 받았을 때만 해당된다 (즉, TabStop이 True인 경우). 이 경우, 사용자는 엔터 키 또는 Space 키를 사용하여 탭들을 선택하고 스크롤하고 활성화할 수 있다. 
    • 이 컨트롤은 High-DPI PerMonitorV2 지원을 한다. 또한 모든 DPI에서 정확하게 작동한다.
    • VCL 스타일도 잘 지원한다. 일부 요소들은 스타일 색상을 사용하여 (닫기 버튼, 구분선 등) 특정 요소를 그린다.

    MDI 마법사 업데이트

    RAD 스튜디오 12.0 아테네에서는 델파이와 C++빌더용 MDI 마법사 프로젝트 역시 업데이트 되었다. 이 마법사가 코드를 생성할 때에는 아래에 있는 것들을 사용한다.

    • (TMainMenu 컴포넌트 대신) TActionMainMenuBar 컴포넌트
    • (TImageList 컴포넌트 대신) TImageCollection과 TVirtualImageList 조합.
    • TFormTabsBar 컨트롤.

    Fonts와 Screens

    VCL 라이브러리에는 DPI 배율 확대(scaling)와 무관하게 폰트를 배율 확대할 수 있도록 하는 지원이 새로 다시 작업되었다.

    RAD 스튜디오 12.0 아테네 안에서, TFont 클래스에는 다음과 같은 새 메서드와 프로퍼티가 추가되었다.

    • TFont.IsDPIRelated : TFont.PixelsPerInch 프로퍼티 사용을 활성화하여, 호스트 컨트롤의 CurrentPPI에 맞추어 변경한다.
    • TFont.IsScreenFont : TScreen 클래스 안에 있는 글로벌 폰트를 향함
    • TFont.ChangeScale : TControl.ChangeScale 메서드 안에서 호출되어, 모든 DPI-관련 폰트를 초기화하고 배율 확대/축소를 한다.
    • TFont.ScaleForDPI : 폰트를 어떤 DPI에든 적용하기 위해 코드 안에서 사용된다. 이것은 IsDPIRelated 프로퍼티를 확인하고 해당 폰트의 높이를 배율 확대/축소한다.

    주요 변경은 Size(크기)가 어떻게 사용되고 TFont.Assign 호출이 언제 DPI와 IsScreenFont 값을 고려하는지 이다. 이 변경은 기존 코드에 영향을 준다. 그리고 VCL 라이브러리는 새 Font 배율 확대/축소를 지원하기 적합하도록 되었다. 예를 들어 아래와 같은 코드는:

    Font.Height := MulDiv(Font.Height, M, D)

    다음과 같이 변경해야 한다.

    Font.ChangeScale(M, D, isDpiChanged)

    또한, 이 새 방식은 font(글꼴)가 이중으로 배율 확대/축소 되는 것을 방지한다. 왜냐하면, TFont.PixelsPerInch 프로퍼티를 확인하기 때문이다.

    플랫폼 통합

    RAD 스튜디오 12.0 아테네는 윈도우 API와 WinRT API에 대한 맵핑을 깔끔하게 치웠다. WinRT API들과 WebView 2 컨트롤들을 최신 버전으로 새로 바꿨기 때문이다.

    WinMD 메타데이터로부터 오는 WinAPI 델파이 헤더(들)

    RAD 스튜디오 12.0에서는 내부적으로 사용되는 가져오기(import) 도구를 만들었다. 이 도구는 마이크로소프트에서 WinMD 포맷으로 제공하는 메타데이터를 사용하는 클래식 윈도우 API를 위해 델파이 정의를 생성하는 능력이 있다. 그리고, 이렇게 생성된 유닛들의 첫 버전을 겟잇(GetIt)을 통해 제공한다.

    GetIt Package Manager (겟잇 패키지 매니저)를 열고 “Windows API from WinMD” 패키지를 검색하면 된다.

    WinMD_API.png

    이 패키지를 설치하면 헤더 파일 311개 총 41 MB 분량의 델파이 코드가 다음과 같은 폴더 안에 들어간다. C:\Users<name>\Documents\Embarcadero\Studio\23.0\CatalogRepository\WindowsAPIfromWinMD-1.0.

    이 새 헤더들은 훨씬 더 방대하다. 핵심 RTL 안에 있는 세트에 비교하자면, 최신 API들 모두를 커버한다.

    엣지 브라우저

    RAD 스튜디오 12.0 WebView 2 컨트롤 API를 최근 버전인 , WebView2 SDK 1.0.1774.30으로 새로 교체했다. 그래서 기반이 되는 WebView 2 컨트롤의 많은 새 기능들을 지원한다. 예를 들면:

    • UserAgent가 ICoreWebView2Settings 안에 있다.
    • ICoreWebView2Profile2에는 ClearBrowsingData, ClearBrowsingDataAll, and ClearBrowsingDataInTimeRange 메서드가 있다.

    또한, TEdgeBrowser는 새 메서드가 있어서, 데이터 포스트(post) 또는 부가 요청(request) 헤더를 이동 중에 제공한다. ARequest 안에 있는 헤더들은 WebView2 런타임에 의해 추가된 헤더들을 (Cookie 헤더만 빼고) 덮어쓴다. 웹 리소스 요청 메서드는 반드시 GET 또는 POST여야 한다.

    function NavigateWithWebResourceRequest(const ARequest:
      ICoreWebView2WebResourceRequest): Boolean;

     

    TListView에서 타일 뷰(Tile View) 지원

    VCL 라이브러리는 기반 플랫폼 컨트롤 안에 있는 이 옵션에 대한 지원이 추가되었다. 다음과 같은 것들을 통해서 나오게 되었다.

    • vsTile 값이 TViewStyle 열거(enumeration)에 추가됨
    • OnCancelEdit 이벤트가 TListView 컨트롤에 추가됨
    • TileOptions 프로퍼티가 이 컨트롤에 추가되어, 타일 항목을 맞춤. 이 프로퍼티에 들어갈 수 있는 것들은:
      • SizeType: 항목 크기 타입 정의 (auto 또는 fixed 크기).
      • 타일의 WidthHeight, 고정 크기 타입으로 지정된 경우.
      • LabelMargins: 항목 안에 있는 레이블 (모든 텍스트 선)에 적용되는 여백.
      • SubLineCount : 항목의 Caption(캡션) 아래에 놓일 수 있는 줄의 갯수.
    • 새 TileColumns 프로퍼티가 추가되어서, 항목 안에 있는 부가적인 선들을 조정하여 컬럼에서 하위-항목을 보여준다. 이 컨트롤의 TileColumns 프로퍼티는 리스트 안에 있는 기존 항목들의 타일 정보를 자동으로 조정하여 맞춰준다.

    TControl 열거자(Enumerator)

    RAD 스튜디오 아테네에서는 TControl 열거자(enumerator)가 VCL 라이브러리와 TComponent 열거자에 추가되었다. TComponent의 경우, 주어진 컴포넌트가 소유하고 있는 컴포넌트들을 읽어온다. TControl 열거자의 경우, 자식 컨트롤들을 읽어 온다. 예제는  GetControls 페이지를 참조하면 된다

    컨트롤 열거자의 다양한 필터들에 대해서는 TControlEnumeratorFilterType 페이지를 참조하면 된다.

    새 ShowInTaskbar 폼 프로퍼티

    TForm 클래스에는 이제 새 ShowInTaskbar 프로퍼티가 있다. 그래서, 폼이 윈도우 작업 표시줄에 안에 일치하는 항목을 가지고 있어야 하는지 여부를 제어한다.

    데스크탑 윈도우 매니저 강화

    RAD 스튜디오 아테네에서는 윈도우 11의 일부 고급 데스크톱 관리 기능에 대한 지원이 추가되었다. 이 기능은 이전 버전의 운영 체제에서는 작동하지 않는다.

    버전 12.0에서는 Winapi.DwmApi.pas 유닛 안에, 몇 가지 새 DWMWA_xxx 상수들이 추가되었다. 이 상수들은 몇 가지 새 플랫폼 기능을 활성화하는 데 사용된다. 이 기능들을 활성화하려면, 이 유닛 안에 있는 DwmSetWindowAttribute API를 호출하면 된다.

    또한, VCL 폼은 이제 윈도우 11의 몰입형 다크 모드를 지원한다. 이를 활성화하려면 TForm 클래스의 새 EnableImmersiveDarkMode 메서드를 호출하면 된다.

    새 더블 버퍼링(Double Buffering) 모드

    RAD 스튜디오 12.0에서는, 새 TDoubleBufferedMode 열거 타입이 모든 컨트롤에 도입되었다. 새 DoubleBufferedMode 프로퍼티가 그 타입으로 되어 있다. 또한 CanUseDoubleBuffering 메소드가 도입되었다.

    테마가 적용되는 컨트롤, 즉 TButton, TCheckBox, TRadioButton와 같은 컨트롤에서DoubleBuffering을 활성화하면 컨트롤 상태가 변경될 때 네이티브 시스템 애니메이션이 깨진다. 이러한 이유로, 우리는 CanUseDoubleBuffering 메소드를 도입하고 TButtonControl 컨트롤 클래스에 대해 이를 오버라이드하여 이중 버퍼링을 비활성화했다.

    파이어몽키

    파이어몽키 라이브러리의 경우, RAD 스튜디오에는 새 Skia 라이브러리 기능 통합이 추가되었다. 그런데, RAD 스튜디오 버전 12.0에는, 여러 새 기능과 개선 사항이 들어갔다.

    안드로이드 타겟 API 레벨 33

    RAD 스튜디오 버전 12.0은 델파이 안드로이즈 지원을 업데이트 하여 타겟 API 레벨 33을 지원한다. 이것은 구글이 스토어 제출에 요구하는 바이다. 여기에는 포함된 안드로이드 라이브러리 향상과 확장은 다음과 같다.

    • 안드로이드 플랫폼 구현에서, IFMXCameraService와 IFMXTakenImageService 플랫폼 서비스가 개선되었다. 이 구현은 이제 비동기식이며 안드로이드 범위 지정 저장소(Scoped Storage) 모델과 호환된다. 또한 이것이 더 이상 메인 스레드를 차단하지 않는다. IFMXPhotoLibrary 플랫폼 서비스 구현에도 동일하게 적용되었다.
    • JManifest_permissionClass와 JManifest_permission_groupClass 클래스를 업데이트했다. 그래서, 최신 안드로이드 API 레벨에서 사용 가능한 정적 필드를 나열할 수 있다. 
    • IFMXExtendedClipboardService 인터페이스/플랫폼 서비스가 업데이트되었다. 그래서 애플리케이션이 안드로이드 13에서 도입된 클립보드 편집기 오버레이에 민감한 콘텐츠가 표시되는 것을 방지할 수 있다.
    • Project > Options > Application > Uses Permissions 페이지가 업데이트 되어서, 시스템 애플리케이션에만 부여된 권한이 제거되었다.
    • 새 안드로이드 스플래시 화면 표준 지원이 안드로이드 12 이후에서 제공된다 (여기를 클릭).
    • 최신 버전의 Google Play 결제 라이브러리(6.0.1)에 따라, 파이어몽키 안드로이드 인-앱 구매 지원이 업그레이드되었다. 이는 2023년 11월 1일까지 조치가 요구되었다.

    분할 화면(Split Screen) 지원

    아테네 12.0부터, RAD 스튜디오는 사용 가능한 화면의 일부만 사용하는 모바일 플랫폼용 파이어몽키 앱을 생성하는 지원을 추가했다. 이 기능은 특히 대형 화면을 갖춘 태블릿 장비에 유용하다.

    이 버전에는, 이 상황을 완벽하게 처리하기 위한 iOS 및 안드로이드용 파이어몽키 라이브러리에 대한 내부 코드가 포함되어 있다. 알아둘 점은 안드로이드 매니페스트가 변경되기 때문에, 사용자가 애플리케이션의 매니페스트나 사용자 구성의 매니페스트를 새로 고쳐야 할 수도 있다. 신규 및 수정된 안드로이드 매니페스트 항목은 다음과 같다.

    • android:resizeableActivity="true"
    • android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout" (여기서는 screenLayout 값이 추가되었다).

    TEdit와 TMemo 강화

    아테네 12.0부터 RAD 스튜디오는 TEdit/TMemo 컨트롤을 크게 개선했다.데스크톱 플랫폼(윈도우 및 맥OS)부터 시작했으며, 모바일 플랫폼도 포함할 계획을 세우고 있다. 

    이번 개선은 스타일이 적용되는 컨트롤에 대한 내부를 광범위하게 리팩토링 한 결과이다. 스타일이 적용되는 에디트 컨트롤(TEdit) 표현은 최근 추가된 TMemo 구현(이미 RAD Studio 11.3에 있음)을 활용하여 리팩링되었다.

    파이어몽키의 중요한 업데이트

    파이어몽키의 일반적인 변경

    • TEdit의 새 프로퍼티: AutoSelect와 CharCase.
    • TEdit는 이제 실행 취소 기능을 지원한다. 최근 추가된 TUndoManager는 TEdit과 TMemo에서 공유한다.
    • TMemo는 IME 텍스트 입력을 구현한다. 이는 네이티브 TEdit에서와 같다.
    • TEdit는 전경 브러시 리소스를 고려한다.
    • Shift 키를 누르고 클릭하여 선택하는 기능이 향상되었다.

    iOS 플랫폼 용

    • iOS용 가상 키보드 리팩토링: FMX의 iOS 가상 키보드 구현은 가상 키보드 도구 모음을 사용자 정의 버튼과 정렬하는 데 사용되는 툴바의 정렬/애니메이션을 수행하는 논리를  iOS 측으로 옮겼다. 일부 불필요한 복잡한 코드를 제거했으며, 대부분의 논리를 iOS 플랫폼으로 옮겨서 지원을 용이하게 했다.

    안드로이드 플랫폼 용

    • 대화형 텍스트 선택이 개선되었다.
    • 선택 항목을 조정하고 위치를 지정하고 텍스트 선택 항목 아래 왼쪽을 배치한다.
    • TMemo 및 TEdit에 위치 커서에 대한 선택 지점이 포함된다.
    • PointInObjectLocal이 향상되어 오브젝트 오프셋이 있는 스타일을 사용할 때 영역을 처리할 수 있다.
    • 플랫폼 스타일과 프리미엄 스타일을 업데이트되어서 텍스트 선택이 향상되었다
    • TEdit/TMemo/...에 대한 파이어몽키스타일 생성이 업데이트되었다. 안드로이드용 텍스트 입력 컨트롤을 위한 CaretPoint가 추가되었다.
    • 손가락 슬라이드 제스처를 통해 안드로이드의 TMemo에서 커서를 이동할 수 있도록 지원한다.

    모든 플랫폼에서 단일 아이콘 그리고 안드로이드 적응형 아이콘(Adaptive Icon)

    Single App Icon Wizard(단일 앱 아이콘 마법사)는 RAD 스튜디오 IDE에 통합된 포괄적인 도구이다. 이 도구는 사용자 애플리케이션을 위한 아이콘 및 스플래시 화면을 생성하는 절차를 여러 플랫폼에서 간소화하도록 설계되었다. 주요 기능 중 하나는 Android Vector Drawable 포맷 지원이다. 이를 통해 안드로이드 기기용으로 확장 가능하고 반응성이 뛰어난 아이콘과 스플래시 화면을 만들 수 있습니다.

    이 기능을 사용하면 "SVG2VectorDrawable"이라는 전문 도구를 통해 적응형 아이콘을 생성할 수 있다. 이를 통해 다양한 장비의 디스플레이와 사용자 인터페이스(UI) 스타일에 적응하는 다목적 반응형 아이콘을 생성하여 전반적인 사용자 경험(UX)을 향상시킬 수 있다.

    또한 RAD 스튜디오는 벡터화된 스플래시 화면 지원을 구현했다. 이 구현은 단일 아이콘 마법사 기능에 연결된다. 이 기능을 사용하면 개발자는 단일 SVG(Scalable Vector Graphics) 파일을 사용하여 여러 플랫폼에 맞는 고품질 스플래시 화면을 만들 수 있다.

    안드로이드의 경우, 단일 아이콘 마법사는 생성된 스플래시에 대한 Vector Drawable 형식도 지원한다. 이는 (내부적으로) "SVG2VectorDrawable"이라는 전문 도구를 통해 실현된다. 더 나아가 안드로이드 생태계 내에서 호환성과 적응성을 더욱 향상시킨다. 애플리케이션 아이콘 도움말 페이지에서 Artwork Generator(아트워크 생성기) 사용 방법과 자세한 내용을 볼 수 있다.

     

    Android_Adaptive_Icon.png

    FMX에 추가로 강화된 것들

    다음은 RAD 스튜디오 12.0에 도입된 추가 개선 사항이다.

    • 윈도우 및 맥OS용 새 TFontManager는 애플리케이션에서 글꼴을 동적으로 로드할 수 있다.
    • FMX 멀티터치 지원이 확장되어, TTouch 데이터 타입에 다음과 같은 새 필드들이 추가되었다.
      • Id: 터치의 고유 식별자이다. 화면에서 손가락을 떼는 순간까지 유효하다.
      • Location: 터치 포인트.
      • Action: (화면에 손가락 대기, 떼기, 이동 등) 이 터치로 수행된 작업(Action)
    • 새 TWinFormPositionerService는 FMX가 화면 레이아웃과 위치를 관리하고 데스크탑 중심을 결정하며 일부 좌표 문제를 처리하는 것을 돕는다.
    • 마우스 이벤트에 ssDouble 전달 지원이 추가되었다. 모바일 플랫폼에서 두 번 클릭하거나 두 번 탭하는 경우가 여기에 해당된다. 이제 마우스 작업 순서(더블 클릭의 경우)는 모든 플랫폼에서 다음과 같다.
      • OnMouseDown
      • OnClick
      • OnMouseUp
      • OnMouseDown (State = ssDouble)
      • OnDoubleClick
      • [OnMouseMove] (State = ssDouble)
      • OnMouseUp (State = ssDouble)
    • TLocationSensor ErrorRadius가 모바일 플랫폼용으로 구현되었다.
    • 파이어몽키에 새 윈도우 11 스타일이 포함되었다.
    • 새 프로퍼티인 FirstWeekMode가 파이어몽키 달력 컨트롤에 추가되었다. ISO8601과 FirstDayOfYear 모드 중에서 선택하면 된다.
    • 멀티스레딩을 지원하는 백엔드 구현(예: Skia)을 사용하는 경우, 파이어몽키가 TCanvas 전역 잠금 (global lock)을 제거할 수 있도록 했다. 이는 새 TCanvasStyle 플래그인 DisableGlobalLock을 사용하여 실현된다.
    • HeaderSettings 프로퍼티가 TColumn 클래스에 추가되었다. 그래서 사용자는 열 머리글의 스타일을 지정할 수 있다. 여기에는 또한 새 HeaderStyleLookup 프로퍼티도 추가되었다.

     

    << 위로 이동 (최신 버전 포함 모든 버전)

     




    User Feedback

    표시할 리뷰가 없습니다.


×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.