델파이가 지원하는 기본 버튼 혹은 기본 컴포넌트는 아이폰의 인터페이스와 다른 모양을

가지고 있어서 아이폰의 인터페이스와 비슷한 모양으로 바꾸고 싶을때 유용하게 사용할 수 있는

방법입니다.


기본적으로 스타일을 변경해서 이용하는 방법입니다.



링크 주소

http://jed-software.com/blog/?p=609




In this post we’ll discover and solve a couple of glitches in the default styles supplied in FireMonkey for iOS.

  • Create a new FireMonkey iOS HD application.
  • Drop a button on the form and assign an OnClick handler.
  • In the OnClick handler, add code to display a simple message.
    • i.e. ShowMessage(‘You tapped me!’);
  • Run the application (you can do this on windows without going to XCode for this post)
  • Tap/Click on the button

Problem 1 – The default TButton style doesn’t look different when it has been pressed.

To fix this issue stopped the application and perform the following steps.

Right click on the TButton component and select the Edit Default Style… command at the bottom of the context menu.

The Style Designer will load and since we are updating the Default Style, will have the default style name for TButton, which is Buttonstyle.

The style consists of a TLayout, three TRectangle and a TText control.

To rectify the pressed state, grab a TInnerGlowEffect component from the Tool Palette.

Drag the TInnerGlowEffect component from the Tool Palette and drop it on the background TRectangle control.

With the TInnerGlowEffect component selected, you can see the available properties for the control.

Change the GlowColor property to better suit this situation, I chose Black.
Set the Enabled property to False. This is because we only want this effect enabled when the button is being pressed.
In the Trigger property, enter the following “IsPressed=true“. This means then whenever the IsPressed property is true, this effect will become enabled.

After your changes, you object inspector should look like the capture below.

Run the application now and hopefully you will see the effect display when the button is pressed.

Drop a couple of TCornerButton controls on the same application. Set the XRadius and YRadius values to 10 for one of the corner buttons. The sample application should now look something like the capture below.

Problem 2 – Under side of corner button looks strange when XRadius and YRadius values are not 3.

Below is a close up to better display the issue, it is really noticeable if your background is lighter.

To discover what is occuring with this style issue, we need to inspect the source code. Most importantly where the style information is loaded by the corner button control. In FireMonkey style properties should be modified in the ApplyStyle or ApplyStyleLookup methods. The ApplyStyle method for the TCustomCornerButton control is below, seems like everything should work.

Lets take a look at the default style for a TCornerButton.

Hmm, the source code referenced a StyleName called ‘secondbackground‘ button second background has been been set. The TRectangle without a name next to it should be called ‘secondbackground‘.

Use the object inspector to set the StyleName of the un-style-named TRectangle to ‘secondbackground‘.

Successful renaming is identified by your style, looking like the style in the capture below. Don’t set the name property by accident. You can’t set the name property to anything for a style (and have it persist).

Now when you view the form the corner button style won’t looked odd.

Problem 3 – The cornerbutton doesn’t show any effect when it is pressed.

Note how there is no TInnerGlowEffect define for the style. Follow the same steps above for the TButton and add the same effect (with the same property values) to the corner button style. Parent the TInnerGlowEffect to the background TRectangle control.

Problem 4 – The corner button has a TGlowEffect.

Kind of useless in a mobile application which doesn’t have a tab key to navigate between controls! Delete the TGlowEffect component from the style by clicking on the X.

Now you can rebuild and deploy to XCode and run on iOS to make sure these changes work well. Here is a capture from a real iPad (really it is!).

Default Styles

When in the Style Designer you can use the Load Default button to load all of the style details for the applications default style. This allows you to inspect other styles to learn from them. After making changes, I recommend you save the modified style to disk for safe keeping.

I would attach the modified style file to this post for download, but I’m not sure if I’m allowed to.

 

I’ve been doing a quite a bit of work with FireMonkey styles lately trying to make a nice TListBoxItem style. You may hear more about this in the future…


번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15411
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13959
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16495
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22047
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23266
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18920
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39243
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174694
46 David I의 31일 동영상(한글자막) - 기존 2D(HD) 앱에 3D콘트롤 사용하기(윈도우&맥용)(델파이 동일 적용 가능 관리자 2013.04.25 5277
45 David I의 31일 동영상(한글자막) - 카메라, 텍스쳐를 사용하는 3D앱(윈도우&맥용)(델파이 동일 적용 가능) 관리자 2013.04.24 5651
44 David I의 31일 동영상(한글자막) - 3D앱 만들기(윈도우&맥)(델파이 동일 적용 가능) 관리자 2013.04.23 5776
43 David I의 31일 동영상(한글자막) - 픽셀 쉐이더 이미지 효과를 사용하는 앱(윈도우&맥)(델파이 동일 적용 가능) 관리자 2013.04.22 5989
42 David I의 31일 동영상(한글자막) - 모션과 위치정보 센서 컴포넌트를 C++빌더XE3 윈도우&맥 용 앱에서 사용하기(델파이 동일 적용 가능) 관리자 2013.04.19 5648
41 David I의 31일 동영상(한글자막) - C++빌더로 만든 윈도우와 맥 앱에서 플랫폼 서비스와 OS정보 사용하기 관리자 2013.04.17 5807
40 N 윈도우와 맥 개발 시작을 위한 파이어몽키 코스북: 무료 다운로드 제공(385페이지) 관리자 2013.04.05 152326
39 David I의 31일 동영상(한글자막) - 두 개의 비디오 카메라로 화면 캡쳐하는 앱 만들기(윈도우&맥용) 관리자 2013.04.04 5620
38 David I의 31일 동영상(한글자막) - 오디오 재생 및 캡쳐앱 만들기(윈도우&맥용) 관리자 2013.04.04 5624
37 David I의 31일 동영상(한글자막) - HD비디오 재생 및 캡쳐하는 애플리케이션 만들기(윈도우&맥): 수정완료 관리자 2013.03.26 5529
36 David I의 31일 동영상(한글자막) - InterBase Express로 나만의 SQL DB를 활용한 파이어몽키 앱 만들기 관리자 2013.03.26 4167
35 David I의 31일 동영상(한글자막) - dbExpress와 ClientDataSet으로 SQL데이터베이스를 활용한 파이어몽키 앱 만들기 관리자 2013.03.26 5640
34 David I의 31일 동영상(한글자막) - ClientDataSet을 활용한 파이어몽키 애플리케이션 관리자 2013.03.22 5412
33 David I의 31일 동영상(한글자막) - 메트로폴리스 UI를 적용한 파이어몽키 애플리케이션 관리자 2013.03.12 5561
32 David I의 31일 동영상(한글자막) - 새로운 장비와 센서를 적용한 파이어몽키 애플리케이션 관리자 2013.03.12 5647
31 David I의 31일 동영상(한글자막) - Action 및 Gesture를 추가한 파이어몽키 애플리케이션 관리자 2013.03.12 3959
30 David I의 31일 동영상(한글자막) - 파이어몽키 Anchors프로퍼티와 Layout 컴포넌트 활용하기 관리자 2013.03.12 4105
29 David I의 31일 동영상(한글자막) - 나만의 첫 C++파이어몽키 애플리케이션 관리자 2013.03.12 5765
28 "델파이 세미나 in 부산: 윈도우와 맥 개발자를 위한 파이어몽키" 세미나 자료 file 관리자 2013.03.06 4838
27 [웹세미나] 파이어몽키용 TMS Grid와 비주얼 라이브바인딩을 활용한 멀티-티어 애플리케이션 개발 관리자 2012.10.23 5015