본문 바로가기

파이어몽키

OAuth 2.0 연동 - 네이버 API 연동(네이버 아이디로 로그인) 이 글에서는 OAuth 2.0을 이용 네이버 API와 연동하는 방법을 알아봅니다.이 글에서는 네이버 아이디로 로그인 후 회원 프로필 조회 API와 연동해 프로필 정보를 불러오는 델파이 애플리케이션을 작성할 수 있습니다. 다음 글을 통해 OAuth 2.0을 이용 카카오 API와 연동하는 내용을 다뤘습니다.OAuth 2.0 연동 - 카카오 API(카카오톡 프로필) OAuth2.0 연동하는 절차는 카카오, 네이버 API 뿐아니라 대부분의 서비스들이 비슷합니다.이 글에서는 카카오 API와 네이버 API의 차이점에 대해서만 간략히 설명합니다. 이글을 읽기 전 위 링크의 내용을 먼저 숙지하시기 바랍니다.(네이버와 카카오 OAuth 2.0의 차이점은 앱 등록하는 과정, API의 엔드포인트(URI)와 일부 파라미터 종.. 더보기
FMX TListView Item 높이 조절 - 이미지가 없는 경우 낮게 표시하기 데브기어 테크게시판의 다음 질문에 대한 답변입니다. - https://tech.devgear.co.kr/delphi_qna/456600 이 글에서는 파이어몽키 TListView 항목 추가 시 이미지를 포함하고, 이미지가 없는 경우 항목의 높이를 낮게 지정하는 방법을 설명합니다. 화면 구성 TListView의 ItemAppearance를 DynamicAppearance로 설정 후 Image와 Text를 추가했습니다.위치 조정 후 높이는 140으로 설정했습니다. 구현두개의 버튼을 두고 다음과 같이 구현했습니다. procedure TForm1.Button1Click(Sender: TObject); var Item: TListViewItem; begin Item := ListView1.Items.Add; Ite.. 더보기
[FMX] 안드로이드 권한 모델 적용 방법 파이어몽키로 안드로이드 앱 개발 시 장치에 접근하는 기능(예, 카메라 이용, 블루투스 이용 등) 개발 시 권한 설정이 필요합니다. 기존에는 Project > Options > Uses Permissions에서 필요한 권한을 설정하는 방식이었지만, 안드로이드 API 최신버전은 런타임 시 권한을 요청하는 매커니즘으로 변경되었습니다. 기존의 권한 모델은 설치 시 전체 권한을 승인하는 방식이었습니다. 새로운 권한 모델은 기능 사용 시 개별 권한을 묻는 방식으로, 사용자는 기능 별 허용 및 거부가 가능해졌습니다. 기존 권한 요청 방식 새로운 권한 요청 방식 새로운 권한 요청 방식은 RAD 스튜디오 10.3 부터 적용되며, 기존에 작성했던 안드로이드 프로젝트는 권한 요청하는 로직을 추가하도록 업데이트 해야 합니다... 더보기
[FMX][팁] 파이어몽키 버튼의 배경색상 변경하기 파이어몽키 버튼(TButton)에 배경색을 입히는 작업을 안내합니다. 버튼은 배경색 관련 속성을 제공하지 않아 스타일을 변경 해 적용해야 합니다. 커스텀 스타일 변경버튼에 우측마우스 클릭 후 [Edit Custom Style...] 메뉴를 선택 해 Style Designer 화면으로 이동합니다. 관련 스타일 검토Structure 패널에서 추가된 스타일(Button2Style1) 선택 후 배경색 관련된 항목이 있는지 확인합니다.background 항목의 경우 TButtonStyleObject로 배경을 이미지에서 지정하는 방식으로 직접 배경색을 지정할 수 없습니다. 배경을 지정할 컴포넌트 추가 및 설정배경을 지정할 컴포넌트를 직접 추가합니다.background 항목의 자식으로 Rectangle 컴포넌트를 추.. 더보기
[FMX][팁] 파이어몽키 TComboBox 글자 크기 변경 파이어몽키의 TComboBox는 TextSetting과 같은 속성을 제공하지 않아 폰트 설정이 제한됩니다. 코드를 통해 콤보박스(TComboBox)의 폰트를 설정하는 방법을 안내합니다.다음 코드는 콤보박스의 글자크기를 20으로 변경한 예제입니다.procedure StyleComboBoxItems(ComboBox:TComboBox; Size:Single); var Item : TListBoxItem; i : Integer; begin for i := 0 to ComboBox.Count-1 do begin Item := ComboBox.ListItems[i]; // Item.Font.Family := Family; //'Arial'; Item.Font.Size := Size; //20; // Item.Fon.. 더보기
RFID 리더(한미IT RF Prisma) 연동하기 - 델파이에서 JAR 이용 (아래 내용은 델파이 10.2 도쿄 릴리즈 1과 릴리즈 2에서 작성된 내용으로 다른 버전에서는 일부 내용이 다를 수 있습니다.) 개발 컨설팅을 통해 의뢰한 작업 중 RFID 리더 연동한 내용 공유합니다. (3일간의 개발 컨설팅으로 RFID 리더, TMAP 연동, 원격 데이터 연동 기술을 전파하는 작업을 진행했습니다.) RFID 리더와 연동은 제조사에서 제공하는 라이브러리(안드로이드 JAR)를 이용했습니다. 이 과정을 통해 델파이에서 JAR 파일 연동하는 내용을 확인할 수 있습니다. RFID 리더 연동 위 영상의 RFID 리더는 RFID 태그의 값을 읽고, 바코드의 값을 읽어 안드로이드 앱에 데이터를 전달합니다. 안드로이드 앱은 장비를 구동 및 설정하고, 장비가 읽은 데이터를 받아 화면에 표시합니다. 안드.. 더보기
WaitDialog 구현 - 재사용 가능한 프레임 구현하기 얼마전 진행한 모바일 개발 컨설팅에서 블루투스 장비와 연결 후 기다리는 동안 표시할 화면이 필요했습니다.WaitDialog라는 화면을 만들었는데 이 화면은 앞으로도 많이 사용하게 될 것 같아 TFrame을 이용해 재사용 가능하도록 구현해 봤습니다. WaitDialg 구현에 아래 기술을 사용했습니다.1) TFrame2) 클래스 메소드3) 싱글톤 패턴 이 내용을 학습하면1) 자주 사용하는 화면을 프레임으로 제작 해 재사용 할 수 있습니다.2) 클래스 메소드를 활용해 코드를 짧게 사용 할 수 있습니다.결과화면결과 화면은 아래와 같습니다. 구현한 내용화면구성파이어몽키 프레임을 이용해 WaitDialog 화면을 구성했습니다.파이어몽키에서 TFrame은 폼디자이너에서 화면을 구성할 수 있는 객체입니다. UI 컴포넌.. 더보기
[FMX] TListView 더보기 버튼 구현하기 모바일 앱을 개발할 때에 리스트 항목이 많은 경우, 한번에 가져오면 시간이 오래 걸려 좋지 않은 사용자 경험이 됩니다. 이 경우, 리스트 중 일부를 빠르게 표시하고, 리스트 끝으로 이동 시 추가로 표시하는 방식을 통해 문제를 해결할 수 있습니다. 이 글에서는, 리스트뷰(TListView)의 목록 끝으로 이동 시, 더보기 버튼을 표시하도록 (매우 심플하게)구현합니다.버튼 클릭 시 항목을 추가합니다. 이 글을 참고해 리스트 끝으로 이동 시 자동으로 항목을 추가하도록 구현할 수도 있습니다. 리스트뷰 더보기 버튼 구현하기결과결과 화면은 다음과 같습니다. 처음 24개 항목 표시 후, 목록 끝으로 이동 시 버튼이 표시되고, 버튼을 눌러 항목을 추가합니다. 구현방법1) 더보기 버튼을 리스트뷰(TListView)에 올.. 더보기
[FMX] 폼의 높이를 애니메이션으로 변경하기, 툴바를 끌어 폼 이동하기 약국용 라디오 어플을 개발하는 개발사에서는, 오래전부터 PC 기반으로만 라디오 서비스를 하고 있습니다.해당 개발사에서는 노후된 앱을 최신 운영체제(윈도우 10 등) 지원과 모바일 확장을 위해 파이어몽키로 재개발 중입니다.(파이어몽키는 윈도우, OSX, iOS, 안드로이드를 하나의 소스코드로 개발할 수 있습니다.) 개발 중 몇가지 질문을 주셔서 기술지원 후 해당 내용 일부를 공유합니다. 이 글에서는 다음 내용의 구현 방법을 소개합니다.1, 폼의 일부영역 보이기/가리기(Collapse)2, Border가 없는 폼에서 특정영역(Toolbar)을 마우스로 이동하기 결과 화면은 아래와 같습니다.1, 폼의 일부영역 보이기/가리기(Collapse)이 기능은 TFloatAnimation 컴포넌트를 사용해 손쉽게 구현할.. 더보기
TListView 행별로 배경색 설정 및 글꼴변경하기 리스트뷰(TListView)는 많은 데이터를 목록으로 표시하기 위한 컴포넌트입니다.스와이프(스크롤) 속도가 빠른 대신 항목 구성하기가 까다롭습니다. 이번 글에서는 리스트뷰 표현 방식 중 DynamicAppearance(동적 외관구성)를 이용해 외관 구성 후, 아래 기능을 구현했습니다.1) 표시 항목을 추가(현재 2개, 여러 항목 표시가능)2) 조건에 따라 배경색상을 변경3) 조건에 따라 글꼴 변경 결과 화면은 아래와 같습니다.(아이폰에서는 "여자" 글꼴을 Bold로 주니 글자가 약간 커지네요.) 구현한 내용은 아래와 같습니다.화면구성대표 컴포넌트는 리스트뷰(TListView)와 이미지리스트(TImageList)입니다.이미지 리스트에는 2개의 색상 이미지(16x16)를 추가했습니다. 리스트뷰의 ItemAp.. 더보기
델파이 앱에서 움직이는 GIF 표현하기(소스 포함) 한 중국인 델파이 개발자 블로그(武稀松(wr960204)的博客)에서 움직이는 GIF를 파이어몽키에서 사용할 수 있는 소스코드가 공개되어 공유합니다. 위 GIF는 샘플 프로젝트로 돌려본 화면입니다. 첫번째 버튼은 GIF 파일 로드, 두번째 버튼으로 시작/종료 입니다. 세번째, 네번째는 느리게 빠르게 동작하는 버튼입니다. 이 소스코드는 윈도우32, 윈도우64, 안드로이드 그리고 리눅스까지 지원합니다.더 자세한 내용(중국어)과 소스코드 다운로드는 아래 링크를 참고하세요.http://www.raysoftware.cn/?p=559소스코드 미러 : 더보기
블루투스 바코드 스캐너(BI-07) 안드로이드 라이브러리를 델파이에서 연동하는 방법 S모전자에서 의뢰한 휴대용 바코드 스캐너와 연동한 내용 공유합니다.휴대용 바코드 스캐너는 JAR 형태의 안드로이드 라이브러리를 제공합니다.이 과정을 통해 델파이와 안드로이드 라이브러리 연동하는 내용을 소개합니다. 휴대용 바코드 스캐너 연동 위 영상의 휴대용 바코더 스캐너는 클래식 블루투스 기반으로 연결을 제공합니다.해당 안드로이드 앱은 델파이로 제작했으며, JAR 파일을 이용해 스캐너와 연동합니다. JAR 파일 연동과정은 아래와 같습니다.1, 준비(라이브러리 준비 및 분석)2, 델파이용 안드로이드 라이브러리 브릿지 파일 생성3, 델파이 프로젝트에 안드로이드 라이브러리 추가4, 브릿지 파일을 이용해 안드로이드 라이브러리 연동 기타 안드로이드 라이브러리 연동 시 참고사항델파이 샘플 프로젝트 준비(라이브러리 .. 더보기
[안드로이드] 포토 라이브러리 목록 불러오기 안드로이드 내부 저장소에 저장된 사진의 썸네일 목록을 가져오는 코드입니다. uses Androidapi.Helpers, Androidapi.JNI.Net, Androidapi.JNIBridge, Androidapi.JNI.Provider, Androidapi.JNI.GraphicsContentViewText, FMX.Helpers.Android, Androidapi.JNI.JavaTypes; procedure TForm1.Button1Click(Sender: TObject); var Uri: Jnet_Uri; Projection: TJavaObjectArray; Cursor: JCursor; FilePath: string; Item: TListBoxItem; begin Uri := TJImages_Thu.. 더보기
모바일 디바이스 화면 방향전환 이벤트 수신하기 모바일 디바이스의 방향을 가로 또는 세로, 그리고 역방향으로 돌리는 동작을 알아낼 수 있습니다. 파이어몽키 프레임워크에서 제공하는 기능으로 TMessageManager에 구독해 이벤트를 받을 수 있습니다.(부가적으로 이런 개발 방식을 옵저버 패턴이라고 합니다.^^) 위 스크린샷은 1) 시작(폼생성) 시 TMessageMenager에 TOrientationChageMessage에 대해 OrientationChaged 이벤트를 구독하고2) 종료 시 : 구독을 해지합니다.3) 현재 스크린 방향은 IFMXScreenService.GetScreenOrientation 메소드를 통해 알아 올 수 있습니다. 자세한 내용은 아래 샘플코드를 통해 확인하세요.델파이 10.1 베를린 버전으로 작성되었습니다. 해당 내용은 델.. 더보기
TListView Dynamic Appearance로 추가한 항목을 코드로 제어하기 (해당 기능은 RAD 스튜디오 10.1 베를린 이상에서 사용할 수 있습니다.) TListView는 이미 정의된 ItemAppreance를 이용해 목록을 구성하기 때문에 TListBox에 비해 스크롤이 부드럽고 빠릅니다. 하지만, 베를린 버전에서 Dynamic appreance 기능이 추가되어 아래 그림과 같이 아이템 항목을 마음대로 정의할 수 있습니다. Dynamic Appreance에 대한 자세한 내용은 아래 링크를 참고하세요.http://docwiki.embarcadero.com/RADStudio/Berlin/en/Customizing_FireMonkey_ListView_Appearance#Customizable_Item_Appearances오늘 소개할 내용은 위와 같이 사용자가 추가한 항목을 코드를.. 더보기
구글 통계(Google Analytics)를 써드파티 컴포넌트 없이 구현하는 방법 델파이 개발자인 Rafael Ribas Aguiló의 블로그에서 델파이에서 써드파티 컴포넌트 없이 구글 통계(Google Analytics)와 연동하는 내용이 있어 소개합니다. 해당 내용은 안드로이드 기반으로 작성되었습니다. 안드로이드 앱 개발하시는 분들은 참고하시기 바랍니다. 최근에는 앱을 만드는 작업도 중요하지만, 사용성(Usability)을 높이는 작업이 상당히 중요합니다.여러분들의 고객이 어떤 메뉴나 기능을 얼마나 많이 사용하는지 분석하는 작업에 이용하면 구글 통계를 이용해 더 완성도 높고 사용성 높은 앱을 만들어 보세요. http://thedelphiway.blogspot.kr/2016/07/google-analytics-in-delphi-mobile.html 더보기
[게임] 매의 눈(컵속에 숨겨진 주사위 찾기 게임) 구글 플러스 델파이 개발자 그룹에 오대우님이 매의 눈이라는 게임의 소스코드를 공개하셨습니다.매의 눈은 컵안에 숨겨진 주사위를 찾는 게임으로 현재 안드로이드 마켓에 올려놓으셨네요. 추억의 야바위(?) 게임 다운받아서 술자리에서하면 재밌을 것 같습니다.https://play.google.com/store/apps/details?id=com.jjggmasterking.EagleEyeEn 소스코드는 드롭박스에 올려주셨네요.(미러도 제공하겠습니다.)https://www.dropbox.com/s/dm3nfa16uqdl0g3/EAGLE_EN_SRC.zip?dl=0 더보기
[OSX/맥] 맥의 스크린세이버 비활성화/활성화 시키기 볼랜드포럼에서 무대뽀님이 남겨준 팁 공유합니다.(작업한 내용 공유해주셔서 감사합니다^^)http://firemonkey.borlandforum.com/impboard/impboard.dll?action=read&db=firemonkey_tip&no=20 무대뽀님께서 맥용 애플리케이션 개잘 중 맥의 스크린 세이버를 비활성화 시키는 질문을 볼랜드포럼에 올려서 간단히 댓글을 드렸더니 멋지게 기능을 완성하셨네요.(http://firemonkey.borlandforum.com/impboard/impboard.dll?action=read&db=firemonkey_qna&no=146) 제가 작성한 답변입니다.맥 개발자 라이브러리에 아래와 같은 샘플이 있습니다. https://developer.apple.com/lib.. 더보기
[FMX] 앱에서 문장을 출력하는 3가지 방법 앱에서 긴 글을 표시해야 하는 경우 3가지 방법을 이용해 표현할 수 있습니다.(아래 방법외에도 더 많은 방법이 있을 수 있습니다.) 1, TMemo 이용문장을 나타내는 대표적인 컴포넌트입니다. 문장 출력뿐아니라 입력도 받을 수 있습니다.출력이 목적인 경우 ReadOnly 속성을 True로 설정하면 입력을 제한합니다.자동 줄바꿈이 필요하면 TextSettings.WordWrap 속성을 True로 설정합니다. 2, TWebBrowser + HTML 이용HTML을 표현하는 웹브라우저에 문장을 출력하는 방법입니다. HTML 태그를 이용해 글자크기, 색상, 스타일 등을 자유롭게 사용할 수 있습니다. 만약, 문장이 HTML로 구성된 경우 아주 좋은 선택 입니다.웹브라우저에 HTML을 불러오려면 아래와 같이 Load.. 더보기
[안드로이드/iOS] 이미 배포(Deployment)된 파일 업데이트 하기 사운드, 이미지, 텍스트 파일을 최초배포하고, 변경된 파일을 다시 배포할 경우 덮어쓰기(overwrite)가 되지않는 이슈가 있습니다.(10 시애틀. 2016년 3월) 해당 증상은 안드로이드와 iOS 모두 해당됩니다.http://tech.devgear.co.kr/delphi_qna/420755http://qc.embarcadero.com/wc/qcmain.aspx?d=125481해당 이슈는 파일을 배포하는 System.StartUpCopy.pas에 구현된 내용을 살펴보니 배포 대상파일이 있는 경우(FileExist) 배포를 진행하지 않도록 구현되어 있습니다. 위 이슈를 해결하는 방법은 3가지 정도로 생각해볼 수 있습니다.1, System.StartUpCopy.pas를 수정하는 방법2, 업데이트할 파일을 .. 더보기